diff --git a/app/Interfaces/Customer/ServiceInterface.php b/app/Interfaces/Customer/ServiceInterface.php index 4c2547e..8ba8d93 100644 --- a/app/Interfaces/Customer/ServiceInterface.php +++ b/app/Interfaces/Customer/ServiceInterface.php @@ -6,9 +6,7 @@ use App\Entities\Customer\ServiceEntity; interface ServiceInterface extends CustomerInterface { - public function setServiceEntity(ServiceEntity $entity): self; - public function getServiceEntity(): ServiceEntity; - public function createService(): ServiceEntity; - public function modifyService(): ServiceEntity; - public function deleteService(): ServiceEntity; + public function createService(ServiceEntity $serviceEntity): ServiceEntity; + public function modifyService(ServiceEntity $serviceEntity): ServiceEntity; + public function deleteService(ServiceEntity $serviceEntity): ServiceEntity; } diff --git a/app/Interfaces/Equipment/ServerPartInterface.php b/app/Interfaces/Equipment/ServerPartInterface.php index 53e32c1..84ab6d2 100644 --- a/app/Interfaces/Equipment/ServerPartInterface.php +++ b/app/Interfaces/Equipment/ServerPartInterface.php @@ -6,9 +6,7 @@ use App\Entities\Equipment\ServerPartEntity; interface ServerPartInterface extends EquipmentInterface { - public function setServerPartEntity(ServerPartEntity $entity): self; - public function getServerPartEntity(): ServerPartEntity; - public function createServerPart(): ServerPartEntity; - public function modifyServerPart(): ServerPartEntity; - public function deleteServerPart(): ServerPartEntity; + public function createServerPart(ServerPartEntity $serverPartEntity): ServerPartEntity; + public function modifyServerPart(ServerPartEntity $serverPartEntity): ServerPartEntity; + public function deleteServerPart(ServerPartEntity $serverPartEntity): ServerPartEntity; } diff --git a/app/Services/Customer/Service/PaymentService.php b/app/Services/Customer/Service/PaymentService.php index 58947ea..5782050 100644 --- a/app/Services/Customer/Service/PaymentService.php +++ b/app/Services/Customer/Service/PaymentService.php @@ -9,58 +9,48 @@ 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 + private function action_process(ServiceEntity $serviceEntity, array $formDatas = []): array { - $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['clientinfo_uid'] = $serviceEntity->getClientInfoUID(); + $formDatas['serviceinfo_uid'] = $serviceEntity->getPK(); + $formDatas['serverinfo_uid'] = $serviceEntity->getServerInfoUID(); + $formDatas['title'] = $serviceEntity->getServerEntity()->getTitle(); + $formDatas['amount'] = $serviceEntity->getAmount(); $formDatas['billing'] = PAYMENT['BILLING']['MONTH']; - $formDatas['billing_at'] = $this->getServiceEntity()->getBillingAt(); + $formDatas['billing_at'] = $serviceEntity->getBillingAt(); return $formDatas; } - public function createService(): ServiceEntity + public function createService(ServiceEntity $serviceEntity): ServiceEntity { //필수정보처리 후 결제정보등록 - $entity = $this->create($this->action_process()); + $entity = $this->create($this->action_process($serviceEntity)); //서비스정보 Entity에 결제정보 설정 - return $this->getServiceEntity()->setPaymentEntity($entity); + return $serviceEntity->setPaymentEntity($entity); } - public function modifyService(): ServiceEntity + public function modifyService(ServiceEntity $serviceEntity): ServiceEntity { - //미납상태의 결제정보 가져오기 - $entity = $this->getEntity(['serviceinfo_uid' => $this->getServiceEntity()->getPK(), 'status' => STATUS['UNPAID']]); + //결제정보 가져오기 + $entity = $serviceEntity->getPaymentEntity(); if (!$entity instanceof PaymentEntity) { - throw new \Exception(__METHOD__ . "에서 오류발생: {$this->getServiceEntity()->getPK()}에 해당하는 결제정보를 찾을수 없습니다."); + throw new \Exception(__METHOD__ . "에서 오류발생: {$serviceEntity->getPK()}에 해당하는 결제정보를 찾을수 없습니다."); + } + //미납상태확인 + if ($entity->getStatus() !== STATUS['UNPAID']) { + throw new \Exception(__METHOD__ . "에서 오류발생: 완료된 결제는 수정이 불가합니다."); } //필수정보처리 후 결제정보수정 - $entity = $this->modify($entity, $this->action_process()); + $entity = $this->modify($entity, $this->action_process($serviceEntity)); //서비스정보 Entity에 결제정보 설정 - return $this->getServiceEntity()->setPaymentEntity($entity); + return $serviceEntity->setPaymentEntity($entity); } - public function deleteService(): ServiceEntity + public function deleteService(ServiceEntity $serviceEntity): ServiceEntity { //삭제시에는 아무것도 하지 않는다. - return $this->getServiceEntity(); + return $serviceEntity; } } diff --git a/app/Services/Customer/Service/ServerService.php b/app/Services/Customer/Service/ServerService.php index b909756..31e5eef 100644 --- a/app/Services/Customer/Service/ServerService.php +++ b/app/Services/Customer/Service/ServerService.php @@ -9,60 +9,46 @@ use App\Interfaces\Customer\ServiceInterface; class ServerService extends ParentService implements ServiceInterface { - private ?ServiceEntity $_serviceEntity = null; public function __construct() { parent::__construct(); } - final 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 = []): ServerEntity + private function action_process(ServiceEntity $serviceEntity, array $formDatas = []): ServerEntity { if (!array_key_exists('status', $formDatas)) { throw new \Exception(__METHOD__ . "에서 오류발생: 서버상태가 설정되지 않았습니다."); } //서버정보 가져오기 - $entity = $this->getEntity(['serviceinfo_uid' => $this->getServiceEntity()->getPK()]); + $entity = $this->getEntity(['serviceinfo_uid' => $serviceEntity->getPK()]); if (!$entity instanceof ServerEntity) { - throw new \Exception("서비스정보[{$this->getServiceEntity()->getPK()}]에 해당하는 서버정보를 찾을수없습니다."); + throw new \Exception("서비스정보[{$serviceEntity->getPK()}]에 해당하는 서버정보를 찾을수없습니다."); } //서버정보 수정 return $this->modify($entity, $formDatas); } - public function createService(): ServiceEntity + public function createService(ServiceEntity $serviceEntity): ServiceEntity { $formDatas = []; - $formDatas['clientinfo_uid'] = $this->getServiceEntity()->getClientInfoUID(); - $formDatas['serviceinfo_uid'] = $this->getServiceEntity()->getPK(); + $formDatas['clientinfo_uid'] = $serviceEntity->getClientInfoUID(); + $formDatas['serviceinfo_uid'] = $serviceEntity->getPK(); $formDatas['status'] = STATUS['OCCUPIED']; - $entity = $this->action_process($formDatas); + $entity = $this->action_process($serviceEntity, $formDatas); //서비스정보 Entity에 서버정보 설정 - return $this->getServiceEntity()->setServerEntity($entity); + return $serviceEntity->setServerEntity($entity); } - public function modifyService(): ServiceEntity + public function modifyService(ServiceEntity $serviceEntity): ServiceEntity { - return $this->createService(); + return $this->createService($serviceEntity); } - public function deleteService(): ServiceEntity + public function deleteService(ServiceEntity $serviceEntity): ServiceEntity { $formDatas = []; $formDatas['clientinfo_uid'] = null; $formDatas['serviceinfo_uid'] = null; $formDatas['status'] = STATUS['AVAILABLE']; - $entity = $this->action_process($formDatas); + $entity = $this->action_process($serviceEntity, $formDatas); //서비스정보 Entity에 서버정보 설정 - return $this->getServiceEntity()->setServerEntity($entity); + return $serviceEntity->setServerEntity($entity); } } diff --git a/app/Services/Customer/ServiceService.php b/app/Services/Customer/ServiceService.php index 93d151c..957a2e3 100644 --- a/app/Services/Customer/ServiceService.php +++ b/app/Services/Customer/ServiceService.php @@ -215,21 +215,25 @@ class ServiceService extends CustomerService } //기본기능 //Action 기능 + private function action_process(ServiceEntity $entity, string $action): ServiceEntity + { + //서버정보수정 + $entity = $this->getServerService()->$action($entity); + $entity = $this->getPaymentService()->$action($entity); + //결제정보PK정의 + $entity = parent::modify($entity, ['payment_uid' => $entity->getPaymentEntity()->getPK()]); + return $entity; + } //생성 public function create(array $formDatas): ServiceEntity { if (!array_key_exists('serverinfo_uid', $formDatas)) { throw new \Exception("서버가 지정되지 않았습니다."); } - //신규등록 + //신규등록(월청구액 전달값 그대로 사용) $entity = $this->getEntity(parent::create($formDatas)->getPK()); - //신규 서버정보수정 - $entity->getServerService()->setServiceEntity($entity)->modifyService(); - //신규 결제정보등록 - $entity = $this->getPaymentService()->setServiceEntity($entity)->createService(); - //신규 결제정보PK수정 - $entity = parent::modify($entity, ['payment_uid' => $entity->getPaymentEntity()->getPK()]); - return $entity; + //후처리작업 + return $this->action_process($entity, __FUNCTION__ . 'Service'); } //수정 public function modify(mixed $entity, array $formDatas): ServiceEntity @@ -237,27 +241,23 @@ class ServiceService extends CustomerService if (!array_key_exists('serverinfo_uid', $formDatas)) { throw new \Exception("서버가 지정되지 않았습니다."); } - //기존 각서버파트정보 + //기존 서버정보 해지 if ($entity->getServerEntity()->getPK() !== $formDatas['serverinfo_uid']) { - //기존 서버정보 해지 - $entity->getServerService()->setServiceEntity($entity)->deleteService(); + $entity->getServerService()->deleteService($entity); } - //수정작업 - //월청구액계산 확인 후 서비스정보에 수정 + //수정작업(월청구액계산 확인 후 서비스정보에 수정) $entity = $this->getEntity(parent::modify( $entity, ['amount' => $this->getServerService()->getTotalAmount($entity->getServerEntity()->getPK())] )->getPK()); - //신규 서버정보수정 - $entity->getServerService()->setServiceEntity($entity)->modifyService(); - return $entity; + //후처리작업 + return $this->action_process($entity, __FUNCTION__ . 'Service'); } //삭제 public function delete(mixed $entity): ServiceEntity { - //서버정보 해지 - $entity->getServerService()->setServiceEntity($entity)->deleteService(); - //결제정보는 하지않음 - return parent::delete($entity); + $entity = parent::delete($entity); + //후처리작업 + return $this->action_process($entity, __FUNCTION__ . 'Service'); } } diff --git a/app/Services/Equipment/ServerPart/CSService.php b/app/Services/Equipment/ServerPart/CSService.php index c1aece8..1a0be2c 100644 --- a/app/Services/Equipment/ServerPart/CSService.php +++ b/app/Services/Equipment/ServerPart/CSService.php @@ -9,61 +9,47 @@ use App\Services\Equipment\CSService as ParentService; class CSService extends ParentService implements ServerPartInterface { - private ?ServerPartEntity $_serverPartEntity = null; public function __construct() { parent::__construct(); } - public function setServerPartEntity(ServerPartEntity $entity): self - { - $this->_serverPartEntity = $entity; - return $this; - } - public function getServerPartEntity(): ServerPartEntity - { - if (!$this->_serverPartEntity instanceof ServerPartEntity) { - throw new \Exception(__METHOD__ . "에서 오류발생: 서버파트정보가 정의되지 않았습니다."); - } - return $this->_serverPartEntity; - } - //서버연결정보용 등록 - private function action_process(array $formDatas = []): CSEntity + private function action_process(ServerPartEntity $serverPartEntity, array $formDatas = []): CSEntity { if (!array_key_exists('status', $formDatas)) { throw new \Exception(__METHOD__ . "에서 오류발생: CS상태가 설정되지 않았습니다."); } //CS정보가져오기 - $entity = $this->getEntity($this->getServerPartEntity()->getPartUID()); + $entity = $this->getEntity($serverPartEntity->getPartUID()); if (!$entity instanceof CSEntity) { - throw new \Exception("{$this->getServerPartEntity()->getPartUID()}에 해당하는 CS정보를 찾을수없습니다."); + throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 CS정보를 찾을수없습니다."); } //CS정보 수정 return $this->modify($entity, $formDatas); } - public function createServerPart(): ServerPartEntity + public function createServerPart(ServerPartEntity $serverPartEntity): ServerPartEntity { $formDatas = []; - $formDatas['clientinfo_uid'] = $this->getServerPartEntity()->getClientInfoUID(); - $formDatas['serviceinfo_uid'] = $this->getServerPartEntity()->getServiceInfoUID(); - $formDatas['serverinfo_uid'] = $this->getServerPartEntity()->getServerInfoUID(); + $formDatas['clientinfo_uid'] = $serverPartEntity->getClientInfoUID(); + $formDatas['serviceinfo_uid'] = $serverPartEntity->getServiceInfoUID(); + $formDatas['serverinfo_uid'] = $serverPartEntity->getServerInfoUID(); $formDatas['status'] = STATUS['OCCUPIED']; - $entity = $this->action_process($formDatas); - return $this->getServerPartEntity()->setPartEntity($entity); + $entity = $this->action_process($serverPartEntity, $formDatas); + return $serverPartEntity->setPartEntity($entity); } - public function modifyServerPart(): ServerPartEntity + public function modifyServerPart(ServerPartEntity $serverPartEntity): ServerPartEntity { - return $this->createServerPart(); + return $this->createServerPart($serverPartEntity); } - public function deleteServerPart(): ServerPartEntity + public function deleteServerPart(ServerPartEntity $serverPartEntity): ServerPartEntity { $formDatas = []; $formDatas['clientinfo_uid'] = null; $formDatas['serviceinfo_uid'] = null; $formDatas['serverinfo_uid'] = null; $formDatas['status'] = STATUS['AVAILABLE']; - $entity = $this->action_process($formDatas); - return $this->getServerPartEntity()->setPartEntity($entity); + $entity = $this->action_process($serverPartEntity, $formDatas); + return $serverPartEntity->setPartEntity($entity); } } diff --git a/app/Services/Equipment/ServerPart/IPService.php b/app/Services/Equipment/ServerPart/IPService.php index b6af843..0e9f737 100644 --- a/app/Services/Equipment/ServerPart/IPService.php +++ b/app/Services/Equipment/ServerPart/IPService.php @@ -9,61 +9,47 @@ use App\Services\Equipment\IPService as ParentService; class IPService extends ParentService implements ServerPartInterface { - private ?ServerPartEntity $_serverPartEntity = null; public function __construct() { parent::__construct(); } - public function setServerPartEntity(ServerPartEntity $entity): self - { - $this->_serverPartEntity = $entity; - return $this; - } - public function getServerPartEntity(): ServerPartEntity - { - if (!$this->_serverPartEntity instanceof ServerPartEntity) { - throw new \Exception(__METHOD__ . "에서 오류발생: 서버파트정보가 정의되지 않았습니다."); - } - return $this->_serverPartEntity; - } - //서버연결정보용 등록 - private function action_process(array $formDatas = []): IPEntity + private function action_process(ServerPartEntity $serverPartEntity, array $formDatas = []): IPEntity { if (!array_key_exists('status', $formDatas)) { throw new \Exception(__METHOD__ . "에서 오류발생: IP상태가 설정되지 않았습니다."); } //IP정보가져오기 - $entity = $this->getEntity($this->getServerPartEntity()->getPartUID()); + $entity = $this->getEntity($serverPartEntity->getPartUID()); if (!$entity instanceof IPEntity) { - throw new \Exception("{$this->getServerPartEntity()->getPartUID()}에 해당하는 IP정보를 찾을수없습니다."); + throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 IP정보를 찾을수없습니다."); } //IP정보 수정 return $this->modify($entity, $formDatas); } - public function createServerPart(): ServerPartEntity + public function createServerPart(ServerPartEntity $serverPartEntity): ServerPartEntity { $formDatas = []; - $formDatas['clientinfo_uid'] = $this->getServerPartEntity()->getClientInfoUID(); - $formDatas['serviceinfo_uid'] = $this->getServerPartEntity()->getServiceInfoUID(); - $formDatas['serverinfo_uid'] = $this->getServerPartEntity()->getServerInfoUID(); + $formDatas['clientinfo_uid'] = $serverPartEntity->getClientInfoUID(); + $formDatas['serviceinfo_uid'] = $serverPartEntity->getServiceInfoUID(); + $formDatas['serverinfo_uid'] = $serverPartEntity->getServerInfoUID(); $formDatas['status'] = STATUS['OCCUPIED']; - $entity = $this->action_process($formDatas); - return $this->getServerPartEntity()->setPartEntity($entity); + $entity = $this->action_process($serverPartEntity, $formDatas); + return $serverPartEntity->setPartEntity($entity); } - public function modifyServerPart(): ServerPartEntity + public function modifyServerPart(ServerPartEntity $serverPartEntity): ServerPartEntity { - return $this->createServerPart(); + return $this->createServerPart($serverPartEntity); } - public function deleteServerPart(): ServerPartEntity + public function deleteServerPart(ServerPartEntity $serverPartEntity): ServerPartEntity { $formDatas = []; $formDatas['clientinfo_uid'] = null; $formDatas['serviceinfo_uid'] = null; $formDatas['serverinfo_uid'] = null; $formDatas['status'] = STATUS['AVAILABLE']; - $entity = $this->action_process($formDatas); - return $this->getServerPartEntity()->setPartEntity($entity); + $entity = $this->action_process($serverPartEntity, $formDatas); + return $serverPartEntity->setPartEntity($entity); } } diff --git a/app/Services/Equipment/ServerPart/PartService.php b/app/Services/Equipment/ServerPart/PartService.php index ddd10a5..daee1af 100644 --- a/app/Services/Equipment/ServerPart/PartService.php +++ b/app/Services/Equipment/ServerPart/PartService.php @@ -9,58 +9,45 @@ use App\Services\Equipment\PartService as ParentService; class PartService extends ParentService implements ServerPartInterface { - private ?ServerPartEntity $_serverPartEntity = null; public function __construct() { parent::__construct(); } - public function setServerPartEntity(ServerPartEntity $entity): self - { - $this->_serverPartEntity = $entity; - return $this; - } - public function getServerPartEntity(): ServerPartEntity - { - if (!$this->_serverPartEntity instanceof ServerPartEntity) { - throw new \Exception(__METHOD__ . "에서 오류발생: 서버파트정보가 정의되지 않았습니다."); - } - return $this->_serverPartEntity; - } //서버연결정보용 등록 - private function action_process(string $action): PartEntity + private function action_process(ServerPartEntity $serverPartEntity, string $action): PartEntity { //부품정보가져오기 - $entity = $this->getEntity($this->getServerPartEntity()->getPartUID()); + $entity = $this->getEntity($serverPartEntity->getPartUID()); if (!$entity instanceof PartEntity) { - throw new \Exception("{$this->getServerPartEntity()->getPartUID()}에 해당하는 부품정보를 찾을수없습니다."); + throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 부품정보를 찾을수없습니다."); } //부품정보에 서버정보 설정 및 서비스,고객정보 정의 $formDatas = []; if ($action === "return") { //해지된 부품 재고 반납 처리 - $formDatas['stock'] = $entity->getStock() + $this->getServerPartEntity()->getCnt(); + $formDatas['stock'] = $entity->getStock() + $serverPartEntity->getCnt(); } if ($action === "use") { //사용된 부품 재고 사용처리 - if ($entity->getStock() < $this->getServerPartEntity()->getCnt()) { - throw new \Exception("현재 재고수[{$entity->getStock()}]보다 지정하신 갯수({$this->getServerPartEntity()->getCnt()})가 더 많습니다."); + if ($entity->getStock() < $serverPartEntity->getCnt()) { + throw new \Exception("현재 재고수[{$entity->getStock()}]보다 지정하신 갯수({$serverPartEntity->getCnt()})가 더 많습니다."); } - $formDatas['stock'] = $entity->getStock() - $this->getServerPartEntity()->getCnt(); + $formDatas['stock'] = $entity->getStock() - $serverPartEntity->getCnt(); } return $this->modify($entity, $formDatas); } - public function createServerPart(): ServerPartEntity + public function createServerPart(ServerPartEntity $serverPartEntity): ServerPartEntity { - $entity = $this->action_process("use"); - return $this->getServerPartEntity()->setPartEntity($entity); + $entity = $this->action_process($serverPartEntity, "use"); + return $serverPartEntity->setPartEntity($entity); } - public function modifyServerPart(): ServerPartEntity + public function modifyServerPart(ServerPartEntity $serverPartEntity): ServerPartEntity { - return $this->createServerPart(); + return $this->createServerPart($serverPartEntity,); } - public function deleteServerPart(): ServerPartEntity + public function deleteServerPart(ServerPartEntity $serverPartEntity): ServerPartEntity { - $entity = $this->action_process("return"); - return $this->getServerPartEntity()->setPartEntity($entity); + $entity = $this->action_process($serverPartEntity, "return"); + return $serverPartEntity->setPartEntity($entity); } } diff --git a/app/Services/Equipment/ServerPart/PaymentService.php b/app/Services/Equipment/ServerPart/PaymentService.php index 75c4838..136a29d 100644 --- a/app/Services/Equipment/ServerPart/PaymentService.php +++ b/app/Services/Equipment/ServerPart/PaymentService.php @@ -9,74 +9,59 @@ use App\Services\PaymentService as ParentService; class PaymentService extends ParentService implements ServerPartInterface { - private ?ServerPartEntity $_serverPartEntity = null; public function __construct() { parent::__construct(); } - public function setServerPartEntity(ServerPartEntity $entity): self + private function action_process(ServerPartEntity $serverPartEntity, array $formDatas = []): array { - $this->_serverPartEntity = $entity; - return $this; - } - public function getServerPartEntity(): ServerPartEntity - { - if (!$this->_serverPartEntity instanceof ServerPartEntity) { - throw new \Exception(__METHOD__ . "에서 오류발생: 서버파트정보가 정의되지 않았습니다."); - } - return $this->_serverPartEntity; - } - - private function action_process(): array - { - if ($this->getServerPartEntity()->getServiceInfoUID() === null) { + if ($serverPartEntity->getServiceInfoUID() === null) { throw new \Exception(__METHOD__ . "에서 오류발생: 서비스정보가 정의된 후에만 가능합니다."); } //일회인이 아닌경우 - if ($this->getServerPartEntity()->getBilling() !== PAYMENT['BILLING']['ONETIME']) { - throw new \Exception(__METHOD__ . "에서 오류발생: :" . lang("{$this->getClassName()}.BILLING." . PAYMENT['BILLING'][$this->getServerPartEntity()->getBilling()]) . "지급 상품은 처리가 불가, 일회성만 가능합니다."); + if ($serverPartEntity->getBilling() !== PAYMENT['BILLING']['ONETIME']) { + throw new \Exception(__METHOD__ . "에서 오류발생: :" . lang("{$this->getClassName()}.BILLING." . PAYMENT['BILLING'][$serverPartEntity->getBilling()]) . "지급 상품은 처리가 불가, 일회성만 가능합니다."); } - $formDatas = []; - $formDatas['clientinfo_uid'] = $this->getServerPartEntity()->getClientInfoUID(); - $formDatas['serviceinfo_uid'] = $this->getServerPartEntity()->getServiceInfoUID(); - $formDatas['serverinfo_uid'] = $this->getServerPartEntity()->getServerInfoUID(); //서버연결정보 수정시에 필요함 + $formDatas['clientinfo_uid'] = $serverPartEntity->getClientInfoUID(); + $formDatas['serviceinfo_uid'] = $serverPartEntity->getServiceInfoUID(); + $formDatas['serverinfo_uid'] = $serverPartEntity->getServerInfoUID(); //서버연결정보 수정시에 필요함 //타이틀은 기타의 경우 직접작성한 제목을 등록하고 아닌경우는 Part의 Title을 사용한다. - $formDatas['title'] = $this->getServerPartEntity()->getType() === 'ETC' ? $this->getServerPartEntity()->getTitle() : $this->getServerPartEntity()->getPartEntity()->getTitle(); - $formDatas['amount'] = $this->getServerPartEntity()->getAmount(); - $formDatas['billing'] = $this->getServerPartEntity()->getBilling(); + $formDatas['title'] = $serverPartEntity->getType() === 'ETC' ? $serverPartEntity->getTitle() : $serverPartEntity->getPartEntity()->getTitle(); + $formDatas['amount'] = $serverPartEntity->getAmount(); + $formDatas['billing'] = $serverPartEntity->getBilling(); return $formDatas; } - public function createServerPart(): ServerPartEntity + public function createServerPart(ServerPartEntity $serverPartEntity): ServerPartEntity { //필수정보처리 후 FormData 가져오기 - $formDatas = $this->action_process(); + $formDatas = $this->action_process($serverPartEntity); //당일결체일로 설정 $formDatas['billing_at'] = date("Y-m-d"); //결제정보등록 $entity = $this->create($formDatas); //서버연결정보 Entity에 결제정보 설정 - return $this->getServerPartEntity()->setPaymentEntity($entity); + return $serverPartEntity->setPaymentEntity($entity); } - public function modifyServerPart(): ServerPartEntity + public function modifyServerPart(ServerPartEntity $serverPartEntity): ServerPartEntity { //미납상태의 결제정보 가져오기 - $entity = $this->getEntity(['serverpartinfo_uid' => $this->getServerPartEntity()->getPK(), 'status' => STATUS['UNPAID']]); + $entity = $this->getEntity(['serverpartinfo_uid' => $serverPartEntity->getPK(), 'status' => STATUS['UNPAID']]); if (!$entity instanceof PaymentEntity) { - throw new \Exception(__METHOD__ . "에서 오류발생: {$this->getServerPartEntity()->getPK()}에 해당하는 결제정보를 찾을수 없습니다."); + throw new \Exception(__METHOD__ . "에서 오류발생: {$serverPartEntity->getPK()}에 해당하는 결제정보를 찾을수 없습니다."); } //필수정보처리 후 FormData 가져오기 - $formDatas = $this->action_process(); + $formDatas = $this->action_process($serverPartEntity); //결제정보수정 $entity = $this->modify($entity, $formDatas); //서버연결정보 Entity에 결제정보 설정 - return $this->getServerPartEntity()->setPaymentEntity($entity); + return $serverPartEntity->setPaymentEntity($entity); } - public function deleteServerPart(): ServerPartEntity + public function deleteServerPart(ServerPartEntity $serverPartEntity): ServerPartEntity { //삭제시에는 아무것도 하지 않는다. - return $this->getServerPartEntity(); + return $serverPartEntity; } } diff --git a/app/Services/Equipment/ServerPart/ServerService.php b/app/Services/Equipment/ServerPart/ServerService.php deleted file mode 100644 index f25b2ca..0000000 --- a/app/Services/Equipment/ServerPart/ServerService.php +++ /dev/null @@ -1,57 +0,0 @@ -_serverPartEntity = $entity; - return $this; - } - public function getServerPartEntity(): ServerPartEntity - { - if (!$this->_serverPartEntity instanceof ServerPartEntity) { - throw new \Exception(__METHOD__ . "에서 오류발생: 서버파트정보가 정의되지 않았습니다."); - } - return $this->_serverPartEntity; - } - - //월과금은 해당 서비스의 항목별 금액을 총 합산후 청구금액을 설정후 결제정보에 신규등록/수정한다 - private function action_process(): ServerEntity - { - //Service Entity 가져오기 - $entity = $this->getEntity($this->getServerPartEntity()->getServiceInfoUID()); - if (!$entity instanceof ServerEntity) { - throw new \Exception("[{$this->getServerPartEntity()->getServiceInfoUID()}]에 대한 서비스정보를 찾을수 없습니다."); - } - //서비스금액은 modify 함수내에서 재계산을 하므로 여기서는 modify만 호출함 - return parent::modify($entity, []); - } - public function createServerPart(): ServerPartEntity - { - //필수정보처리 후 FormData 가져오기 - $this->action_process(); - return $this->getServerPartEntity(); - } - public function modifyServerPart(): ServerPartEntity - { - return $this->createServerPart(); - } - public function deleteServerPart(): ServerPartEntity - { - return $this->createServerPart(); - } -} diff --git a/app/Services/Equipment/ServerPart/ServiceService.php b/app/Services/Equipment/ServerPart/ServiceService.php index 6031a66..a811f36 100644 --- a/app/Services/Equipment/ServerPart/ServiceService.php +++ b/app/Services/Equipment/ServerPart/ServiceService.php @@ -10,48 +10,33 @@ use App\Services\Customer\ServiceService as ParentService; class ServiceService extends ParentService implements ServerPartInterface { - private ?ServerPartEntity $_serverPartEntity = null; public function __construct() { parent::__construct(); } - - public function setServerPartEntity(ServerPartEntity $entity): self - { - $this->_serverPartEntity = $entity; - return $this; - } - public function getServerPartEntity(): ServerPartEntity - { - if (!$this->_serverPartEntity instanceof ServerPartEntity) { - throw new \Exception(__METHOD__ . "에서 오류발생: 서버파트정보가 정의되지 않았습니다."); - } - return $this->_serverPartEntity; - } - - //월과금은 해당 서비스의 항목별 금액을 총 합산후 청구금액을 설정후 결제정보에 신규등록/수정한다 - private function action_process(): ServiceEntity + private function action_process(ServerPartEntity $serverPartEntity): ServiceEntity { //Service Entity 가져오기 - $entity = $this->getEntity($this->getServerPartEntity()->getServiceInfoUID()); + $entity = $this->getEntity($serverPartEntity->getServiceInfoUID()); if (!$entity instanceof ServiceEntity) { - throw new \Exception("[{$this->getServerPartEntity()->getServiceInfoUID()}]에 대한 서비스정보를 찾을수 없습니다."); + throw new \Exception("[{$serverPartEntity->getServiceInfoUID()}]에 대한 서비스정보를 찾을수 없습니다."); } //서비스금액은 modify 함수내에서 재계산을 하므로 여기서는 modify만 호출함 return parent::modify($entity, []); } - public function createServerPart(): ServerPartEntity + public function createServerPart(ServerPartEntity $serverPartEntity): ServerPartEntity { - //필수정보처리 후 FormData 가져오기 - $this->action_process(); - return $this->getServerPartEntity(); + $this->action_process($serverPartEntity); + return $serverPartEntity; } - public function modifyServerPart(): ServerPartEntity + //create와 같은 작업임 + public function modifyServerPart(ServerPartEntity $serverPartEntity): ServerPartEntity { - return $this->createServerPart(); + return $this->createServerPart($serverPartEntity); } - public function deleteServerPart(): ServerPartEntity + //create와 같은 작업임 + public function deleteServerPart(ServerPartEntity $serverPartEntity): ServerPartEntity { - return $this->createServerPart(); + return $this->createServerPart($serverPartEntity); } } diff --git a/app/Services/Equipment/ServerPart/SwitchService.php b/app/Services/Equipment/ServerPart/SwitchService.php index 2fce310..c13837a 100644 --- a/app/Services/Equipment/ServerPart/SwitchService.php +++ b/app/Services/Equipment/ServerPart/SwitchService.php @@ -9,61 +9,47 @@ use App\Services\Equipment\SwitchService as ParentService; class SwitchService extends ParentService implements ServerPartInterface { - private ?ServerPartEntity $_serverPartEntity = null; public function __construct() { parent::__construct(); } - public function setServerPartEntity(ServerPartEntity $entity): self - { - $this->_serverPartEntity = $entity; - return $this; - } - public function getServerPartEntity(): ServerPartEntity - { - if (!$this->_serverPartEntity instanceof ServerPartEntity) { - throw new \Exception(__METHOD__ . "에서 오류발생: 서버파트정보가 정의되지 않았습니다."); - } - return $this->_serverPartEntity; - } - //서버연결정보용 등록 - private function action_process(array $formDatas = []): SwitchEntity + private function action_process(ServerPartEntity $serverPartEntity, array $formDatas = []): SwitchEntity { if (!array_key_exists('status', $formDatas)) { throw new \Exception(__METHOD__ . "에서 오류발생: Switch상태가 설정되지 않았습니다."); } //Switch정보가져오기 - $entity = $this->getEntity($this->getServerPartEntity()->getPartUID()); + $entity = $this->getEntity($serverPartEntity->getPartUID()); if (!$entity instanceof SwitchEntity) { - throw new \Exception("{$this->getServerPartEntity()->getPartUID()}에 해당하는 Switch정보를 찾을수없습니다."); + throw new \Exception("{$serverPartEntity->getPartUID()}에 해당하는 Switch정보를 찾을수없습니다."); } //Switch정보 수정 return $this->modify($entity, $formDatas); } - public function createServerPart(): ServerPartEntity + public function createServerPart(ServerPartEntity $serverPartEntity): ServerPartEntity { $formDatas = []; - $formDatas['clientinfo_uid'] = $this->getServerPartEntity()->getClientInfoUID(); - $formDatas['serviceinfo_uid'] = $this->getServerPartEntity()->getServiceInfoUID(); - $formDatas['serverinfo_uid'] = $this->getServerPartEntity()->getServerInfoUID(); + $formDatas['clientinfo_uid'] = $serverPartEntity->getClientInfoUID(); + $formDatas['serviceinfo_uid'] = $serverPartEntity->getServiceInfoUID(); + $formDatas['serverinfo_uid'] = $serverPartEntity->getServerInfoUID(); $formDatas['status'] = STATUS['OCCUPIED']; - $entity = $this->action_process($formDatas); - return $this->getServerPartEntity()->setPartEntity($entity); + $entity = $this->action_process($serverPartEntity, $formDatas); + return $serverPartEntity->setPartEntity($entity); } - public function modifyServerPart(): ServerPartEntity + public function modifyServerPart(ServerPartEntity $serverPartEntity): ServerPartEntity { - return $this->createServerPart(); + return $this->createServerPart($serverPartEntity); } - public function deleteServerPart(): ServerPartEntity + public function deleteServerPart(ServerPartEntity $serverPartEntity): ServerPartEntity { $formDatas = []; $formDatas['clientinfo_uid'] = null; $formDatas['serviceinfo_uid'] = null; $formDatas['serverinfo_uid'] = null; $formDatas['status'] = STATUS['AVAILABLE']; - $entity = $this->action_process($formDatas); - return $this->getServerPartEntity()->setPartEntity($entity); + $entity = $this->action_process($serverPartEntity, $formDatas); + return $serverPartEntity->setPartEntity($entity); } } diff --git a/app/Services/Equipment/ServerPartService.php b/app/Services/Equipment/ServerPartService.php index 4afcd64..c30fa1e 100644 --- a/app/Services/Equipment/ServerPartService.php +++ b/app/Services/Equipment/ServerPartService.php @@ -8,13 +8,13 @@ use App\Entities\PaymentEntity; use App\Helpers\Equipment\ServerPartHelper; use App\Models\Equipment\ServerPartModel; use App\Services\Equipment\EquipmentService; -use App\Services\Equipment\ServerPart\ServiceService; -use App\Services\Equipment\ServerPart\ServerService; use App\Services\Equipment\ServerPart\CSService; use App\Services\Equipment\ServerPart\IPService; use App\Services\Equipment\ServerPart\PartService; -use App\Services\Equipment\ServerPart\SwitchService; use App\Services\Equipment\ServerPart\PaymentService; +use App\Services\Equipment\ServerPart\ServiceService; +use App\Services\Equipment\ServerPart\SwitchService; +use App\Services\Equipment\ServerService; class ServerPartService extends EquipmentService { @@ -214,28 +214,30 @@ class ServerPartService extends EquipmentService case 'DISK': case 'OS': case 'DB': - case 'SOFTWARE': + case 'SOFTWARE': //재고수 처리 필요 $entity = $this->getPartService()->$action($entity); break; - case 'SWITCH': + case 'SWITCH': //사용여부 처리 필요 $entity = $this->getSwitchService()->$action($entity); break; - case 'IP': + case 'IP': //사용여부 처리 필요 $entity = $this->getIPService()->$action($entity); break; - case 'CS': + case 'CS': //사용여부 처리 필요 $entity = $this->getCSService()->$action($entity); break; } //서비스 및 결제정보 처리 switch ($entity->getBilling()) { - case PAYMENT['BILLING']['MONTH']: //월별 + case PAYMENT['BILLING']['MONTH']: //월별과금일때만 처리 $entity = $this->getServiceService()->$action($entity); break; - case PAYMENT['BILLING']['ONETIME']: //일회성 + case PAYMENT['BILLING']['ONETIME']: //일회성일때만 처리 $entity = $this->getPaymentService()->$action($entity); + //결제정보PK정의 + $entity = parent::modify($entity, ['payment_uid' => $entity->getPaymentEntity()->getPK()]); break; - case PAYMENT['BILLING']['BASE']: //기본 + case PAYMENT['BILLING']['BASE']: //기본처리 //아무처리 않함 break; default: @@ -248,25 +250,24 @@ class ServerPartService extends EquipmentService public function create(array $formDatas): ServerPartEntity { //서버정보가져오기 - $serverEntity = null; - if (array_key_exists('serverEntity', $formDatas)) { - $serverEntity = $formDatas['serverEntity']; - } else { - if (!array_key_exists('serverinfo_uid', $formDatas)) { - throw new \Exception("서버 정보가 지정되지 않았습니다."); - } - $serverEntity = $this->getServerService()->getEntity($formDatas['serverinfo_uid']); + if (!array_key_exists('serverinfo_uid', $formDatas)) { + throw new \Exception("서버 정보가 지정되지 않았습니다."); } + $serverEntity = $this->getServerService()->getEntity($formDatas['serverinfo_uid']); if (!$serverEntity instanceof ServerEntity) { throw new \Exception("서버 정보가 지정되지 않았습니다."); } + //서비스정의확인(기본은 제외) + if ($formDatas['billing'] !== PAYMENT['BILLING']['BASE'] && $serverEntity->getServiceInfoUID() === null) { + throw new \Exception(__METHOD__ . "에서 오류발생:{월,일회성 과금용은 서비스가 지정되어야 작업이 가능합니다."); + } //생성작업 $formDatas["clientinfo_uid"] = $serverEntity->getClientInfoUID(); $formDatas["serviceinfo_uid"] = $serverEntity->getServiceInfoUID(); $formDatas["serverinfo_uid"] = $serverEntity->getPK(); $entity = parent::create($formDatas); - //부품연결정보관련 정보처리 - return $this->action_process($entity, __FUNCTION__ . 'ServerPart'); + //후처리작업 + return $this->action_process($entity, __FUNCTION__ . 'ServerPart'); } //수정 public function modify(mixed $entity, array $formDatas): ServerPartEntity @@ -288,15 +289,16 @@ class ServerPartService extends EquipmentService $formDatas["serviceinfo_uid"] = $serverEntity->getServiceInfoUID(); $formDatas["serverinfo_uid"] = $serverEntity->getPK(); $entity = parent::modify($entity, $formDatas); - //수정 후 부품연결정보관련 정보처리 + //후처리작업 $entity = $this->action_process($entity, __FUNCTION__ . 'ServerPart'); return $entity; } //삭제 public function delete(mixed $entity): ServerPartEntity { - //부품연결정보관련 정보처리 + $entity = parent::delete($entity); + //후처리작업 $entity = $this->action_process($entity, __FUNCTION__ . 'ServerPart'); - return parent::delete($entity); + return $entity; } } diff --git a/app/Views/admin/welcome/index.php b/app/Views/admin/welcome/index.php index 038f800..b137813 100644 --- a/app/Views/admin/welcome/index.php +++ b/app/Views/admin/welcome/index.php @@ -20,6 +20,7 @@
include("{$viewDatas['layout']}/welcome/user_history"); ?> + include("{$viewDatas['layout']}/welcome/stock"); ?>
diff --git a/app/Views/admin/welcome/stock.php b/app/Views/admin/welcome/stock.php new file mode 100644 index 0000000..b8fcbd9 --- /dev/null +++ b/app/Views/admin/welcome/stock.php @@ -0,0 +1,13 @@ +
+ +
+
+ 준비중.... +
+ \ No newline at end of file