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(): ClientService { if (!$this->_service) { $this->_service = new ClientService(); } return $this->_service; } //Index,FieldForm관련 //생성관련 protected function create_process(array $formDatas): ClientEntity { //생성 전처리, 관리자 UID는 현재 인증된 사용자로 설정 $formDatas['user_uid'] = $this->getService()->getMyAuth()->getUIDByAuthInfo(); //생성처리 $entity = parent::create_process($formDatas); // 생성 후처리, Client 코드값 재정의 $format = env("Client.Prefix.{$formDatas['site']}.code.format", false); if (!$format) { throw new \Exception(__METHOD__ . "에서 code의 code의 format[Client.Prefix.{$formDatas['site']}.code.format] 정의되지 않았습니다."); } $this->getService()->modify( $entity, ['code' => sprintf($format, (int) $entity->getPK() + 1000)] ); return $entity; } //수정관련 protected function modify_process(mixed $entity, array $formDatas): ClientEntity { //수정 전처리, 관리자 UID는 현재 인증된 사용자로 설정 $formDatas['user_uid'] = $this->getService()->getMyAuth()->getUIDByAuthInfo(); //수정처리 return parent::modify_process($entity, $formDatas); } protected function doValidation(Validation $validation, string $field, string $rule): Validation { switch ($field) { case 'role': //아래 Rule Array는 필드명.* checkbox를 사용 $validation->setRule("{$field}.*", $field, $rule); break; default: $validation = parent::doValidation($validation, $field, $rule); break; } return $validation; } //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 'detail': $this->service = $this->getService(); $this->control = $this->getService()->getControlDatas(); $this->getService()->getHelper()->setViewDatas($this->getViewDatas()); $actionTemplate = $this->request->getVar('ActionTemplate') ?? $actionTemplate ?? 'client'; 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; } public function detail(mixed $uid): RedirectResponse|string { try { $this->getService()->setAction(__FUNCTION__); $this->getService()->setFormFields(); $this->getService()->setFormFilters(); $this->getService()->setFormRules(); //기본값정의 $this->getService()->setFormDatas($this->request->getGet()); $this->getService()->setFormOptions(); //일괄작업용 Fields정의 $entity = $this->getService()->getEntity($uid); if (!$entity instanceof ClientEntity) { throw new \Exception("{$uid}에 해당하는 고객정보를 찾을수 없습니다."); } $this->totalCounts = $this->getService()->getServiceService()->getTotalCountsByType(['clientinfo_uid' => $entity->getPK()]); $this->totalAmounts = $this->getService()->getServiceService()->getTotalAmounts([ 'clientinfo_uid' => $entity->getPK(), 'status' => STATUS['AVAILABLE'] ]); //서비스별 미납 Count $this->unPaids = $this->getService()->getPaymentService()->getUnPaids('clientinfo_uid', [ 'clientinfo_uid' => $entity->getPK() ]); $this->serviceEntities = $this->getService()->getServiceService()->getEntities(['clientinfo_uid' => $entity->getPK()]); $this->entity = $entity; helper(['form']); return $this->getResultSuccess(); } catch (\Exception $e) { return $e->getMessage(); // 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) { 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()); } } }