content_title = lang("{$this->getService()->getClassName()}.title"); $this->class_path .= $this->getService()->getClassName(); $this->uri_path .= strtolower($this->getService()->getClassName('/')) . '/'; // $this->view_path .= strtolower($this->getService()->getClassName()) . DIRECTORY_SEPARATOR; } public function getService(): ServiceService { if ($this->_service === null) { $this->_service = new ServiceService(); } return $this->_service; } //Index,FieldForm관련 protected function getResultSuccess(string $message = MESSAGES["SUCCESS"], ?string $actionTemplate = null): RedirectResponse|string { switch ($this->getService()->getAction()) { case 'create_form': case 'modify_form': case 'addServer_form': case 'view': case 'index': $this->service = $this->getService(); $this->control = $this->getService()->getControlDatas(); $this->getService()->getHelper()->setViewDatas($this->getViewDatas()); $actionTemplate = $this->request->getVar('ActionTemplate') ?? $actionTemplate ?? 'service'; if ($actionTemplate) { $view_file = $this->view_path . $actionTemplate . DIRECTORY_SEPARATOR . $this->getService()->getAction(); } else { $view_file = $this->view_path . $this->getService()->getAction(); } $result = view($view_file, ['viewDatas' => $this->getViewDatas()]); break; case 'history': $result = redirect()->to($this->request->getGET('return_url'))->with('error', $message); break; default: $result = parent::getResultSuccess($message, $actionTemplate); break; } return $result; } //생성관련 protected function create_form_process(): void { $formDatas = $this->getService()->getFormDatas(); $formDatas['location'] = 'chiba'; $formDatas['rack'] = '100000'; $formDatas['line'] = '300000'; $formDatas['type'] = 'normal'; $formDatas['billing_at'] = date("Y-m-d"); $formDatas['start_at'] = date("Y-m-d"); $formDatas['status'] = ServiceEntity::DEFAULT_STATUS; $this->getService()->setFormDatas($formDatas); parent::create_form_process(); } //수정관련 protected function modify_form_process(mixed $entity): ServiceEntity { $serverEntity = $this->getService()->getServerService()->getEntity($entity->getServerInfoUID()); if (!$serverEntity instanceof ServerEntity) { throw new \Exception("[{$entity->getServerInfoUID()}]에 대한 서버정보를 찾을 수 없습니다."); } $this->serverEntity = $serverEntity; return parent::modify_form_process($entity); } //View 관련 protected function view_process(mixed $entity): ServiceEntity { $serverEntity = $this->getService()->getServerService()->getEntity($entity->getServerInfoUID()); if (!$serverEntity instanceof ServerEntity) { throw new \Exception("[{$entity->getServerInfoUID()}]에 대한 서버정보를 찾을 수 없습니다."); } $this->serverEntity = $serverEntity; return parent::view_process($entity); } //List 관련 protected function index_process(array $entities = []): array { //서비스별 미납 Count $this->unPaids = $this->getService()->getPaymentService()->getUnPaids('serviceinfo_uid'); //서비스별 서버리스트 $childServers = []; foreach ($this->getService()->getEntities() as $entity) { $entities[] = $entity; $childServers[$entity->getPK()] = $this->getService()->getServerService()->getEntities(['serviceinfo_uid' => $entity->getPK()]); } $this->childServers = $childServers; return $entities; } //대체서버선정 public function addServer_form(mixed $uid): RedirectResponse|string { try { $this->getService()->setAction(__FUNCTION__); $this->getService()->setFormFields(['serverinfo_uid']); //전달값정의 $this->getService()->setFormDatas($this->request->getGet()); $this->getService()->setFormFilters(); $this->getService()->setFormRules(); $this->getService()->setFormOptions(); //기존 Entity 가져오기 $entity = $this->getService()->getEntity($uid); if (!$entity instanceof ServiceEntity) { throw new \Exception("{$uid}에 대한 정보를 찾을수 없습니다."); } $this->entity = $entity; helper(['form']); $this->forms = ['attributes' => ['method' => "post",], 'hiddens' => []]; return $this->getResultSuccess(); } catch (\Exception $e) { return $this->getResultFail($e->getMessage()); } } //대체서버 등록 public function addServer(int $uid): RedirectResponse|string { //Transaction Start $db = \Config\Database::connect(); $db->transStart(); try { $this->getService()->setAction(__FUNCTION__); $this->getService()->setFormFields(['serverinfo_uid']); //전달값정의 $this->getService()->setFormDatas($this->request->getPost()); $this->getService()->setFormFilters(); $this->getService()->setFormRules(); $this->doValidations(); //기존 Entity 가져오기 $entity = $this->getService()->getEntity($uid); if (!$entity instanceof ServiceEntity) { throw new \Exception("{$uid}에 대한 정보를 찾을수 없습니다."); } $this->entity = $this->getService()->addServer($entity, $this->getService()->getFormDatas()); $db->transCommit(); return ""; } catch (\Exception $e) { $db->transRollback(); return $this->getResultFail($e->getMessage()); } } //대체서버를 MAIN서버로 설정 public function changeServer(mixed $uid): RedirectResponse|string { //Transaction Start $db = \Config\Database::connect(); $db->transStart(); try { $this->getService()->setAction(__FUNCTION__); $this->getService()->setFormFields(['serverinfo_uid']); //전달값정의 $this->getService()->setFormDatas($this->request->getGet()); $this->getService()->setFormFilters(); $this->getService()->setFormRules(); $this->doValidations(); //기존 Entity 가져오기 $entity = $this->getService()->getEntity($uid); if (!$entity instanceof ServiceEntity) { throw new \Exception("{$uid}에 대한 정보를 찾을수 없습니다."); } //서버정보설정 $this->getService()->changeServer($entity, $this->getService()->getFormDatas()); $db->transCommit(); return $this->getResultSuccess('메인서버 설정이 바뀌었습니다.'); } catch (\Exception $e) { $db->transRollback(); return $this->getResultFail($e->getMessage()); } } //서비스 서버해지 public function terminateServer(mixed $uid): RedirectResponse|string { //Transaction Start $db = \Config\Database::connect(); $db->transStart(); try { $this->getService()->setAction(__FUNCTION__); $this->getService()->setFormFields(['serverinfo_uid']); //전달값정의 $this->getService()->setFormDatas($this->request->getGet()); //기존 Entity 가져오기 $entity = $this->getService()->getEntity($uid); if (!$entity instanceof ServiceEntity) { throw new \Exception("{$uid}에 대한 정보를 찾을수 없습니다."); } $formDatas = $this->getService()->getFormDatas(); $this->getService()->terminateServer($entity, $formDatas); $db->transCommit(); return $this->getResultSuccess('서버해지가 완료되었습니다.'); } catch (\Exception $e) { $db->transRollback(); return $this->getResultFail($e->getMessage()); } } public function history(int $uid): RedirectResponse|string { //Transaction Start $db = \Config\Database::connect(); $db->transStart(); try { $this->getService()->setAction(__FUNCTION__); $this->getService()->setFormFields(['history']); $this->getService()->setFormFilters(); $this->getService()->setFormRules(); //전달값정의 $this->getService()->setFormDatas($this->request->getPost()); $this->doValidations(); //기존 Entity 가져오기 $entity = $this->getService()->getEntity($uid); if (!$entity instanceof ServiceEntity) { throw new \Exception("{$uid}에 대한 정보를 찾을수 없습니다."); } $this->entity = $this->getService()->history($entity, $this->getService()->getFormDatas()); $db->transCommit(); return $this->getResultSuccess('서비스 비고가 수정되었습니다.'); } catch (\Exception $e) { $db->transRollback(); return $this->getResultFail($e->getMessage()); } } }