dbmsv2/app/Services/Customer/Service/PaymentService.php
2025-09-22 18:53:51 +09:00

67 lines
2.5 KiB
PHP

<?php
namespace App\Services\Customer\Service;
use App\Entities\Customer\ServiceEntity;
use App\Entities\PaymentEntity;
use App\Services\PaymentService as ParentService;
use App\Interfaces\Customer\ServiceInterface;
class PaymentService extends ParentService implements ServiceInterface
{
private ?ServiceEntity $_serviceEntity = null;
public function __construct()
{
parent::__construct();
}
public function setServiceEntity(ServiceEntity $entity): self
{
$this->_serviceEntity = $entity;
return $this;
}
public function getServiceEntity(): ServiceEntity
{
if (!$this->_serviceEntity instanceof ServiceEntity) {
throw new \Exception(__METHOD__ . "에서 오류발생: 서비스정보가 정의되지 않았습니다.");
}
return $this->_serviceEntity;
}
private function action_process(array $formDatas = []): array
{
$formDatas['clientinfo_uid'] = $this->getServiceEntity()->getClientInfoUID();
$formDatas['serviceinfo_uid'] = $this->getServiceEntity()->getPK();
$formDatas['serverinfo_uid'] = $this->getServiceEntity()->getServerInfoUID();
$formDatas['title'] = $this->getServiceEntity()->getServerEntity()->getTitle();
$formDatas['amount'] = $this->getServiceEntity()->getAmount();
$formDatas['billing'] = PAYMENT['BILLING']['MONTH'];
$formDatas['billing_at'] = $this->getServiceEntity()->getBillingAt();
return $formDatas;
}
public function createService(): ServiceEntity
{
//필수정보처리 후 결제정보등록
$entity = $this->create($this->action_process());
//서비스정보 Entity에 결제정보 설정
return $this->getServiceEntity()->setPaymentEntity($entity);
}
public function modifyService(): ServiceEntity
{
//미납상태의 결제정보 가져오기
$entity = $this->getEntity(['serviceinfo_uid' => $this->getServiceEntity()->getPK(), 'status' => STATUS['UNPAID']]);
if (!$entity instanceof PaymentEntity) {
throw new \Exception(__METHOD__ . "에서 오류발생: {$this->getServiceEntity()->getPK()}에 해당하는 결제정보를 찾을수 없습니다.");
}
//필수정보처리 후 결제정보수정
$entity = $this->modify($entity, $this->action_process());
//서비스정보 Entity에 결제정보 설정
return $this->getServiceEntity()->setPaymentEntity($entity);
}
public function deleteService(): ServiceEntity
{
//삭제시에는 아무것도 하지 않는다.
return $this->getServiceEntity();
}
}