diff --git a/app/Services/CommonService.php b/app/Services/CommonService.php index ccfbd8d..bc3a819 100644 --- a/app/Services/CommonService.php +++ b/app/Services/CommonService.php @@ -255,7 +255,16 @@ abstract class CommonService if (!$dto instanceof $dtoClass) { throw new RuntimeException(__METHOD__ . "에서 오류발생: " . get_class($dto) . "는 사용할 수 없습니다. ({$dtoClass} 필요)"); } - $entity = $this->modify_process($this->getEntity($uid), $dto->toArray()); + $entity = $this->getEntity($uid); + if (!$entity) { + throw new \Exception(__METHOD__ . "에서 오류발생: {$uid}에 해당하는 정보을 찾을수 없습니다."); + } + // 💡 동적으로 가져온 Entity 클래스 이름으로 instanceof 검사 + $entityClass = $this->getEntityClass(); + if (!$entity instanceof $entityClass) { + throw new RuntimeException(__METHOD__ . "에서 오류발생:Return Type은 {$entityClass}만 가능"); + } + $entity = $this->modify_process($entity, $dto->toArray()); // 트랜잭션 완료 및 커밋 $db->transComplete(); return $entity; @@ -274,10 +283,10 @@ abstract class CommonService } //배치 작업용 수정 - protected function batchjob_process(string|int $uid, array $formDatas): object + protected function batchjob_process($entity, array $formDatas): object { // modify_process를 호출하여 로직 재사용 (PK 로드 및 PK 제거/방어 로직 포함) - $entity = $this->modify_process($this->getEntity($uid), $formDatas); + $entity = $this->modify_process($entity, $formDatas); return $entity; } final public function batchjob(array $uids, object $dto): array @@ -293,7 +302,16 @@ abstract class CommonService //일괄작업처리 $entities = []; foreach ($uids as $uid) { - $entities[] = $this->batchjob_process($uid, $dto->toArray()); + $entity = $this->getEntity($uid); + if (!$entity) { + throw new \Exception(__METHOD__ . "에서 오류발생: {$uid}에 해당하는 정보을 찾을수 없습니다."); + } + // 💡 동적으로 가져온 Entity 클래스 이름으로 instanceof 검사 + $entityClass = $this->getEntityClass(); + if (!$entity instanceof $entityClass) { + throw new RuntimeException(__METHOD__ . "에서 오류발생:Return Type은 {$entityClass}만 가능"); + } + $entities[] = $this->batchjob_process($entity, $dto->toArray()); } // 트랜잭션 완료 및 커밋 $db->transComplete(); @@ -313,20 +331,8 @@ abstract class CommonService } //삭제용 (일반) - protected function delete_process(string|int $uid): object + protected function delete_process($entity): object { - if (!$uid) { - throw new \Exception("삭제에 필요한 PrimaryKey 가 정의 되지 않았습니다."); - } - $entity = $this->getEntity($uid); - if (!$entity) { - throw new \Exception(__METHOD__ . "에서 오류발생: {$uid}에 해당하는 정보을 찾을수 없습니다."); - } - // 💡 동적으로 가져온 Entity 클래스 이름으로 instanceof 검사 - $entityClass = $this->getEntityClass(); - if (!$entity instanceof $entityClass) { - throw new RuntimeException(__METHOD__ . "에서 오류발생:Return Type은 {$entityClass}만 가능"); - } //삭제 $result = $this->model->delete($entity->getPK()); log_message('debug', $this->model->getLastQuery()); @@ -341,8 +347,20 @@ abstract class CommonService { $db = \Config\Database::connect(); try { + if (!$uid) { + throw new \Exception("삭제에 필요한 PrimaryKey 가 정의 되지 않았습니다."); + } + $entity = $this->getEntity($uid); + if (!$entity) { + throw new \Exception(__METHOD__ . "에서 오류발생: {$uid}에 해당하는 정보을 찾을수 없습니다."); + } + // 💡 동적으로 가져온 Entity 클래스 이름으로 instanceof 검사 + $entityClass = $this->getEntityClass(); + if (!$entity instanceof $entityClass) { + throw new RuntimeException(__METHOD__ . "에서 오류발생:Return Type은 {$entityClass}만 가능"); + } $db->transException(true)->transStart(); - $entity = $this->delete_process($uid); + $entity = $this->delete_process($entity); // 트랜잭션 완료 및 커밋 $db->transComplete(); return $entity; @@ -361,10 +379,10 @@ abstract class CommonService } //삭제용 (배치 작업) - protected function batchjob_delete_process(string|int $uid): object + protected function batchjob_delete_process($entity): object { // delete_process를 호출하여 로직 재사용 (CommonEntity 로드 및 유효성 검사) - $entity = $this->delete_process($uid); + $entity = $this->delete_process($entity); return $entity; } @@ -376,7 +394,16 @@ abstract class CommonService //일괄작업처리 $entities = []; foreach ($uids as $uid) { - $entities[] = $this->batchjob_delete_process($uid); + $entity = $this->getEntity($uid); + if (!$entity) { + throw new \Exception(__METHOD__ . "에서 오류발생: {$uid}에 해당하는 정보을 찾을수 없습니다."); + } + // 💡 동적으로 가져온 Entity 클래스 이름으로 instanceof 검사 + $entityClass = $this->getEntityClass(); + if (!$entity instanceof $entityClass) { + throw new RuntimeException(__METHOD__ . "에서 오류발생:Return Type은 {$entityClass}만 가능"); + } + $entities[] = $this->batchjob_delete_process($entity); } // 트랜잭션 완료 및 커밋 $db->transComplete(); diff --git a/app/Services/Equipment/ServerPartService.php b/app/Services/Equipment/ServerPartService.php index cc850b3..89c9ec3 100644 --- a/app/Services/Equipment/ServerPartService.php +++ b/app/Services/Equipment/ServerPartService.php @@ -146,6 +146,11 @@ class ServerPartService extends EquipmentService //서버파트 수정 return parent::modify_process($entity, $formDatas); } + protected function delete_process($entity): ServerPartEntity + { + $this->getPartService($entity->getType())->detachFromServerPart($entity); + return parent::delete_process($entity); + } //List 검색용 //FormFilter 조건절 처리 //검색어조건절처리 @@ -195,7 +200,7 @@ class ServerPartService extends EquipmentService ]) as $entity ) { $this->getPartService($entity->getType())->detachFromServerPart($entity); - parent::delete($entity->getPK()); + parent::delete_process($entity); } } } diff --git a/app/Services/Equipment/ServerService.php b/app/Services/Equipment/ServerService.php index 097d07b..9355e0e 100644 --- a/app/Services/Equipment/ServerService.php +++ b/app/Services/Equipment/ServerService.php @@ -268,8 +268,8 @@ class ServerService extends EquipmentService $this->getFormService()->setFormRules('modify', $fields); parent::modify_process($entity, $formDatas); //서버파트정보처리 - service('part_ipservice')->detachFromService($entity); - service('part_switchservice')->detachFromService($entity); - service('equipment_serverpartservice')->detachFromService($entity); + service('part_ipservice')->detachFromServer($entity); + service('part_switchservice')->detachFromServer($entity); + service('equipment_serverpartservice')->detachFromServer($entity); } }