diff --git a/app/Config/Constants.php b/app/Config/Constants.php index 15566cd..21e4945 100644 --- a/app/Config/Constants.php +++ b/app/Config/Constants.php @@ -388,11 +388,13 @@ define("SERVICE", [ define("SERVERPART", [ "CNT_RANGE" => array_combine(range(1, 10), range(1, 10)), "SERVER_PARTTTYPES" => ['CPU', 'RAM', 'DISK'], + "SERVICE_PARTTTYPES" => ['SWITCH', 'IP', 'OS', 'SOFTWARE'], "PARTTYPES" => ['CPU', 'RAM', 'DISK', 'OS', 'DB', 'SOFTWARE', 'SWITCH', 'IP', 'CS'], ]); //결제 관련 define("PAYMENT", [ 'BILLING' => [ + 'BASE' => 'base', 'MONTH' => 'month', 'ONETIME' => 'onetime' ], diff --git a/app/Helpers/Customer/ServiceHelper.php b/app/Helpers/Customer/ServiceHelper.php index 17a951b..07bb2aa 100644 --- a/app/Helpers/Customer/ServiceHelper.php +++ b/app/Helpers/Customer/ServiceHelper.php @@ -23,7 +23,7 @@ class ServiceHelper extends CustomerHelper switch ($field) { case 'serverinfo_uid': if (array_key_exists('entity', $viewDatas)) { - $value = $viewDatas['entity']->getServerEntity() !== null ? $viewDatas['entity']->getServerEntity()->getPK() : $value; + $value = $viewDatas['entity']->getServerEntity()->getPK(); } $extras['class'] = array_key_exists('class', $extras) ? $extras['class'] . ' select-field' : 'select-field'; $form = $this->form_dropdown_custom($field, $value, $viewDatas, $extras); @@ -37,6 +37,9 @@ class ServiceHelper extends CustomerHelper public function getFieldView(string $field, mixed $value, array $viewDatas, array $extras = []): string|null { switch ($field) { + case 'serverinfo_uid': + $value = $viewDatas['control']['field_optons'][$field][$viewDatas['entity']->getServerEntity()->getPK()]->getTitle(); + break; case 'billing_at': if (array_key_exists('unPaids', $viewDatas)) { if (array_key_exists($viewDatas['entity']->getPK(), $viewDatas['unPaids'])) { diff --git a/app/Helpers/Equipment/ServerPartHelper.php b/app/Helpers/Equipment/ServerPartHelper.php index de4c05f..3fc0d2b 100644 --- a/app/Helpers/Equipment/ServerPartHelper.php +++ b/app/Helpers/Equipment/ServerPartHelper.php @@ -12,11 +12,11 @@ class ServerPartHelper extends EquipmentHelper parent::__construct(); $this->setTitleField(field: ServerPartModel::TITLE); } - private function getServerPartForm(string $field, mixed $value, array $viewDatas, array $extras, string $partType): string + private function getServerPartForm(string $field, mixed $value, array $viewDatas, array $extras): string { $form = ""; if (array_key_exists('entity', $viewDatas)) { - foreach ($viewDatas['entity']->getServerPartEntities($partType) as $serverPartEntity) { + foreach ($viewDatas['entity']->getServerPartEntities($field) as $serverPartEntity) { //기존 입력화면에서 return 된것인지? if ($value === null && $serverPartEntity !== null) { $value = $serverPartEntity->getPartUID(); @@ -40,7 +40,7 @@ class ServerPartHelper extends EquipmentHelper case 'DB': case 'OS': case 'SOFTWARE': - $form = $this->getServerPartForm($field, $value, $viewDatas, $extras, $field); + $form = $this->getServerPartForm($field, $value, $viewDatas, $extras); break; case 'CPU_cnt': case 'RAM_cnt': @@ -68,13 +68,35 @@ class ServerPartHelper extends EquipmentHelper } return $form; } - public function getFieldView(string $field, mixed $value, array $viewDatas, array $extras = []): string|null { switch ($field) { case 'CPU': case 'RAM': case 'DISK': + $temps = []; + foreach ($viewDatas['serverPartEntities'] as $partEntity) { + $modal = form_label( + ICONS['SETUP'], + $field, + [ + "data-src" => "/admin/equipment/serverpart/modify/{$partEntity->getPK()}?type={$partEntity->getType()}&ActionTemplate=popup", + "data-bs-toggle" => "modal", + "data-bs-target" => "#index_action_form", + "class" => "btn btn-sm btn-outline btn-circle", + "target" => "_self" + ] + ); + $temps[] = sprintf( + "%s%s*%s개%s", + $modal, + $partEntity->getTitle(), + $partEntity->getCnt(), + $partEntity->getExtra() !== null ? "/" . $partEntity->getExtra() : "" + ); + } + $value = implode("
", $temps); + break; case 'OS': case 'DB': case 'SOFTWARE': @@ -95,14 +117,12 @@ class ServerPartHelper extends EquipmentHelper ] ); $temps[] = sprintf( - "%s%s*%s개 %s", + "%s%s", $modal, $partEntity->getTitle(), - $partEntity->getCnt(), - $partEntity->getExtra() ?? "" ); } - $value .= implode("
", $temps); + $value = implode("
", $temps); break; default: $value = parent::getFieldView($field, $value, $viewDatas, $extras); diff --git a/app/Language/en/Equipment/ServerPart.php b/app/Language/en/Equipment/ServerPart.php index 10344c5..1b18b85 100644 --- a/app/Language/en/Equipment/ServerPart.php +++ b/app/Language/en/Equipment/ServerPart.php @@ -16,6 +16,7 @@ return [ 'deleted_at' => "삭제일", ], "BILLING" => [ + PAYMENT['BILLING']["BASE"] => "기본", PAYMENT['BILLING']["MONTH"] => "매월", PAYMENT['BILLING']["ONETIME"] => "일회성", ], diff --git a/app/Services/Customer/ServiceService.php b/app/Services/Customer/ServiceService.php index 8fa0d37..261b912 100644 --- a/app/Services/Customer/ServiceService.php +++ b/app/Services/Customer/ServiceService.php @@ -192,7 +192,7 @@ class ServiceService extends CustomerService $serverFormDatas["serviceinfo_uid"] = null; $serverFormDatas["status"] = STATUS['AVAIABLE']; $serverEntity = $this->getServerService()->modify($serverEntity, $serverFormDatas); - // $entity->setServerEntity(null); + $entity->setServerEntity($serverEntity); } return $entity; } diff --git a/app/Services/Equipment/ServerPartService.php b/app/Services/Equipment/ServerPartService.php index ae82354..4e3ce39 100644 --- a/app/Services/Equipment/ServerPartService.php +++ b/app/Services/Equipment/ServerPartService.php @@ -140,7 +140,7 @@ class ServerPartService extends EquipmentService } return $options; } - private function action_process(ServerPartEntity $entity, array $formDatas): mixed + private function action_process(ServerPartEntity $entity, mixed $part_uid, string $status): mixed { //Type에 따른 부품서비스 정의 switch ($entity->getType()) { @@ -158,18 +158,29 @@ class ServerPartService extends EquipmentService break; } //부품정보가져오기 - $partEntity = $partService->getEntity($entity->getPartUID()); + $partEntity = $partService->getEntity($part_uid); if (!$partEntity) { - throw new \Exception(__METHOD__ . "에서 오류:{$entity->getPartUID()}에 해닫하는 {$entity->getType()}정보가 없습니다."); + throw new \Exception(__METHOD__ . "에서 오류:{$part_uid}에 해닫하는 {$entity->getType()}정보가 없습니다."); } + $formDatas = []; switch ($entity->getType()) { - case 'SWITCH': - case 'CS': - $partEntity = $partService->modify($partEntity, $formDatas); - break; case 'IP': //기존IP 사용자로 고객정보 설정 $formDatas['old_clientinfo_uid'] = $partEntity->getClientInfoUID(); + case 'SWITCH': + case 'CS': + //부품정보에 서버정보 설정 및 서비스,고객정보 정의 + if ($status === STATUS['OCCUPIED']) { + $formDatas['clientinfo_uid'] = $entity->getClientInfoUID(); + $formDatas['serviceinfo_uid'] = $entity->getServiceInfoUID(); + $formDatas['serverinfo_uid'] = $entity->getServerInfoUID(); + } else { + $formDatas['clientinfo_uid'] = null; + $formDatas['serviceinfo_uid'] = null; + $formDatas['serverinfo_uid'] = null; + } + $formDatas['part_uid'] = $part_uid; + $formDatas['status'] = $status; $partEntity = $partService->modify($partEntity, $formDatas); break; } @@ -179,55 +190,29 @@ class ServerPartService extends EquipmentService public function create(array $formDatas): ServerPartEntity { $entity = parent::create($formDatas); - //서버정보가져오기 - $serverEntity = $this->getServerService()->getEntity($entity->getServerInfoUID()); - if (!$serverEntity) { - throw new \Exception(__METHOD__ . "에서 오류:{$entity->getServerInfoUID()}에 해닫하는 서버정보가 없습니다."); - } //부품연결정보에 부품정보 정의 - $partFormDatas = [ - 'clientinfo_uid' => $serverEntity->getClientInfoUID(), - 'serviceinfo_uid' => $serverEntity->getServiceInfoUID(), - 'serverinfo_uid' => $serverEntity->getPK(), - 'status' => STATUS['OCCUPIED'] - ]; - $entity->setPartEntity($this->action_process($entity, $partFormDatas)); + $entity->setPartEntity($this->action_process($entity, $entity->getPartUID(), STATUS['OCCUPIED'])); return $entity; } //수정 public function modify(mixed $entity, array $formDatas): ServerPartEntity { - $entity = parent::modify($entity, $formDatas); - if (!array_key_exists('status', $formDatas)) { - throw new \Exception(__METHOD__ . "에서 상태정보가 정의되지 않았습니다."); + //기존과 신규의 Type이 같고, 기존 Part_UID와 신규 Part_UID가 다르면 부품정보에 서버정보 설정 및 서비스,고객정보 정의 기존 Part정보 사용가능으로 변경 + if ($entity->getType() == $formDatas['type'] && $entity->getPartUID() != $formDatas['part_uid']) { + $entity->setPartEntity($this->action_process($entity, $entity->getPartUID(), STATUS['AVAIABLE'])); } - //부품정보에 서버정보 설정 및 서비스,고객정보 정의 - $partFormDatas = [ - 'status' => $formDatas['status'], - ]; - if ($partFormDatas['status'] === STATUS['OCCUPIED']) { - $partFormDatas['clientinfo_uid'] = $entity->getClientInfoUID(); - $partFormDatas['serviceinfo_uid'] = $entity->getServiceInfoUID(); - $partFormDatas['serverinfo_uid'] = $entity->getServerInfoUID(); - $entity->setPartEntity($this->action_process($entity, $partFormDatas)); - } else { - $partFormDatas['clientinfo_uid'] = null; - $partFormDatas['serviceinfo_uid'] = null; - $partFormDatas['serverinfo_uid'] = null; - $entity->setPartEntity($this->action_process($entity, $partFormDatas)); + //기존 정보변경 + $entity = parent::modify($entity, $formDatas); + //기존과 신규의 Type이 같고, 기존 Part_UID와 신규 Part_UID가 다르면 부품정보에 서버정보 설정 및 서비스,고객정보 정의 Part정보 사용중으로 변경 + if ($entity->getType() == $formDatas['type'] && $entity->getPartUID() != $formDatas['part_uid']) { + $entity->setPartEntity($this->action_process($entity, $formDatas['part_uid'], STATUS['OCCUPIED'])); } return $entity; } //삭제 public function delete(mixed $entity): ServerPartEntity { - $partFormDatas = [ - 'status' => STATUS['AVAIABLE'], - ]; - $partFormDatas['clientinfo_uid'] = null; - $partFormDatas['serviceinfo_uid'] = null; - $partFormDatas['serverinfo_uid'] = null; - $this->action_process($entity, $partFormDatas); + $this->action_process($entity, $entity->getPartUID(), STATUS['AVAIABLE']); return parent::delete($entity); } } diff --git a/app/Views/admin/service/index.php b/app/Views/admin/service/index.php index 67b2465..560f898 100644 --- a/app/Views/admin/service/index.php +++ b/app/Views/admin/service/index.php @@ -86,7 +86,7 @@ - + diff --git a/app/Views/admin/service/view.php b/app/Views/admin/service/view.php index 6165930..82e4954 100644 --- a/app/Views/admin/service/view.php +++ b/app/Views/admin/service/view.php @@ -13,7 +13,7 @@
getListButton($partType, $partType, $viewDatas) ?> getFieldView($partType, "", $viewDatas) ?>
- +
getFieldLabel($field, lang("{$viewDatas['class_path']}.label.{$field}"), $viewDatas) ?> @@ -25,19 +25,13 @@
- +
- - - + + + - +
getFieldLabel("{$partType}", lang("{$viewDatas['class_path']}.label.{$partType}"), $viewDatas) ?> - getFieldView("{$partType}", old("{$partType}") ?? ($viewDatas['entity']->getServerPartEntity($partType) ? $viewDatas['entity']->getServerPartEntity($partType)->getPartInfoUID() : ($viewDatas['control']['form_datas']["{$partType}"] ?? null)), $viewDatas) ?> - getFieldView("{$partType}_cnt", old("{$partType}_cnt") ?? ($viewDatas['entity']->getServerPartEntity($partType) ? $viewDatas['entity']->getServerPartEntity($partType)->getCnt() : ($viewDatas['control']['form_datas']["{$partType}_cnt"] ?? null)), $viewDatas) ?> - - getFieldView("{$partType}_extra", old("{$partType}_extra") ?? ($viewDatas['entity']->getServerPartEntity($partType) ? $viewDatas['entity']->getServerPartEntity($partType)->getExtra() : ($viewDatas['control']['form_datas']["{$partType}_extra"] ?? null)), $viewDatas) ?> - -
getListButton($partType, $partType, $viewDatas) ?>getFieldView($partType, "", $viewDatas) ?>