79 lines
2.3 KiB
PHP
79 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace App\Controllers\Ajax;
|
|
|
|
use CodeIgniter\HTTP\RequestInterface;
|
|
use CodeIgniter\HTTP\ResponseInterface;
|
|
use Psr\Log\LoggerInterface;
|
|
|
|
use App\Exceptions\FormValidationException;
|
|
|
|
class InquiryController extends AjaxController
|
|
{
|
|
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
|
|
{
|
|
parent::initController($request, $response, $logger);
|
|
if ($this->service === null) {
|
|
$this->service = service('inquiryservice');
|
|
}
|
|
$this->addActionPaths('Inquiry');
|
|
}
|
|
//Action작업관련
|
|
//기본 함수 작업
|
|
//Custom 추가 함수
|
|
|
|
public function create(): ResponseInterface
|
|
{
|
|
log_message('error', 'HIT InquiryController::create');
|
|
|
|
if (!$this->request->isAJAX()) {
|
|
return $this->response->setStatusCode(400)->setJSON([
|
|
'ok' => false,
|
|
'message' => 'Invalid request'
|
|
]);
|
|
}
|
|
|
|
try {
|
|
$formDatas = $this->request->getPost();
|
|
log_message('error', 'POST=' . json_encode($formDatas, JSON_UNESCAPED_UNICODE));
|
|
|
|
$entity = $this->service->create($formDatas);
|
|
|
|
return $this->response->setStatusCode(201)->setJSON([
|
|
'ok' => true,
|
|
'message' => '문의가 접수되었습니다.',
|
|
'data' => ['pk' => $entity->getPK()],
|
|
]);
|
|
|
|
} catch (FormValidationException $e) {
|
|
log_message('error', 'CAUGHT FormValidationException: ' . print_r($e->getErrors(), true));
|
|
|
|
return $this->response->setStatusCode(422)->setJSON([
|
|
'ok' => false,
|
|
'message' => '입력값을 확인해 주세요.',
|
|
'errors' => $e->getErrors(),
|
|
]);
|
|
|
|
} catch (\Throwable $e) {
|
|
// ✅ 혹시 서비스에서 예외를 감싸버린 경우에도 에러를 최대한 복구
|
|
$errors = service('validation')->getErrors();
|
|
if (!empty($errors)) {
|
|
log_message('error', 'FALLBACK validation errors: ' . print_r($errors, true));
|
|
|
|
return $this->response->setStatusCode(422)->setJSON([
|
|
'ok' => false,
|
|
'message' => '입력값을 확인해 주세요.',
|
|
'errors' => $errors,
|
|
]);
|
|
}
|
|
|
|
log_message('error', '[AJAX create] ' . $e->getMessage());
|
|
|
|
return $this->response->setStatusCode(500)->setJSON([
|
|
'ok' => false,
|
|
'message' => '처리 중 오류가 발생했습니다.',
|
|
]);
|
|
}
|
|
}
|
|
}
|