diff --git a/Controller/ApiTraitController.php b/Controller/ApiAttributeTraitController.php similarity index 99% rename from Controller/ApiTraitController.php rename to Controller/ApiAttributeTraitController.php index ed01d89..d9a158c 100644 --- a/Controller/ApiTraitController.php +++ b/Controller/ApiAttributeTraitController.php @@ -24,7 +24,7 @@ use phpOMS\Localization\BaseStringL11n; use phpOMS\Localization\ISO639x1Enum; use phpOMS\Message\RequestAbstract; -trait ApiTraitController +trait ApiAttributeTraitController { /** * Method to create item attribute from request. diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 7bfdaa8..28508c8 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -27,7 +27,6 @@ use Modules\Attribute\Models\NullAttributeValue; use phpOMS\Localization\BaseStringL11n; use phpOMS\Localization\ISO639x1Enum; use phpOMS\Message\Http\RequestStatusCode; -use phpOMS\Message\NotificationLevel; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; use phpOMS\Model\Message\FormValidation; @@ -58,8 +57,8 @@ final class ApiController extends Controller public function apiAttributeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { if (!empty($val = $this->validateAttributeCreate($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; } @@ -67,7 +66,8 @@ final class ApiController extends Controller $attribute = $this->createAttributeFromRequest($request); $this->createModel($request->header->account, $attribute, AttributeMapper::class, 'attribute', $request->getOrigin()); - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute', 'Attribute successfully created', $attribute); + $response->header->status = RequestStatusCode::R_400; + $this->createStandardCreateResponse($request, $response, $attribute); } /** @@ -137,15 +137,15 @@ final class ApiController extends Controller public function apiAttributeTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { if (!empty($val = $this->validateAttributeTypeL11nCreate($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; } $attrL11n = $this->createAttributeTypeL11nFromRequest($request); $this->createModel($request->header->account, $attrL11n, AttributeTypeL11nMapper::class, 'attr_type_l11n', $request->getOrigin()); - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $attrL11n); + $this->createStandardCreateResponse($request, $response, $attrL11n); } /** @@ -206,16 +206,15 @@ final class ApiController extends Controller public function apiAttributeTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { if (!empty($val = $this->validateAttributeTypeCreate($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; } $attrType = $this->createAttributeTypeFromRequest($request); $this->createModel($request->header->account, $attrType, AttributeTypeMapper::class, 'attr_type', $request->getOrigin()); - - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute type', 'Attribute type successfully created', $attrType); + $this->createStandardCreateResponse($request, $response, $attrType); } /** @@ -232,7 +231,7 @@ final class ApiController extends Controller $attrType = new AttributeType($request->getDataString('name') ?? ''); $attrType->datatype = $request->getDataInt('datatype') ?? 0; $attrType->custom = $request->getDataBool('custom') ?? false; - $attrType->isRequired = (bool) ($request->getData('is_required') ?? false); + $attrType->isRequired = $request->getDataBool('is_required') ?? false; $attrType->validationPattern = $request->getDataString('validation_pattern') ?? ''; $attrType->setL11n($request->getDataString('title') ?? '', $request->getDataString('language') ?? ISO639x1Enum::_EN); $attrType->setFields($request->getDataInt('fields') ?? 0); @@ -277,8 +276,8 @@ final class ApiController extends Controller public function apiAttributeValueCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { if (!empty($val = $this->validateAttributeValueCreate($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; } @@ -295,7 +294,7 @@ final class ApiController extends Controller ); } - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute value', 'Attribute value successfully created', $attrValue); + $this->createStandardCreateResponse($request, $response, $attrValue); } /** @@ -362,15 +361,15 @@ final class ApiController extends Controller public function apiAttributeValueL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { if (!empty($val = $this->validateAttributeValueL11nCreate($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; } $attrL11n = $this->createAttributeValueL11nFromRequest($request); $this->createModel($request->header->account, $attrL11n, AttributeValueL11nMapper::class, 'attr_value_l11n', $request->getOrigin()); - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $attrL11n); + $this->createStandardCreateResponse($request, $response, $attrL11n); } /** diff --git a/Controller/ApiLocalizationTraitController.php b/Controller/ApiLocalizationTraitController.php new file mode 100644 index 0000000..3d0aa3d --- /dev/null +++ b/Controller/ApiLocalizationTraitController.php @@ -0,0 +1,183 @@ +ref = $request->getDataInt('ref') ?? 0; + $l11n->type = new NullBaseStringL11nType($request->getDataInt('type') ?? 0); + $l11n->setLanguage( + $request->getDataString('language') ?? $request->header->l11n->language + ); + $l11n->content = $request->getDataString('content') ?? ''; + + return $l11n; + } + + /** + * Validate l11n create request + * + * @param RequestAbstract $request Request + * + * @return array + * + * @since 1.0.0 + */ + private function validateL11nCreate(RequestAbstract $request) : array + { + $val = []; + if (($val['ref'] = !$request->hasData('ref')) + || ($val['type'] = !$request->hasData('type')) + || ($val['content'] = !$request->hasData('content')) + ) { + return $val; + } + + return []; + } + + /** + * Method to update L11n from request. + * + * @param RequestAbstract $request Request + * @param BaseStringL11n $new Model to modify + * + * @return BaseStringL11n + * + * @todo: consider to move all these FromRequest functions to the attribute module since they are the same in every module! + * + * @since 1.0.0 + */ + public function updateL11nFromRequest(RequestAbstract $request, BaseStringL11n $new) : BaseStringL11n + { + $new->setLanguage( + $request->getDataString('language') ?? $new->language + ); + $new->content = $request->getDataString('content') ?? $new->content; + + return $new; + } + + /** + * Validate L11n update request + * + * @param RequestAbstract $request Request + * + * @return array + * + * @todo: implement + * + * @since 1.0.0 + */ + private function validateL11nUpdate(RequestAbstract $request) : array + { + $val = []; + if (($val['id'] = !$request->hasData('id'))) { + return $val; + } + + return []; + } + + /** + * Method to create l11n type from request. + * + * @param RequestAbstract $request Request + * + * @return BaseStringL11nType + * + * @since 1.0.0 + */ + private function createL11nTypeFromRequest(RequestAbstract $request) : BaseStringL11nType + { + $l11nType = new BaseStringL11nType(); + $l11nType->title = $request->getDataString('title') ?? ''; + $l11nType->isRequired = $request->getDataBool('is_required') ?? false; + + return $l11nType; + } + + /** + * Validate l11n type create request + * + * @param RequestAbstract $request Request + * + * @return array + * + * @since 1.0.0 + */ + private function validateL11nTypeCreate(RequestAbstract $request) : array + { + $val = []; + if (($val['title'] = !$request->hasData('title'))) { + return $val; + } + + return []; + } + + /** + * Method to update l11n type from request. + * + * @param RequestAbstract $request Request + * + * @return BaseStringL11nType + * + * @since 1.0.0 + */ + private function updateL11nTypeFromRequest(RequestAbstract $request, BaseStringL11nType $new) : BaseStringL11nType + { + $new->title = $request->getDataString('title') ?? $new->title; + $new->isRequired = $request->getDataBool('is_required') ?? $new->isRequired; + + return $new; + } + + /** + * Validate l11n type update request + * + * @param RequestAbstract $request Request + * + * @return array + * + * @since 1.0.0 + */ + private function validateL11nTypeUpdate(RequestAbstract $request) : array + { + $val = []; + if (($val['id'] = !$request->hasData('id'))) { + return $val; + } + + return []; + } +} diff --git a/Models/Attribute.php.out b/Models/Attribute.php.out deleted file mode 100644 index 823a5c2..0000000 --- a/Models/Attribute.php.out +++ /dev/null @@ -1,121 +0,0 @@ -type = new NullAttributeType(); - $this->value = new NullAttributeValue(); - } - - /** - * Creates a deep clone of the object. - * - * @return self - * - * @since 1.0.0 - */ - public function deepClone() : self - { - $clone = clone $this; - $clone->value = clone $this->value; - - return $clone; - } - - /** - * Returns the id of the attribute. - * - * @return int - * - * @since 1.0.0 - */ - public function getId() : int - { - return $this->id; - } - - /** - * Converts the attribute to an array. - * - * @return array - * - * @since 1.0.0 - */ - public function toArray() : array - { - return [ - 'id' => $this->id, - 'ref' => $this->ref, - 'type' => $this->type, - 'value' => $this->value, - ]; - } - - /** - * {@inheritdoc} - */ - public function jsonSerialize() : mixed - { - return $this->toArray(); - } -}