fix default respone generation

This commit is contained in:
Dennis Eichhorn 2023-07-26 09:18:05 +00:00
parent e12846cdc4
commit a5b89b1183

View File

@ -38,10 +38,8 @@ use Modules\Tasks\Models\TaskType;
use phpOMS\Localization\BaseStringL11n; use phpOMS\Localization\BaseStringL11n;
use phpOMS\Localization\ISO639x1Enum; use phpOMS\Localization\ISO639x1Enum;
use phpOMS\Message\Http\RequestStatusCode; use phpOMS\Message\Http\RequestStatusCode;
use phpOMS\Message\NotificationLevel;
use phpOMS\Message\RequestAbstract; use phpOMS\Message\RequestAbstract;
use phpOMS\Message\ResponseAbstract; use phpOMS\Message\ResponseAbstract;
use phpOMS\Model\Message\FormValidation;
/** /**
* Api controller for the tickets module. * Api controller for the tickets module.
@ -90,16 +88,15 @@ final class ApiController extends Controller
public function apiTicketCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void public function apiTicketCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{ {
if (!empty($val = $this->validateTicketCreate($request))) { if (!empty($val = $this->validateTicketCreate($request))) {
$response->data[$request->uri->__toString()] = new FormValidation($val); $response->header->status = RequestStatusCode::R_400;
$response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val);
return; return;
} }
$ticket = $this->createTicketFromRequest($request); $ticket = $this->createTicketFromRequest($request);
$this->createModel($request->header->account, $ticket, TicketMapper::class, 'ticket', $request->getOrigin()); $this->createModel($request->header->account, $ticket, TicketMapper::class, 'ticket', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Ticket', 'Ticket successfully created.', $ticket); $this->createStandardCreateResponse($request, $response, $ticket);
} }
/** /**
@ -144,7 +141,7 @@ final class ApiController extends Controller
{ {
/** @var \Modules\Support\Models\Ticket $ticket */ /** @var \Modules\Support\Models\Ticket $ticket */
$ticket = TicketMapper::get()->where('id', (int) $request->getData('id'))->execute(); $ticket = TicketMapper::get()->where('id', (int) $request->getData('id'))->execute();
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Ticket', 'Ticket successfully returned.', $ticket); $this->createStandardReturnResponse($request, $response, $ticket);
} }
/** /**
@ -164,10 +161,10 @@ final class ApiController extends Controller
{ {
/** @var \Modules\Support\Models\Ticket $old */ /** @var \Modules\Support\Models\Ticket $old */
$old = TicketMapper::get()->where('id', (int) $request->getData('id'))->execute(); $old = TicketMapper::get()->where('id', (int) $request->getData('id'))->execute();
$old = clone $old; $new = $this->updateTicketFromRequest($request, clone $old);
$new = $this->updateTicketFromRequest($request);
$this->updateModel($request->header->account, $old, $new, TicketMapper::class, 'ticket', $request->getOrigin()); $this->updateModel($request->header->account, $old, $new, TicketMapper::class, 'ticket', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Ticket', 'Ticket successfully updated.', $new); $this->createStandardUpdateResponse($request, $response, $new);
} }
/** /**
@ -179,12 +176,9 @@ final class ApiController extends Controller
* *
* @since 1.0.0 * @since 1.0.0
*/ */
private function updateTicketFromRequest(RequestAbstract $request) : Ticket private function updateTicketFromRequest(RequestAbstract $request, Ticket $new) : Ticket
{ {
/** @var Ticket $ticket */ return $new;
$ticket = TicketMapper::get()->where('id', (int) ($request->getData('id')))->execute();
return $ticket;
} }
/** /**
@ -226,8 +220,8 @@ final class ApiController extends Controller
public function apiTicketElementCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void public function apiTicketElementCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{ {
if (!empty($val = $this->validateTicketElementCreate($request))) { if (!empty($val = $this->validateTicketElementCreate($request))) {
$response->data['ticket_element_create'] = new FormValidation($val); $response->header->status = RequestStatusCode::R_400;
$response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val);
return; return;
} }
@ -244,7 +238,7 @@ final class ApiController extends Controller
$this->createModel($request->header->account, $element, TicketElementMapper::class, 'ticketelement', $request->getOrigin()); $this->createModel($request->header->account, $element, TicketElementMapper::class, 'ticketelement', $request->getOrigin());
$this->updateModel($request->header->account, $old, $ticket->task, TaskMapper::class, 'ticket', $request->getOrigin()); $this->updateModel($request->header->account, $old, $ticket->task, TaskMapper::class, 'ticket', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Ticket element', 'Ticket element successfully created.', $element); $this->createStandardCreateResponse($request, $response, $element);
} }
/** /**
@ -285,7 +279,7 @@ final class ApiController extends Controller
{ {
/** @var \Modules\Support\Models\TicketElement $ticket */ /** @var \Modules\Support\Models\TicketElement $ticket */
$ticket = TicketElementMapper::get()->where('id', (int) $request->getData('id'))->execute(); $ticket = TicketElementMapper::get()->where('id', (int) $request->getData('id'))->execute();
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Ticket element', 'Ticket element successfully returned.', $ticket); $this->createStandardReturnResponse($request, $response, $ticket);
} }
/** /**
@ -305,12 +299,11 @@ final class ApiController extends Controller
{ {
/** @var \Modules\Support\Models\TicketElement $old */ /** @var \Modules\Support\Models\TicketElement $old */
$old = TicketElementMapper::get()->where('id', (int) $request->getData('id'))->execute(); $old = TicketElementMapper::get()->where('id', (int) $request->getData('id'))->execute();
$old = clone $old; $new = $this->updateTicketElementFromRequest($request, $response, clone $old);
$new = $this->updateTicketElementFromRequest($request, $response);
$this->updateModel($request->header->account, $old, $new, TicketElementMapper::class, 'ticketelement', $request->getOrigin()); $this->updateModel($request->header->account, $old, $new, TicketElementMapper::class, 'ticketelement', $request->getOrigin());
//$this->updateModel($request->header->account, $ticket, $ticket, TicketMapper::class, 'ticket', $request->getOrigin()); //$this->updateModel($request->header->account, $ticket, $ticket, TicketMapper::class, 'ticket', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Ticket element', 'Ticket element successfully updated.', $new); $this->createStandardUpdateResponse($request, $response, $new);
} }
/** /**
@ -322,15 +315,12 @@ final class ApiController extends Controller
* *
* @since 1.0.0 * @since 1.0.0
*/ */
private function updateTicketElementFromRequest(RequestAbstract $request, ResponseAbstract $response) : TicketElement private function updateTicketElementFromRequest(RequestAbstract $request, ResponseAbstract $response, TicketElement $new) : TicketElement
{ {
/** @var TicketElement $element */ $request->setData('id', $new->taskElement->task, true);
$element = TicketElementMapper::get()->with('taskElement')->where('id', (int) ($request->getData('id')))->execute();
$request->setData('id', $element->taskElement->task, true);
$this->app->moduleManager->get('Tasks')->apiTaskElementSet($request, $response); $this->app->moduleManager->get('Tasks')->apiTaskElementSet($request, $response);
return $element; return $new;
} }
/** /**
@ -349,16 +339,15 @@ final class ApiController extends Controller
public function apiSupportAppCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void public function apiSupportAppCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{ {
if (!empty($val = $this->validateSupportAppCreate($request))) { if (!empty($val = $this->validateSupportAppCreate($request))) {
$response->data['qa_app_create'] = new FormValidation($val); $response->header->status = RequestStatusCode::R_400;
$response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val);
return; return;
} }
$app = $this->createSupportAppFromRequest($request); $app = $this->createSupportAppFromRequest($request);
$this->createModel($request->header->account, $app, SupportAppMapper::class, 'app', $request->getOrigin()); $this->createModel($request->header->account, $app, SupportAppMapper::class, 'app', $request->getOrigin());
$this->createStandardCreateResponse($request, $response, $app);
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'App', 'App successfully created.', $app);
} }
/** /**
@ -414,8 +403,8 @@ final class ApiController extends Controller
public function apiTicketAttributeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void public function apiTicketAttributeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{ {
if (!empty($val = $this->validateTicketAttributeCreate($request))) { if (!empty($val = $this->validateTicketAttributeCreate($request))) {
$response->data['attribute_create'] = new FormValidation($val); $response->header->status = RequestStatusCode::R_400;
$response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val);
return; return;
} }
@ -431,7 +420,7 @@ final class ApiController extends Controller
$attribute = $this->createTicketAttributeFromRequest($request); $attribute = $this->createTicketAttributeFromRequest($request);
$this->createModel($request->header->account, $attribute, TicketAttributeMapper::class, 'attribute', $request->getOrigin()); $this->createModel($request->header->account, $attribute, TicketAttributeMapper::class, 'attribute', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute', 'Attribute successfully created', $attribute); $this->createStandardCreateResponse($request, $response, $attribute);
} }
/** /**
@ -491,15 +480,15 @@ final class ApiController extends Controller
public function apiTicketAttributeTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void public function apiTicketAttributeTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{ {
if (!empty($val = $this->validateTicketAttributeTypeL11nCreate($request))) { if (!empty($val = $this->validateTicketAttributeTypeL11nCreate($request))) {
$response->data['attr_type_l11n_create'] = new FormValidation($val); $response->header->status = RequestStatusCode::R_400;
$response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val);
return; return;
} }
$attrL11n = $this->createTicketAttributeTypeL11nFromRequest($request); $attrL11n = $this->createTicketAttributeTypeL11nFromRequest($request);
$this->createModel($request->header->account, $attrL11n, TicketAttributeTypeL11nMapper::class, 'attr_type_l11n', $request->getOrigin()); $this->createModel($request->header->account, $attrL11n, TicketAttributeTypeL11nMapper::class, 'attr_type_l11n', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $attrL11n); $this->createStandardCreateResponse($request, $response, $attrL11n);
} }
/** /**
@ -560,16 +549,15 @@ final class ApiController extends Controller
public function apiTicketAttributeTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void public function apiTicketAttributeTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{ {
if (!empty($val = $this->validateTicketAttributeTypeCreate($request))) { if (!empty($val = $this->validateTicketAttributeTypeCreate($request))) {
$response->data['attr_type_create'] = new FormValidation($val); $response->header->status = RequestStatusCode::R_400;
$response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val);
return; return;
} }
$attrType = $this->createTicketAttributeTypeFromRequest($request); $attrType = $this->createTicketAttributeTypeFromRequest($request);
$this->createModel($request->header->account, $attrType, TicketAttributeTypeMapper::class, 'attr_type', $request->getOrigin()); $this->createModel($request->header->account, $attrType, TicketAttributeTypeMapper::class, 'attr_type', $request->getOrigin());
$this->createStandardCreateResponse($request, $response, $attrType);
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute type', 'Attribute type successfully created', $attrType);
} }
/** /**
@ -627,8 +615,8 @@ final class ApiController extends Controller
public function apiTicketAttributeValueCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void public function apiTicketAttributeValueCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{ {
if (!empty($val = $this->validateTicketAttributeValueCreate($request))) { if (!empty($val = $this->validateTicketAttributeValueCreate($request))) {
$response->data['attr_value_create'] = new FormValidation($val); $response->header->status = RequestStatusCode::R_400;
$response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val);
return; return;
} }
@ -645,7 +633,7 @@ final class ApiController extends Controller
); );
} }
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute value', 'Attribute value successfully created', $attrValue); $this->createStandardCreateResponse($request, $response, $attrValue);
} }
/** /**
@ -712,15 +700,15 @@ final class ApiController extends Controller
public function apiTicketAttributeValueL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void public function apiTicketAttributeValueL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{ {
if (!empty($val = $this->validateTicketAttributeValueL11nCreate($request))) { if (!empty($val = $this->validateTicketAttributeValueL11nCreate($request))) {
$response->data['attr_value_l11n_create'] = new FormValidation($val); $response->header->status = RequestStatusCode::R_400;
$response->header->status = RequestStatusCode::R_400; $this->createInvalidCreateResponse($request, $response, $val);
return; return;
} }
$attrL11n = $this->createTicketAttributeValueL11nFromRequest($request); $attrL11n = $this->createTicketAttributeValueL11nFromRequest($request);
$this->createModel($request->header->account, $attrL11n, TicketAttributeValueL11nMapper::class, 'attr_value_l11n', $request->getOrigin()); $this->createModel($request->header->account, $attrL11n, TicketAttributeValueL11nMapper::class, 'attr_value_l11n', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $attrL11n); $this->createStandardCreateResponse($request, $response, $attrL11n);
} }
/** /**