diff --git a/Admin/Installer.php b/Admin/Installer.php index 6e518d4..9dc05c1 100755 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -94,8 +94,8 @@ final class Installer extends InstallerAbstract /** @var array $equipmentTypes */ $equipmentTypes = []; - /** @var \Modules\EquipmentManagement\Controller\ApiEquipmentController $module */ - $module = $app->moduleManager->getModuleInstance('EquipmentManagement', 'ApiEquipment'); + /** @var \Modules\EquipmentManagement\Controller\ApiEquipmentTypeController $module */ + $module = $app->moduleManager->getModuleInstance('EquipmentManagement', 'ApiEquipmentType'); /** @var array $type */ foreach ($types as $type) { @@ -155,8 +155,8 @@ final class Installer extends InstallerAbstract /** @var array $inspectionTypes */ $inspectionTypes = []; - /** @var \Modules\EquipmentManagement\Controller\ApiEquipmentController $module */ - $module = $app->moduleManager->getModuleInstance('EquipmentManagement', 'ApiEquipment'); + /** @var \Modules\EquipmentManagement\Controller\ApiInspectionTypeController $module */ + $module = $app->moduleManager->getModuleInstance('EquipmentManagement', 'ApiInspectionType'); /** @var array $type */ foreach ($types as $type) { diff --git a/Controller/ApiEquipmentAttributeController.php b/Controller/ApiEquipmentAttributeController.php index bf68e26..43be7b1 100644 --- a/Controller/ApiEquipmentAttributeController.php +++ b/Controller/ApiEquipmentAttributeController.php @@ -17,20 +17,15 @@ namespace Modules\EquipmentManagement\Controller; use Modules\Attribute\Models\Attribute; use Modules\Attribute\Models\AttributeType; use Modules\Attribute\Models\AttributeValue; -use Modules\Attribute\Models\NullAttributeType; -use Modules\Attribute\Models\NullAttributeValue; -use Modules\EquipmentManagement\Models\EquipmentAttributeMapper; -use Modules\EquipmentManagement\Models\EquipmentAttributeTypeL11nMapper; -use Modules\EquipmentManagement\Models\EquipmentAttributeTypeMapper; -use Modules\EquipmentManagement\Models\EquipmentAttributeValueL11nMapper; -use Modules\EquipmentManagement\Models\EquipmentAttributeValueMapper; +use Modules\EquipmentManagement\Models\Attribute\EquipmentAttributeMapper; +use Modules\EquipmentManagement\Models\Attribute\EquipmentAttributeTypeL11nMapper; +use Modules\EquipmentManagement\Models\Attribute\EquipmentAttributeTypeMapper; +use Modules\EquipmentManagement\Models\Attribute\EquipmentAttributeValueL11nMapper; +use Modules\EquipmentManagement\Models\Attribute\EquipmentAttributeValueMapper; 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; /** * EquipmentManagement class. @@ -42,8 +37,10 @@ use phpOMS\Model\Message\FormValidation; */ final class ApiEquipmentAttributeController extends Controller { + use \Modules\Attribute\Controller\ApiAttributeTraitController; + /** - * Api method to create equipment attribute + * Api method to create item attribute * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -57,158 +54,16 @@ final class ApiEquipmentAttributeController extends Controller */ public function apiEquipmentAttributeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { - if (!empty($val = $this->validateEquipmentAttributeCreate($request))) { - $response->data['attribute_create'] = new FormValidation($val); - $response->header->status = RequestStatusCode::R_400; + if (!empty($val = $this->validateAttributeCreate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidCreateResponse($request, $response, $val); return; } - $attribute = $this->createEquipmentAttributeFromRequest($request); + $attribute = $this->createAttributeFromRequest($request); $this->createModel($request->header->account, $attribute, EquipmentAttributeMapper::class, 'attribute', $request->getOrigin()); - - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute', 'Attribute successfully created', $attribute); - } - - /** - * Method to create equipment attribute from request. - * - * @param RequestAbstract $request Request - * - * @return Attribute - * - * @since 1.0.0 - */ - private function createEquipmentAttributeFromRequest(RequestAbstract $request) : Attribute - { - $attribute = new Attribute(); - $attribute->ref = (int) $request->getData('equipment'); - $attribute->type = new NullAttributeType((int) $request->getData('type')); - - if ($request->hasData('value')) { - $attribute->value = new NullAttributeValue((int) $request->getData('value')); - } else { - $newRequest = clone $request; - $newRequest->setData('value', $request->getData('custom'), true); - - $value = $this->createAttributeValueFromRequest($newRequest); - - $attribute->value = $value; - } - - return $attribute; - } - - /** - * Validate equipment attribute create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateEquipmentAttributeCreate(RequestAbstract $request) : array - { - $val = []; - if (($val['type'] = !$request->hasData('type')) - || ($val['value'] = (!$request->hasData('value') && !$request->hasData('custom'))) - || ($val['equipment'] = !$request->hasData('equipment')) - ) { - return $val; - } - - return []; - } - - /** - * Api method to create equipment attribute - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return void - * - * @api - * - * @since 1.0.0 - */ - public function apiEquipmentAttributeUpdate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void - { - if (!empty($val = $this->validateEquipmentAttributeUpdate($request))) { - $response->data['attribute_update'] = new FormValidation($val); - $response->header->status = RequestStatusCode::R_400; - - return; - } - - $old = EquipmentAttributeMapper::get() - ->with('type') - ->with('type/defaults') - ->with('value') - ->where('id', (int) $request->getData('id')) - ->execute(); - - $new = $this->updateEquipmentAttributeFromRequest($request, $old->deepClone()); - $this->updateModel($request->header->account, $old, $new, EquipmentAttributeMapper::class, 'attribute', $request->getOrigin()); - - if ($new->value->getValue() !== $old->value->getValue()) { - $this->updateModel($request->header->account, $old->value, $new->value, EquipmentAttributeValueMapper::class, 'attribute_value', $request->getOrigin()); - } - - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute', 'Attribute successfully updated', $new); - } - - /** - * Method to create equipment attribute from request. - * - * @param RequestAbstract $request Request - * - * @return Attribute - * - * @since 1.0.0 - */ - private function updateEquipmentAttributeFromRequest(RequestAbstract $request, Attribute $attribute) : Attribute - { - if ($attribute->type->custom) { - if ($request->hasData('value')) { - // @question: we are overwriting the old value, could there be a use case where we want to create a new value and keep the old one? - $attribute->value->setValue($request->getData('value'), $attribute->type->datatype); - } - } else { - if ($request->hasData('value')) { - // @todo: fix by only accepting the value id to be used - // this is a workaround for now because the front end doesn't allow to dynamically show default values. - $value = $attribute->type->getDefaultByValue($request->getData('value')); - - if ($value->id !== 0) { - $attribute->value = $attribute->type->getDefaultByValue($request->getData('value')); - } - } - } - - return $attribute; - } - - /** - * Validate equipment attribute create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateEquipmentAttributeUpdate(RequestAbstract $request) : array - { - $val = []; - if (($val['id'] = !$request->hasData('id')) - ) { - return $val; - } - - return []; + $this->createStandardCreateResponse($request, $response, $attribute); } /** @@ -226,58 +81,16 @@ final class ApiEquipmentAttributeController extends Controller */ public function apiEquipmentAttributeTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { - if (!empty($val = $this->validateEquipmentAttributeTypeL11nCreate($request))) { - $response->data['attr_type_l11n_create'] = new FormValidation($val); - $response->header->status = RequestStatusCode::R_400; + if (!empty($val = $this->validateAttributeTypeL11nCreate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidCreateResponse($request, $response, $val); return; } - $attrL11n = $this->createEquipmentAttributeTypeL11nFromRequest($request); + $attrL11n = $this->createAttributeTypeL11nFromRequest($request); $this->createModel($request->header->account, $attrL11n, EquipmentAttributeTypeL11nMapper::class, 'attr_type_l11n', $request->getOrigin()); - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $attrL11n); - } - - /** - * Method to create equipment attribute l11n from request. - * - * @param RequestAbstract $request Request - * - * @return BaseStringL11n - * - * @since 1.0.0 - */ - private function createEquipmentAttributeTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n - { - $attrL11n = new BaseStringL11n(); - $attrL11n->ref = $request->getDataInt('type') ?? 0; - $attrL11n->setLanguage( - $request->getDataString('language') ?? $request->header->l11n->language - ); - $attrL11n->content = $request->getDataString('title') ?? ''; - - return $attrL11n; - } - - /** - * Validate equipment attribute l11n create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateEquipmentAttributeTypeL11nCreate(RequestAbstract $request) : array - { - $val = []; - if (($val['title'] = !$request->hasData('title')) - || ($val['type'] = !$request->hasData('type')) - ) { - return $val; - } - - return []; + $this->createStandardCreateResponse($request, $response, $attrL11n); } /** @@ -295,60 +108,16 @@ final class ApiEquipmentAttributeController extends Controller */ public function apiEquipmentAttributeTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { - if (!empty($val = $this->validateEquipmentAttributeTypeCreate($request))) { - $response->data['attr_type_create'] = new FormValidation($val); - $response->header->status = RequestStatusCode::R_400; + if (!empty($val = $this->validateAttributeTypeCreate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidCreateResponse($request, $response, $val); return; } $attrType = $this->createAttributeTypeFromRequest($request); $this->createModel($request->header->account, $attrType, EquipmentAttributeTypeMapper::class, 'attr_type', $request->getOrigin()); - - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute type', 'Attribute type successfully created', $attrType); - } - - /** - * Method to create equipment attribute from request. - * - * @param RequestAbstract $request Request - * - * @return AttributeType - * - * @since 1.0.0 - */ - private function createAttributeTypeFromRequest(RequestAbstract $request) : AttributeType - { - $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->validationPattern = $request->getDataString('validation_pattern') ?? ''; - $attrType->setL11n($request->getDataString('title') ?? '', $request->getDataString('language') ?? ISO639x1Enum::_EN); - $attrType->setFields($request->getDataInt('fields') ?? 0); - - return $attrType; - } - - /** - * Validate equipment attribute create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateEquipmentAttributeTypeCreate(RequestAbstract $request) : array - { - $val = []; - if (($val['title'] = !$request->hasData('title')) - || ($val['name'] = !$request->hasData('name')) - ) { - return $val; - } - - return []; + $this->createStandardCreateResponse($request, $response, $attrType); } /** @@ -366,14 +135,19 @@ final class ApiEquipmentAttributeController extends Controller */ public function apiEquipmentAttributeValueCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { - if (!empty($val = $this->validateEquipmentAttributeValueCreate($request))) { - $response->data['attr_value_create'] = new FormValidation($val); - $response->header->status = RequestStatusCode::R_400; + if (!empty($val = $this->validateAttributeValueCreate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidCreateResponse($request, $response, $val); return; } - $attrValue = $this->createAttributeValueFromRequest($request); + /** @var \Modules\Attribute\Models\AttributeType $type */ + $type = EquipmentAttributeTypeMapper::get() + ->where('id', $request->getDataInt('type') ?? 0) + ->execute(); + + $attrValue = $this->createAttributeValueFromRequest($request, $type); $this->createModel($request->header->account, $attrValue, EquipmentAttributeValueMapper::class, 'attr_value', $request->getOrigin()); if ($attrValue->isDefault) { @@ -385,55 +159,7 @@ final class ApiEquipmentAttributeController extends Controller ); } - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute value', 'Attribute value successfully created', $attrValue); - } - - /** - * Method to create equipment attribute value from request. - * - * @param RequestAbstract $request Request - * - * @return AttributeValue - * - * @since 1.0.0 - */ - private function createAttributeValueFromRequest(RequestAbstract $request) : AttributeValue - { - /** @var AttributeType $type */ - $type = EquipmentAttributeTypeMapper::get() - ->where('id', $request->getDataInt('type') ?? 0) - ->execute(); - - $attrValue = new AttributeValue(); - $attrValue->isDefault = $request->getDataBool('default') ?? false; - $attrValue->setValue($request->getData('value'), $type->datatype); - - if ($request->hasData('title')) { - $attrValue->setL11n($request->getDataString('title') ?? '', $request->getDataString('language') ?? ISO639x1Enum::_EN); - } - - return $attrValue; - } - - /** - * Validate equipment attribute value create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateEquipmentAttributeValueCreate(RequestAbstract $request) : array - { - $val = []; - if (($val['type'] = !$request->hasData('type')) - || ($val['value'] = !$request->hasData('value')) - ) { - return $val; - } - - return []; + $this->createStandardCreateResponse($request, $response, $attrValue); } /** @@ -451,62 +177,20 @@ final class ApiEquipmentAttributeController extends Controller */ public function apiEquipmentAttributeValueL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { - if (!empty($val = $this->validateEquipmentAttributeValueL11nCreate($request))) { - $response->data['attr_value_l11n_create'] = new FormValidation($val); - $response->header->status = RequestStatusCode::R_400; + if (!empty($val = $this->validateAttributeValueL11nCreate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidCreateResponse($request, $response, $val); return; } $attrL11n = $this->createAttributeValueL11nFromRequest($request); $this->createModel($request->header->account, $attrL11n, EquipmentAttributeValueL11nMapper::class, 'attr_value_l11n', $request->getOrigin()); - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $attrL11n); + $this->createStandardCreateResponse($request, $response, $attrL11n); } /** - * Method to create equipment attribute l11n from request. - * - * @param RequestAbstract $request Request - * - * @return BaseStringL11n - * - * @since 1.0.0 - */ - private function createAttributeValueL11nFromRequest(RequestAbstract $request) : BaseStringL11n - { - $attrL11n = new BaseStringL11n(); - $attrL11n->ref = $request->getDataInt('value') ?? 0; - $attrL11n->setLanguage( - $request->getDataString('language') ?? $request->header->l11n->language - ); - $attrL11n->content = $request->getDataString('title') ?? ''; - - return $attrL11n; - } - - /** - * Validate equipment attribute l11n create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateEquipmentAttributeValueL11nCreate(RequestAbstract $request) : array - { - $val = []; - if (($val['title'] = !$request->hasData('title')) - || ($val['value'] = !$request->hasData('value')) - ) { - return $val; - } - - return []; - } - - /** - * Api method to handle api equipment attributes + * Api method to update EquipmentAttribute * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -518,17 +202,322 @@ final class ApiEquipmentAttributeController extends Controller * * @since 1.0.0 */ - public function apiEquipmentAttribute(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + public function apiEquipmentAttributeUpdate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { - if (!empty($val = $this->validateEquipmentAttributeValueL11nCreate($request))) { - $response->data['attr_value_l11n_create'] = new FormValidation($val); - $response->header->status = RequestStatusCode::R_400; + if (!empty($val = $this->validateAttributeUpdate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidUpdateResponse($request, $response, $val); return; } - $attrL11n = $this->createAttributeValueL11nFromRequest($request); - $this->createModel($request->header->account, $attrL11n, EquipmentAttributeValueL11nMapper::class, 'attr_value_l11n', $request->getOrigin()); - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $attrL11n); + /** @var Attribute $old */ + $old = EquipmentAttributeMapper::get() + ->with('type') + ->with('type/defaults') + ->with('value') + ->where('id', (int) $request->getData('id')) + ->execute(); + + $new = $this->updateAttributeFromRequest($request, clone $old); + + if ($new->id === 0) { + // Set response header to invalid request because of invalid data + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidUpdateResponse($request, $response, $new); + + return; + } + + $this->updateModel($request->header->account, $old, $new, EquipmentAttributeMapper::class, 'equipment_attribute', $request->getOrigin()); + + if ($new->value->getValue() !== $old->value->getValue()) { + $this->updateModel($request->header->account, $old->value, $new->value, EquipmentAttributeValueMapper::class, 'attribute_value', $request->getOrigin()); + } + + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Api method to delete EquipmentAttribute + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiEquipmentAttributeDelete(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateAttributeDelete($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidDeleteResponse($request, $response, $val); + + return; + } + + $equipmentAttribute = EquipmentAttributeMapper::get() + ->with('type') + ->where('id', (int) $request->getData('id')) + ->execute(); + + if ($equipmentAttribute->type->isRequired) { + $this->createInvalidDeleteResponse($request, $response, []); + + return; + } + + $this->deleteModel($request->header->account, $equipmentAttribute, EquipmentAttributeMapper::class, 'equipment_attribute', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $equipmentAttribute); + } + + /** + * Api method to update EquipmentAttributeTypeL11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiEquipmentAttributeTypeL11nUpdate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateAttributeTypeL11nUpdate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidUpdateResponse($request, $response, $val); + + return; + } + + /** @var BaseStringL11n $old */ + $old = EquipmentAttributeTypeL11nMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $new = $this->updateAttributeTypeL11nFromRequest($request, clone $old); + + $this->updateModel($request->header->account, $old, $new, EquipmentAttributeTypeL11nMapper::class, 'equipment_attribute_type_l11n', $request->getOrigin()); + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Api method to delete EquipmentAttributeTypeL11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiEquipmentAttributeTypeL11nDelete(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateAttributeTypeL11nDelete($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidDeleteResponse($request, $response, $val); + + return; + } + + /** @var \Modules\EquipmentManagement\Models\EquipmentAttributeTypeL11n $equipmentAttributeTypeL11n */ + $equipmentAttributeTypeL11n = EquipmentAttributeTypeL11nMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $this->deleteModel($request->header->account, $equipmentAttributeTypeL11n, EquipmentAttributeTypeL11nMapper::class, 'equipment_attribute_type_l11n', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $equipmentAttributeTypeL11n); + } + + /** + * Api method to update EquipmentAttributeType + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiEquipmentAttributeTypeUpdate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateAttributeTypeUpdate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidUpdateResponse($request, $response, $val); + + return; + } + + /** @var AttributeType $old */ + $old = EquipmentAttributeTypeMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $new = $this->updateAttributeTypeFromRequest($request, clone $old); + + $this->updateModel($request->header->account, $old, $new, EquipmentAttributeTypeMapper::class, 'equipment_attribute_type', $request->getOrigin()); + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Api method to delete EquipmentAttributeType + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @todo: implement + * + * @since 1.0.0 + */ + public function apiEquipmentAttributeTypeDelete(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateAttributeTypeDelete($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidDeleteResponse($request, $response, $val); + + return; + } + + /** @var \Modules\EquipmentManagement\Models\EquipmentAttributeType $equipmentAttributeType */ + $equipmentAttributeType = EquipmentAttributeTypeMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $this->deleteModel($request->header->account, $equipmentAttributeType, EquipmentAttributeTypeMapper::class, 'equipment_attribute_type', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $equipmentAttributeType); + } + + /** + * Api method to update EquipmentAttributeValue + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiEquipmentAttributeValueUpdate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateAttributeValueUpdate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidUpdateResponse($request, $response, $val); + + return; + } + + /** @var AttributeValue $old */ + $old = EquipmentAttributeValueMapper::get()->where('id', (int) $request->getData('id'))->execute(); + + /** @var \Modules\Attribute\Models\Attribute $type */ + $attr = EquipmentAttributeMapper::get() + ->with('type') + ->where('id', $request->getDataInt('attribute') ?? 0) + ->execute(); + + $new = $this->updateAttributeValueFromRequest($request, clone $old, $attr); + + $this->updateModel($request->header->account, $old, $new, EquipmentAttributeValueMapper::class, 'equipment_attribute_value', $request->getOrigin()); + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Api method to delete EquipmentAttributeValue + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiEquipmentAttributeValueDelete(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + return; + + // @todo: I don't think values can be deleted? Only Attributes + // However, It should be possible to remove UNUSED default values + // either here or other function? + if (!empty($val = $this->validateAttributeValueDelete($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidDeleteResponse($request, $response, $val); + + return; + } + + /** @var \Modules\EquipmentManagement\Models\EquipmentAttributeValue $equipmentAttributeValue */ + $equipmentAttributeValue = EquipmentAttributeValueMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $this->deleteModel($request->header->account, $equipmentAttributeValue, EquipmentAttributeValueMapper::class, 'equipment_attribute_value', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $equipmentAttributeValue); + } + + /** + * Api method to update EquipmentAttributeValueL11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiEquipmentAttributeValueL11nUpdate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateAttributeValueL11nUpdate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidUpdateResponse($request, $response, $val); + + return; + } + + /** @var BaseStringL11n $old */ + $old = EquipmentAttributeValueL11nMapper::get()->where('id', (int) $request->getData('id')); + $new = $this->updateAttributeValueL11nFromRequest($request, clone $old); + + $this->updateModel($request->header->account, $old, $new, EquipmentAttributeValueL11nMapper::class, 'equipment_attribute_value_l11n', $request->getOrigin()); + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Api method to delete EquipmentAttributeValueL11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiEquipmentAttributeValueL11nDelete(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateAttributeValueL11nDelete($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidDeleteResponse($request, $response, $val); + + return; + } + + /** @var \Modules\EquipmentManagement\Models\EquipmentAttributeValueL11n $equipmentAttributeValueL11n */ + $equipmentAttributeValueL11n = EquipmentAttributeValueL11nMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $this->deleteModel($request->header->account, $equipmentAttributeValueL11n, EquipmentAttributeValueL11nMapper::class, 'equipment_attribute_value_l11n', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $equipmentAttributeValueL11n); } } diff --git a/Controller/ApiEquipmentController.php b/Controller/ApiEquipmentController.php index 71733cc..a093b47 100755 --- a/Controller/ApiEquipmentController.php +++ b/Controller/ApiEquipmentController.php @@ -15,28 +15,20 @@ declare(strict_types=1); namespace Modules\EquipmentManagement\Controller; use Modules\Admin\Models\NullAccount; -use Modules\EquipmentManagement\Models\InspectionTypeL11nMapper; -use Modules\EquipmentManagement\Models\InspectionTypeMapper; use Modules\EquipmentManagement\Models\Equipment; use Modules\EquipmentManagement\Models\EquipmentMapper; use Modules\EquipmentManagement\Models\EquipmentStatus; -use Modules\EquipmentManagement\Models\EquipmentTypeL11nMapper; -use Modules\EquipmentManagement\Models\EquipmentTypeMapper; use Modules\Media\Models\CollectionMapper; use Modules\Media\Models\MediaMapper; use Modules\Media\Models\NullMedia; use Modules\Media\Models\PathSettings; use Modules\Media\Models\Reference; use Modules\Media\Models\ReferenceMapper; -use phpOMS\Localization\BaseStringL11n; -use phpOMS\Localization\BaseStringL11nType; -use phpOMS\Localization\ISO639x1Enum; use phpOMS\Localization\NullBaseStringL11nType; use phpOMS\Message\Http\RequestStatusCode; use phpOMS\Message\NotificationLevel; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; -use phpOMS\Model\Message\FormValidation; /** * EquipmentManagement class. @@ -48,150 +40,6 @@ use phpOMS\Model\Message\FormValidation; */ final class ApiEquipmentController extends Controller { - /** - * Api method to create a equipment - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return void - * - * @api - * - * @since 1.0.0 - */ - public function apiEquipmentTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void - { - if (!empty($val = $this->validateEquipmentTypeCreate($request))) { - $response->data[$request->uri->__toString()] = new FormValidation($val); - $response->header->status = RequestStatusCode::R_400; - - return; - } - - /** @var BaseStringL11nType $equipment */ - $equipment = $this->createEquipmentTypeFromRequest($request); - $this->createModel($request->header->account, $equipment, EquipmentTypeMapper::class, 'equipment_type', $request->getOrigin()); - - $this->fillJsonResponse( - $request, - $response, - NotificationLevel::OK, - '', - $this->app->l11nManager->getText($response->header->l11n->language, '0', '0', 'SucessfulCreate'), - $equipment - ); - } - - /** - * Method to create equipment from request. - * - * @param RequestAbstract $request Request - * - * @return BaseStringL11nType Returns the created equipment from the request - * - * @since 1.0.0 - */ - public function createEquipmentTypeFromRequest(RequestAbstract $request) : BaseStringL11nType - { - $type = new BaseStringL11nType(); - $type->title = $request->getDataString('name') ?? ''; - $type->setL11n($request->getDataString('title') ?? '', $request->getDataString('language') ?? ISO639x1Enum::_EN); - - return $type; - } - - /** - * Validate equipment create request - * - * @param RequestAbstract $request Request - * - * @return array Returns the validation array of the request - * - * @since 1.0.0 - */ - private function validateEquipmentTypeCreate(RequestAbstract $request) : array - { - $val = []; - if (($val['name'] = !$request->hasData('name')) - || ($val['title'] = !$request->hasData('title')) - ) { - return $val; - } - - return []; - } - - /** - * Api method to create equipment attribute l11n - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return void - * - * @api - * - * @since 1.0.0 - */ - public function apiEquipmentTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void - { - if (!empty($val = $this->validateEquipmentTypeL11nCreate($request))) { - $response->data['equipment_type_l11n_create'] = new FormValidation($val); - $response->header->status = RequestStatusCode::R_400; - - return; - } - - $typeL11n = $this->createEquipmentTypeL11nFromRequest($request); - $this->createModel($request->header->account, $typeL11n, EquipmentTypeL11nMapper::class, 'equipment_type_l11n', $request->getOrigin()); - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $typeL11n); - } - - /** - * Method to create equipment attribute l11n from request. - * - * @param RequestAbstract $request Request - * - * @return BaseStringL11n - * - * @since 1.0.0 - */ - private function createEquipmentTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n - { - $typeL11n = new BaseStringL11n(); - $typeL11n->ref = $request->getDataInt('type') ?? 0; - $typeL11n->setLanguage( - $request->getDataString('language') ?? $request->header->l11n->language - ); - $typeL11n->content = $request->getDataString('title') ?? ''; - - return $typeL11n; - } - - /** - * Validate equipment attribute l11n create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateEquipmentTypeL11nCreate(RequestAbstract $request) : array - { - $val = []; - if (($val['title'] = !$request->hasData('title')) - || ($val['type'] = !$request->hasData('type')) - ) { - return $val; - } - - return []; - } - /** * Api method to create a equipment * @@ -208,8 +56,8 @@ final class ApiEquipmentController extends Controller public function apiEquipmentCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { if (!empty($val = $this->validateEquipmentCreate($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; } @@ -224,14 +72,7 @@ final class ApiEquipmentController extends Controller $this->createEquipmentMedia($equipment, $request); } - $this->fillJsonResponse( - $request, - $response, - NotificationLevel::OK, - '', - $this->app->l11nManager->getText($response->header->l11n->language, '0', '0', 'SucessfulCreate'), - $equipment - ); + $this->createStandardCreateResponse($request, $response, $equipment); } /** @@ -405,8 +246,8 @@ final class ApiEquipmentController extends Controller public function apiMediaAddToEquipment(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { if (!empty($val = $this->validateMediaAddToEquipment($request))) { - $response->data[$request->uri->__toString()] = new FormValidation($val); - $response->header->status = RequestStatusCode::R_400; + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidAddResponse($request, $response, $val); return; } @@ -535,150 +376,6 @@ final class ApiEquipmentController extends Controller return []; } - /** - * Api method to create a equipment - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return void - * - * @api - * - * @since 1.0.0 - */ - public function apiInspectionTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void - { - if (!empty($val = $this->validateInspectionTypeCreate($request))) { - $response->data[$request->uri->__toString()] = new FormValidation($val); - $response->header->status = RequestStatusCode::R_400; - - return; - } - - /** @var BaseStringL11nType $inspection */ - $inspection = $this->createInspectionTypeFromRequest($request); - $this->createModel($request->header->account, $inspection, InspectionTypeMapper::class, 'inspection_type', $request->getOrigin()); - - $this->fillJsonResponse( - $request, - $response, - NotificationLevel::OK, - '', - $this->app->l11nManager->getText($response->header->l11n->language, '0', '0', 'SucessfulCreate'), - $inspection - ); - } - - /** - * Method to create equipment from request. - * - * @param RequestAbstract $request Request - * - * @return BaseStringL11nType Returns the created equipment from the request - * - * @since 1.0.0 - */ - public function createInspectionTypeFromRequest(RequestAbstract $request) : BaseStringL11nType - { - $type = new BaseStringL11nType(); - $type->title = $request->getDataString('name') ?? ''; - $type->setL11n($request->getDataString('title') ?? '', $request->getDataString('language') ?? ISO639x1Enum::_EN); - - return $type; - } - - /** - * Validate equipment create request - * - * @param RequestAbstract $request Request - * - * @return array Returns the validation array of the request - * - * @since 1.0.0 - */ - private function validateInspectionTypeCreate(RequestAbstract $request) : array - { - $val = []; - if (($val['name'] = !$request->hasData('name')) - || ($val['title'] = !$request->hasData('title')) - ) { - return $val; - } - - return []; - } - - /** - * Api method to create equipment attribute l11n - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return void - * - * @api - * - * @since 1.0.0 - */ - public function apiInspectionTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void - { - if (!empty($val = $this->validateInspectionTypeL11nCreate($request))) { - $response->data['inspection_type_l11n_create'] = new FormValidation($val); - $response->header->status = RequestStatusCode::R_400; - - return; - } - - $typeL11n = $this->createInspectionTypeL11nFromRequest($request); - $this->createModel($request->header->account, $typeL11n, InspectionTypeL11nMapper::class, 'inspection_type_l11n', $request->getOrigin()); - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $typeL11n); - } - - /** - * Method to create equipment attribute l11n from request. - * - * @param RequestAbstract $request Request - * - * @return BaseStringL11n - * - * @since 1.0.0 - */ - private function createInspectionTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n - { - $typeL11n = new BaseStringL11n(); - $typeL11n->ref = $request->getDataInt('type') ?? 0; - $typeL11n->setLanguage( - $request->getDataString('language') ?? $request->header->l11n->language - ); - $typeL11n->content = $request->getDataString('title') ?? ''; - - return $typeL11n; - } - - /** - * Validate equipment attribute l11n create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateInspectionTypeL11nCreate(RequestAbstract $request) : array - { - $val = []; - if (($val['title'] = !$request->hasData('title')) - || ($val['type'] = !$request->hasData('type')) - ) { - return $val; - } - - return []; - } - /** * Api method to create notes * @@ -695,8 +392,8 @@ final class ApiEquipmentController extends Controller public function apiNoteCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { if (!empty($val = $this->validateNoteCreate($request))) { - $response->data['equipment_note_create'] = new FormValidation($val); - $response->header->status = RequestStatusCode::R_400; + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidCreateResponse($request, $response, $val); return; } diff --git a/Controller/ApiEquipmentTypeController.php b/Controller/ApiEquipmentTypeController.php new file mode 100644 index 0000000..d292d20 --- /dev/null +++ b/Controller/ApiEquipmentTypeController.php @@ -0,0 +1,404 @@ +validateEquipmentTypeCreate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidCreateResponse($request, $response, $val); + + return; + } + + $equipmentType = $this->createEquipmentTypeFromRequest($request); + $this->createModel($request->header->account, $equipmentType, EquipmentTypeMapper::class, 'equipment_type', $request->getOrigin()); + $this->createStandardCreateResponse($request, $response, $equipmentType); + } + + /** + * Method to create item attribute from request. + * + * @param RequestAbstract $request Request + * + * @return BaseStringL11nType + * + * @since 1.0.0 + */ + private function createEquipmentTypeFromRequest(RequestAbstract $request) : BaseStringL11nType + { + $equipmentType = new BaseStringL11nType(); + $equipmentType->setL11n($request->getDataString('title') ?? '', $request->getDataString('language') ?? ISO639x1Enum::_EN); + $equipmentType->title = $request->getDataString('name') ?? ''; + + return $equipmentType; + } + + /** + * Validate item attribute create request + * + * @param RequestAbstract $request Request + * + * @return array + * + * @since 1.0.0 + */ + private function validateEquipmentTypeCreate(RequestAbstract $request) : array + { + $val = []; + if (($val['title'] = !$request->hasData('title')) + ) { + return $val; + } + + return []; + } + + /** + * Api method to create item attribute l11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiEquipmentTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateEquipmentTypeL11nCreate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidCreateResponse($request, $response, $val); + + return; + } + + $equipmentTypeL11n = $this->createEquipmentTypeL11nFromRequest($request); + $this->createModel($request->header->account, $equipmentTypeL11n, EquipmentTypeL11nMapper::class, 'equipment_type_l11n', $request->getOrigin()); + $this->createStandardCreateResponse($request, $response, $equipmentTypeL11n); + } + + /** + * Method to create item attribute l11n from request. + * + * @param RequestAbstract $request Request + * + * @return BaseStringL11n + * + * @since 1.0.0 + */ + private function createEquipmentTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n + { + $equipmentTypeL11n = new BaseStringL11n(); + $equipmentTypeL11n->ref = $request->getDataInt('type') ?? 0; + $equipmentTypeL11n->setLanguage( + $request->getDataString('language') ?? $request->header->l11n->language + ); + $equipmentTypeL11n->content = $request->getDataString('title') ?? ''; + + return $equipmentTypeL11n; + } + + /** + * Validate item attribute l11n create request + * + * @param RequestAbstract $request Request + * + * @return array + * + * @since 1.0.0 + */ + private function validateEquipmentTypeL11nCreate(RequestAbstract $request) : array + { + $val = []; + if (($val['title'] = !$request->hasData('title')) + || ($val['type'] = !$request->hasData('type')) + ) { + return $val; + } + + return []; + } + + /** + * Api method to update EquipmentType + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiEquipmentTypeUpdate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateEquipmentTypeUpdate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidUpdateResponse($request, $response, $val); + + return; + } + + /** @var BaseStringL11nType $old */ + $old = EquipmentTypeMapper::get()->where('id', (int) $request->getData('id')); + $new = $this->updateEquipmentTypeFromRequest($request, clone $old); + + $this->updateModel($request->header->account, $old, $new, EquipmentTypeMapper::class, 'equipment_type', $request->getOrigin()); + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Method to update EquipmentType from request. + * + * @param RequestAbstract $request Request + * @param BaseStringL11nType $new Model to modify + * + * @return BaseStringL11nType + * + * @todo: implement + * + * @since 1.0.0 + */ + public function updateEquipmentTypeFromRequest(RequestAbstract $request, BaseStringL11nType $new) : BaseStringL11nType + { + $new->title = $request->getDataString('name') ?? $new->title; + + return $new; + } + + /** + * Validate EquipmentType update request + * + * @param RequestAbstract $request Request + * + * @return array + * + * @todo: implement + * + * @since 1.0.0 + */ + private function validateEquipmentTypeUpdate(RequestAbstract $request) : array + { + $val = []; + if (($val['id'] = !$request->hasData('id'))) { + return $val; + } + + return []; + } + + /** + * Api method to delete EquipmentType + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiEquipmentTypeDelete(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateEquipmentTypeDelete($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidDeleteResponse($request, $response, $val); + + return; + } + + /** @var \Modules\EquipmentManagement\Models\EquipmentType $equipmentType */ + $equipmentType = EquipmentTypeMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $this->deleteModel($request->header->account, $equipmentType, EquipmentTypeMapper::class, 'equipment_type', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $equipmentType); + } + + /** + * Validate EquipmentType delete request + * + * @param RequestAbstract $request Request + * + * @return array + * + * @since 1.0.0 + */ + private function validateEquipmentTypeDelete(RequestAbstract $request) : array + { + $val = []; + if (($val['id'] = !$request->hasData('id'))) { + return $val; + } + + return []; + } + + /** + * Api method to update EquipmentTypeL11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiEquipmentTypeL11nUpdate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateEquipmentTypeL11nUpdate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidUpdateResponse($request, $response, $val); + + return; + } + + /** @var BaseStringL11n $old */ + $old = EquipmentTypeL11nMapper::get()->where('id', (int) $request->getData('id')); + $new = $this->updateEquipmentTypeL11nFromRequest($request, clone $old); + + $this->updateModel($request->header->account, $old, $new, EquipmentTypeL11nMapper::class, 'equipment_type_l11n', $request->getOrigin()); + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Method to update EquipmentTypeL11n from request. + * + * @param RequestAbstract $request Request + * @param BaseStringL11n $new Model to modify + * + * @return BaseStringL11n + * + * @since 1.0.0 + */ + public function updateEquipmentTypeL11nFromRequest(RequestAbstract $request, BaseStringL11n $new) : BaseStringL11n + { + $new->setLanguage( + $request->getDataString('language') ?? $new->language + ); + $new->content = $request->getDataString('title') ?? $new->content; + + return $new; + } + + /** + * Validate EquipmentTypeL11n update request + * + * @param RequestAbstract $request Request + * + * @return array + * + * @since 1.0.0 + */ + private function validateEquipmentTypeL11nUpdate(RequestAbstract $request) : array + { + $val = []; + if (($val['id'] = !$request->hasData('id'))) { + return $val; + } + + return []; + } + + /** + * Api method to delete EquipmentTypeL11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiEquipmentTypeL11nDelete(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateEquipmentTypeL11nDelete($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidDeleteResponse($request, $response, $val); + + return; + } + + /** @var \Modules\EquipmentManagement\Models\EquipmentTypeL11n $equipmentTypeL11n */ + $equipmentTypeL11n = EquipmentTypeL11nMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $this->deleteModel($request->header->account, $equipmentTypeL11n, EquipmentTypeL11nMapper::class, 'equipment_type_l11n', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $equipmentTypeL11n); + } + + /** + * Validate EquipmentTypeL11n delete request + * + * @param RequestAbstract $request Request + * + * @return array + * + * @since 1.0.0 + */ + private function validateEquipmentTypeL11nDelete(RequestAbstract $request) : array + { + $val = []; + if (($val['id'] = !$request->hasData('id'))) { + return $val; + } + + return []; + } +} diff --git a/Controller/ApiInspectionTypeController.php b/Controller/ApiInspectionTypeController.php new file mode 100644 index 0000000..85909f7 --- /dev/null +++ b/Controller/ApiInspectionTypeController.php @@ -0,0 +1,404 @@ +validateInspectionTypeCreate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidCreateResponse($request, $response, $val); + + return; + } + + $equipmentType = $this->createInspectionTypeFromRequest($request); + $this->createModel($request->header->account, $equipmentType, InspectionTypeMapper::class, 'equipment_type', $request->getOrigin()); + $this->createStandardCreateResponse($request, $response, $equipmentType); + } + + /** + * Method to create item attribute from request. + * + * @param RequestAbstract $request Request + * + * @return BaseStringL11nType + * + * @since 1.0.0 + */ + private function createInspectionTypeFromRequest(RequestAbstract $request) : BaseStringL11nType + { + $equipmentType = new BaseStringL11nType(); + $equipmentType->setL11n($request->getDataString('title') ?? '', $request->getDataString('language') ?? ISO639x1Enum::_EN); + $equipmentType->title = $request->getDataString('name') ?? ''; + + return $equipmentType; + } + + /** + * Validate item attribute create request + * + * @param RequestAbstract $request Request + * + * @return array + * + * @since 1.0.0 + */ + private function validateInspectionTypeCreate(RequestAbstract $request) : array + { + $val = []; + if (($val['title'] = !$request->hasData('title')) + ) { + return $val; + } + + return []; + } + + /** + * Api method to create item attribute l11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiInspectionTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateInspectionTypeL11nCreate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidCreateResponse($request, $response, $val); + + return; + } + + $equipmentTypeL11n = $this->createInspectionTypeL11nFromRequest($request); + $this->createModel($request->header->account, $equipmentTypeL11n, InspectionTypeL11nMapper::class, 'equipment_type_l11n', $request->getOrigin()); + $this->createStandardCreateResponse($request, $response, $equipmentTypeL11n); + } + + /** + * Method to create item attribute l11n from request. + * + * @param RequestAbstract $request Request + * + * @return BaseStringL11n + * + * @since 1.0.0 + */ + private function createInspectionTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n + { + $equipmentTypeL11n = new BaseStringL11n(); + $equipmentTypeL11n->ref = $request->getDataInt('type') ?? 0; + $equipmentTypeL11n->setLanguage( + $request->getDataString('language') ?? $request->header->l11n->language + ); + $equipmentTypeL11n->content = $request->getDataString('title') ?? ''; + + return $equipmentTypeL11n; + } + + /** + * Validate item attribute l11n create request + * + * @param RequestAbstract $request Request + * + * @return array + * + * @since 1.0.0 + */ + private function validateInspectionTypeL11nCreate(RequestAbstract $request) : array + { + $val = []; + if (($val['title'] = !$request->hasData('title')) + || ($val['type'] = !$request->hasData('type')) + ) { + return $val; + } + + return []; + } + + /** + * Api method to update InspectionType + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiInspectionTypeUpdate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateInspectionTypeUpdate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidUpdateResponse($request, $response, $val); + + return; + } + + /** @var BaseStringL11nType $old */ + $old = InspectionTypeMapper::get()->where('id', (int) $request->getData('id')); + $new = $this->updateInspectionTypeFromRequest($request, clone $old); + + $this->updateModel($request->header->account, $old, $new, InspectionTypeMapper::class, 'equipment_type', $request->getOrigin()); + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Method to update InspectionType from request. + * + * @param RequestAbstract $request Request + * @param BaseStringL11nType $new Model to modify + * + * @return BaseStringL11nType + * + * @todo: implement + * + * @since 1.0.0 + */ + public function updateInspectionTypeFromRequest(RequestAbstract $request, BaseStringL11nType $new) : BaseStringL11nType + { + $new->title = $request->getDataString('name') ?? $new->title; + + return $new; + } + + /** + * Validate InspectionType update request + * + * @param RequestAbstract $request Request + * + * @return array + * + * @todo: implement + * + * @since 1.0.0 + */ + private function validateInspectionTypeUpdate(RequestAbstract $request) : array + { + $val = []; + if (($val['id'] = !$request->hasData('id'))) { + return $val; + } + + return []; + } + + /** + * Api method to delete InspectionType + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiInspectionTypeDelete(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateInspectionTypeDelete($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidDeleteResponse($request, $response, $val); + + return; + } + + /** @var \Modules\EquipmentManagement\Models\InspectionType $equipmentType */ + $equipmentType = InspectionTypeMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $this->deleteModel($request->header->account, $equipmentType, InspectionTypeMapper::class, 'equipment_type', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $equipmentType); + } + + /** + * Validate InspectionType delete request + * + * @param RequestAbstract $request Request + * + * @return array + * + * @since 1.0.0 + */ + private function validateInspectionTypeDelete(RequestAbstract $request) : array + { + $val = []; + if (($val['id'] = !$request->hasData('id'))) { + return $val; + } + + return []; + } + + /** + * Api method to update InspectionTypeL11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiInspectionTypeL11nUpdate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateInspectionTypeL11nUpdate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidUpdateResponse($request, $response, $val); + + return; + } + + /** @var BaseStringL11n $old */ + $old = InspectionTypeL11nMapper::get()->where('id', (int) $request->getData('id')); + $new = $this->updateInspectionTypeL11nFromRequest($request, clone $old); + + $this->updateModel($request->header->account, $old, $new, InspectionTypeL11nMapper::class, 'equipment_type_l11n', $request->getOrigin()); + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Method to update InspectionTypeL11n from request. + * + * @param RequestAbstract $request Request + * @param BaseStringL11n $new Model to modify + * + * @return BaseStringL11n + * + * @since 1.0.0 + */ + public function updateInspectionTypeL11nFromRequest(RequestAbstract $request, BaseStringL11n $new) : BaseStringL11n + { + $new->setLanguage( + $request->getDataString('language') ?? $new->language + ); + $new->content = $request->getDataString('title') ?? $new->content; + + return $new; + } + + /** + * Validate InspectionTypeL11n update request + * + * @param RequestAbstract $request Request + * + * @return array + * + * @since 1.0.0 + */ + private function validateInspectionTypeL11nUpdate(RequestAbstract $request) : array + { + $val = []; + if (($val['id'] = !$request->hasData('id'))) { + return $val; + } + + return []; + } + + /** + * Api method to delete InspectionTypeL11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiInspectionTypeL11nDelete(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateInspectionTypeL11nDelete($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidDeleteResponse($request, $response, $val); + + return; + } + + /** @var \Modules\EquipmentManagement\Models\InspectionTypeL11n $equipmentTypeL11n */ + $equipmentTypeL11n = InspectionTypeL11nMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $this->deleteModel($request->header->account, $equipmentTypeL11n, InspectionTypeL11nMapper::class, 'equipment_type_l11n', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $equipmentTypeL11n); + } + + /** + * Validate InspectionTypeL11n delete request + * + * @param RequestAbstract $request Request + * + * @return array + * + * @since 1.0.0 + */ + private function validateInspectionTypeL11nDelete(RequestAbstract $request) : array + { + $val = []; + if (($val['id'] = !$request->hasData('id'))) { + return $val; + } + + return []; + } +} diff --git a/Models/EquipmentAttributeMapper.php b/Models/Attribute/EquipmentAttributeMapper.php similarity index 92% rename from Models/EquipmentAttributeMapper.php rename to Models/Attribute/EquipmentAttributeMapper.php index d9e8e99..5d43985 100644 --- a/Models/EquipmentAttributeMapper.php +++ b/Models/Attribute/EquipmentAttributeMapper.php @@ -4,7 +4,7 @@ * * PHP Version 8.1 * - * @package Modules\EquipmentManagement\Models + * @package Modules\EquipmentManagement\Models\Attribute * @copyright Dennis Eichhorn * @license OMS License 2.0 * @version 1.0.0 @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\EquipmentManagement\Models; +namespace Modules\EquipmentManagement\Models\Attribute; use Modules\Attribute\Models\Attribute; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; @@ -20,7 +20,7 @@ use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; /** * Fleet mapper class. * - * @package Modules\EquipmentManagement\Models + * @package Modules\EquipmentManagement\Models\Attribute * @license OMS License 2.0 * @link https://jingga.app * @since 1.0.0 diff --git a/Models/EquipmentAttributeTypeL11nMapper.php b/Models/Attribute/EquipmentAttributeTypeL11nMapper.php similarity index 91% rename from Models/EquipmentAttributeTypeL11nMapper.php rename to Models/Attribute/EquipmentAttributeTypeL11nMapper.php index a760c85..f554f3e 100644 --- a/Models/EquipmentAttributeTypeL11nMapper.php +++ b/Models/Attribute/EquipmentAttributeTypeL11nMapper.php @@ -4,7 +4,7 @@ * * PHP Version 8.1 * - * @package Modules\EquipmentManagement\Models + * @package Modules\EquipmentManagement\Models\Attribute * @copyright Dennis Eichhorn * @license OMS License 2.0 * @version 1.0.0 @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\EquipmentManagement\Models; +namespace Modules\EquipmentManagement\Models\Attribute; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; use phpOMS\Localization\BaseStringL11n; @@ -20,7 +20,7 @@ use phpOMS\Localization\BaseStringL11n; /** * Equipment mapper class. * - * @package Modules\EquipmentManagement\Models + * @package Modules\EquipmentManagement\Models\Attribute * @license OMS License 2.0 * @link https://jingga.app * @since 1.0.0 diff --git a/Models/EquipmentAttributeTypeMapper.php b/Models/Attribute/EquipmentAttributeTypeMapper.php similarity index 94% rename from Models/EquipmentAttributeTypeMapper.php rename to Models/Attribute/EquipmentAttributeTypeMapper.php index e72b4b0..71c6063 100644 --- a/Models/EquipmentAttributeTypeMapper.php +++ b/Models/Attribute/EquipmentAttributeTypeMapper.php @@ -4,7 +4,7 @@ * * PHP Version 8.1 * - * @package Modules\EquipmentManagement\Models + * @package Modules\EquipmentManagement\Models\Attribute * @copyright Dennis Eichhorn * @license OMS License 2.0 * @version 1.0.0 @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\EquipmentManagement\Models; +namespace Modules\EquipmentManagement\Models\Attribute; use Modules\Attribute\Models\AttributeType; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; @@ -20,7 +20,7 @@ use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; /** * Equipment mapper class. * - * @package Modules\EquipmentManagement\Models + * @package Modules\EquipmentManagement\Models\Attribute * @license OMS License 2.0 * @link https://jingga.app * @since 1.0.0 diff --git a/Models/EquipmentAttributeValueL11nMapper.php b/Models/Attribute/EquipmentAttributeValueL11nMapper.php similarity index 91% rename from Models/EquipmentAttributeValueL11nMapper.php rename to Models/Attribute/EquipmentAttributeValueL11nMapper.php index 608fc87..9432513 100644 --- a/Models/EquipmentAttributeValueL11nMapper.php +++ b/Models/Attribute/EquipmentAttributeValueL11nMapper.php @@ -4,7 +4,7 @@ * * PHP Version 8.1 * - * @package Modules\EquipmentManagement\Models + * @package Modules\EquipmentManagement\Models\Attribute * @copyright Dennis Eichhorn * @license OMS License 2.0 * @version 1.0.0 @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\EquipmentManagement\Models; +namespace Modules\EquipmentManagement\Models\Attribute; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; use phpOMS\Localization\BaseStringL11n; @@ -20,7 +20,7 @@ use phpOMS\Localization\BaseStringL11n; /** * Equipment mapper class. * - * @package Modules\EquipmentManagement\Models + * @package Modules\EquipmentManagement\Models\Attribute * @license OMS License 2.0 * @link https://jingga.app * @since 1.0.0 diff --git a/Models/EquipmentAttributeValueMapper.php b/Models/Attribute/EquipmentAttributeValueMapper.php similarity index 94% rename from Models/EquipmentAttributeValueMapper.php rename to Models/Attribute/EquipmentAttributeValueMapper.php index 1a3119a..e7e68f6 100644 --- a/Models/EquipmentAttributeValueMapper.php +++ b/Models/Attribute/EquipmentAttributeValueMapper.php @@ -4,7 +4,7 @@ * * PHP Version 8.1 * - * @package Modules\EquipmentManagement\Models + * @package Modules\EquipmentManagement\Models\Attribute * @copyright Dennis Eichhorn * @license OMS License 2.0 * @version 1.0.0 @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\EquipmentManagement\Models; +namespace Modules\EquipmentManagement\Models\Attribute; use Modules\Attribute\Models\AttributeValue; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; @@ -20,7 +20,7 @@ use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; /** * Equipment mapper class. * - * @package Modules\EquipmentManagement\Models + * @package Modules\EquipmentManagement\Models\Attribute * @license OMS License 2.0 * @link https://jingga.app * @since 1.0.0 diff --git a/Models/EquipmentMapper.php b/Models/EquipmentMapper.php index f4cfa05..6cba225 100644 --- a/Models/EquipmentMapper.php +++ b/Models/EquipmentMapper.php @@ -17,6 +17,7 @@ namespace Modules\EquipmentManagement\Models; use Modules\Media\Models\MediaMapper; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; use Modules\Editor\Models\EditorDocMapper; +use Modules\EquipmentManagement\Models\Attribute\EquipmentAttributeMapper; /** * Mapper class.