From c655c739b198345187b889c71b81d3d53e1b9b04 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Wed, 26 Jul 2023 09:18:05 +0000 Subject: [PATCH] fix default respone generation --- Admin/Installer.php | 2 +- Controller/ApiDriverAttributeController.php | 709 +++++++++--------- Controller/ApiDriverController.php | 48 +- Controller/ApiVehicleAttributeController.php | 709 +++++++++--------- Controller/ApiVehicleController.php | 82 +- .../DriverAttributeMapper.php | 6 +- .../DriverAttributeTypeL11nMapper.php | 6 +- .../DriverAttributeTypeMapper.php | 6 +- .../DriverAttributeValueL11nMapper.php | 6 +- .../DriverAttributeValueMapper.php | 6 +- .../VehicleAttributeMapper.php | 6 +- .../VehicleAttributeTypeL11nMapper.php | 6 +- .../VehicleAttributeTypeMapper.php | 6 +- .../VehicleAttributeValueL11nMapper.php | 6 +- .../VehicleAttributeValueMapper.php | 6 +- Models/VehicleMapper.php | 1 + 16 files changed, 771 insertions(+), 840 deletions(-) rename Models/{Driver => Attribute}/DriverAttributeMapper.php (93%) rename Models/{Driver => Attribute}/DriverAttributeTypeL11nMapper.php (92%) rename Models/{Driver => Attribute}/DriverAttributeTypeMapper.php (95%) rename Models/{Driver => Attribute}/DriverAttributeValueL11nMapper.php (92%) rename Models/{Driver => Attribute}/DriverAttributeValueMapper.php (95%) rename Models/{ => Attribute}/VehicleAttributeMapper.php (93%) rename Models/{ => Attribute}/VehicleAttributeTypeL11nMapper.php (91%) rename Models/{ => Attribute}/VehicleAttributeTypeMapper.php (94%) rename Models/{ => Attribute}/VehicleAttributeValueL11nMapper.php (91%) rename Models/{ => Attribute}/VehicleAttributeValueMapper.php (94%) diff --git a/Admin/Installer.php b/Admin/Installer.php index dd2e8a3..b5e7345 100755 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -297,7 +297,7 @@ final class Installer extends InstallerAbstract /** @var array $inspectionTypes */ $inspectionTypes = []; - /** @var \Modules\FleetManagement\Controller\ApiVehicleController $module */ + /** @var \Modules\FleetManagement\Controller\ApiDriverController $module */ $module = $app->moduleManager->getModuleInstance('FleetManagement', 'ApiDriver'); /** @var array $type */ diff --git a/Controller/ApiDriverAttributeController.php b/Controller/ApiDriverAttributeController.php index b002abd..e4d479e 100644 --- a/Controller/ApiDriverAttributeController.php +++ b/Controller/ApiDriverAttributeController.php @@ -17,20 +17,15 @@ namespace Modules\FleetManagement\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\FleetManagement\Models\Driver\DriverAttributeMapper; -use Modules\FleetManagement\Models\Driver\DriverAttributeTypeL11nMapper; -use Modules\FleetManagement\Models\Driver\DriverAttributeTypeMapper; -use Modules\FleetManagement\Models\Driver\DriverAttributeValueL11nMapper; -use Modules\FleetManagement\Models\Driver\DriverAttributeValueMapper; +use Modules\FleetManagement\Models\Attribute\DriverAttributeMapper; +use Modules\FleetManagement\Models\Attribute\DriverAttributeTypeL11nMapper; +use Modules\FleetManagement\Models\Attribute\DriverAttributeTypeMapper; +use Modules\FleetManagement\Models\Attribute\DriverAttributeValueL11nMapper; +use Modules\FleetManagement\Models\Attribute\DriverAttributeValueMapper; 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; /** * FleetManagement class. @@ -42,8 +37,10 @@ use phpOMS\Model\Message\FormValidation; */ final class ApiDriverAttributeController extends Controller { + use \Modules\Attribute\Controller\ApiAttributeTraitController; + /** - * Api method to create driver attribute + * Api method to create item attribute * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -57,158 +54,16 @@ final class ApiDriverAttributeController extends Controller */ public function apiDriverAttributeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { - if (!empty($val = $this->validateDriverAttributeCreate($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->createDriverAttributeFromRequest($request); + $attribute = $this->createAttributeFromRequest($request); $this->createModel($request->header->account, $attribute, DriverAttributeMapper::class, 'attribute', $request->getOrigin()); - - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute', 'Attribute successfully created', $attribute); - } - - /** - * Method to create driver attribute from request. - * - * @param RequestAbstract $request Request - * - * @return Attribute - * - * @since 1.0.0 - */ - private function createDriverAttributeFromRequest(RequestAbstract $request) : Attribute - { - $attribute = new Attribute(); - $attribute->ref = (int) $request->getData('driver'); - $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 driver attribute create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateDriverAttributeCreate(RequestAbstract $request) : array - { - $val = []; - if (($val['type'] = !$request->hasData('type')) - || ($val['value'] = (!$request->hasData('value') && !$request->hasData('custom'))) - || ($val['driver'] = !$request->hasData('driver')) - ) { - return $val; - } - - return []; - } - - /** - * Api method to create driver attribute - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return void - * - * @api - * - * @since 1.0.0 - */ - public function apiDriverAttributeUpdate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void - { - if (!empty($val = $this->validateDriverAttributeUpdate($request))) { - $response->data['attribute_update'] = new FormValidation($val); - $response->header->status = RequestStatusCode::R_400; - - return; - } - - $old = DriverAttributeMapper::get() - ->with('type') - ->with('type/defaults') - ->with('value') - ->where('id', (int) $request->getData('id')) - ->execute(); - - $new = $this->updateDriverAttributeFromRequest($request, $old->deepClone()); - $this->updateModel($request->header->account, $old, $new, DriverAttributeMapper::class, 'attribute', $request->getOrigin()); - - if ($new->value->getValue() !== $old->value->getValue()) { - $this->updateModel($request->header->account, $old->value, $new->value, DriverAttributeValueMapper::class, 'attribute_value', $request->getOrigin()); - } - - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute', 'Attribute successfully updated', $new); - } - - /** - * Method to create driver attribute from request. - * - * @param RequestAbstract $request Request - * - * @return Attribute - * - * @since 1.0.0 - */ - private function updateDriverAttributeFromRequest(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 driver attribute create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateDriverAttributeUpdate(RequestAbstract $request) : array - { - $val = []; - if (($val['id'] = !$request->hasData('id')) - ) { - return $val; - } - - return []; + $this->createStandardCreateResponse($request, $response, $attribute); } /** @@ -226,58 +81,16 @@ final class ApiDriverAttributeController extends Controller */ public function apiDriverAttributeTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { - if (!empty($val = $this->validateDriverAttributeTypeL11nCreate($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->createDriverAttributeTypeL11nFromRequest($request); + $attrL11n = $this->createAttributeTypeL11nFromRequest($request); $this->createModel($request->header->account, $attrL11n, DriverAttributeTypeL11nMapper::class, 'attr_type_l11n', $request->getOrigin()); - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $attrL11n); - } - - /** - * Method to create driver attribute l11n from request. - * - * @param RequestAbstract $request Request - * - * @return BaseStringL11n - * - * @since 1.0.0 - */ - private function createDriverAttributeTypeL11nFromRequest(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 driver attribute l11n create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateDriverAttributeTypeL11nCreate(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 ApiDriverAttributeController extends Controller */ public function apiDriverAttributeTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { - if (!empty($val = $this->validateDriverAttributeTypeCreate($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, DriverAttributeTypeMapper::class, 'attr_type', $request->getOrigin()); - - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute type', 'Attribute type successfully created', $attrType); - } - - /** - * Method to create driver 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 driver attribute create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateDriverAttributeTypeCreate(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 ApiDriverAttributeController extends Controller */ public function apiDriverAttributeValueCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { - if (!empty($val = $this->validateDriverAttributeValueCreate($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 = DriverAttributeTypeMapper::get() + ->where('id', $request->getDataInt('type') ?? 0) + ->execute(); + + $attrValue = $this->createAttributeValueFromRequest($request, $type); $this->createModel($request->header->account, $attrValue, DriverAttributeValueMapper::class, 'attr_value', $request->getOrigin()); if ($attrValue->isDefault) { @@ -385,55 +159,7 @@ final class ApiDriverAttributeController extends Controller ); } - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute value', 'Attribute value successfully created', $attrValue); - } - - /** - * Method to create driver attribute value from request. - * - * @param RequestAbstract $request Request - * - * @return AttributeValue - * - * @since 1.0.0 - */ - private function createAttributeValueFromRequest(RequestAbstract $request) : AttributeValue - { - /** @var AttributeType $type */ - $type = DriverAttributeTypeMapper::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 driver attribute value create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateDriverAttributeValueCreate(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 ApiDriverAttributeController extends Controller */ public function apiDriverAttributeValueL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { - if (!empty($val = $this->validateDriverAttributeValueL11nCreate($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, DriverAttributeValueL11nMapper::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 driver 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 driver attribute l11n create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateDriverAttributeValueL11nCreate(RequestAbstract $request) : array - { - $val = []; - if (($val['title'] = !$request->hasData('title')) - || ($val['value'] = !$request->hasData('value')) - ) { - return $val; - } - - return []; - } - - /** - * Api method to handle api driver attributes + * Api method to update DriverAttribute * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -518,17 +202,322 @@ final class ApiDriverAttributeController extends Controller * * @since 1.0.0 */ - public function apiDriverAttribute(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + public function apiDriverAttributeUpdate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { - if (!empty($val = $this->validateDriverAttributeValueL11nCreate($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, DriverAttributeValueL11nMapper::class, 'attr_value_l11n', $request->getOrigin()); - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $attrL11n); + /** @var Attribute $old */ + $old = DriverAttributeMapper::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, DriverAttributeMapper::class, 'driver_attribute', $request->getOrigin()); + + if ($new->value->getValue() !== $old->value->getValue()) { + $this->updateModel($request->header->account, $old->value, $new->value, DriverAttributeValueMapper::class, 'attribute_value', $request->getOrigin()); + } + + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Api method to delete DriverAttribute + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiDriverAttributeDelete(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; + } + + $driverAttribute = DriverAttributeMapper::get() + ->with('type') + ->where('id', (int) $request->getData('id')) + ->execute(); + + if ($driverAttribute->type->isRequired) { + $this->createInvalidDeleteResponse($request, $response, []); + + return; + } + + $this->deleteModel($request->header->account, $driverAttribute, DriverAttributeMapper::class, 'driver_attribute', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $driverAttribute); + } + + /** + * Api method to update DriverAttributeTypeL11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiDriverAttributeTypeL11nUpdate(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 = DriverAttributeTypeL11nMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $new = $this->updateAttributeTypeL11nFromRequest($request, clone $old); + + $this->updateModel($request->header->account, $old, $new, DriverAttributeTypeL11nMapper::class, 'driver_attribute_type_l11n', $request->getOrigin()); + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Api method to delete DriverAttributeTypeL11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiDriverAttributeTypeL11nDelete(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\FleetManagement\Models\DriverAttributeTypeL11n $driverAttributeTypeL11n */ + $driverAttributeTypeL11n = DriverAttributeTypeL11nMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $this->deleteModel($request->header->account, $driverAttributeTypeL11n, DriverAttributeTypeL11nMapper::class, 'driver_attribute_type_l11n', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $driverAttributeTypeL11n); + } + + /** + * Api method to update DriverAttributeType + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiDriverAttributeTypeUpdate(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 = DriverAttributeTypeMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $new = $this->updateAttributeTypeFromRequest($request, clone $old); + + $this->updateModel($request->header->account, $old, $new, DriverAttributeTypeMapper::class, 'driver_attribute_type', $request->getOrigin()); + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Api method to delete DriverAttributeType + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @todo: implement + * + * @since 1.0.0 + */ + public function apiDriverAttributeTypeDelete(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\FleetManagement\Models\DriverAttributeType $driverAttributeType */ + $driverAttributeType = DriverAttributeTypeMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $this->deleteModel($request->header->account, $driverAttributeType, DriverAttributeTypeMapper::class, 'driver_attribute_type', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $driverAttributeType); + } + + /** + * Api method to update DriverAttributeValue + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiDriverAttributeValueUpdate(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 = DriverAttributeValueMapper::get()->where('id', (int) $request->getData('id'))->execute(); + + /** @var \Modules\Attribute\Models\Attribute $type */ + $attr = DriverAttributeMapper::get() + ->with('type') + ->where('id', $request->getDataInt('attribute') ?? 0) + ->execute(); + + $new = $this->updateAttributeValueFromRequest($request, clone $old, $attr); + + $this->updateModel($request->header->account, $old, $new, DriverAttributeValueMapper::class, 'driver_attribute_value', $request->getOrigin()); + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Api method to delete DriverAttributeValue + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiDriverAttributeValueDelete(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\FleetManagement\Models\DriverAttributeValue $driverAttributeValue */ + $driverAttributeValue = DriverAttributeValueMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $this->deleteModel($request->header->account, $driverAttributeValue, DriverAttributeValueMapper::class, 'driver_attribute_value', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $driverAttributeValue); + } + + /** + * Api method to update DriverAttributeValueL11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiDriverAttributeValueL11nUpdate(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 = DriverAttributeValueL11nMapper::get()->where('id', (int) $request->getData('id')); + $new = $this->updateAttributeValueL11nFromRequest($request, clone $old); + + $this->updateModel($request->header->account, $old, $new, DriverAttributeValueL11nMapper::class, 'driver_attribute_value_l11n', $request->getOrigin()); + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Api method to delete DriverAttributeValueL11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiDriverAttributeValueL11nDelete(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\FleetManagement\Models\DriverAttributeValueL11n $driverAttributeValueL11n */ + $driverAttributeValueL11n = DriverAttributeValueL11nMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $this->deleteModel($request->header->account, $driverAttributeValueL11n, DriverAttributeValueL11nMapper::class, 'driver_attribute_value_l11n', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $driverAttributeValueL11n); } } diff --git a/Controller/ApiDriverController.php b/Controller/ApiDriverController.php index 6eec99f..c7cf6dd 100644 --- a/Controller/ApiDriverController.php +++ b/Controller/ApiDriverController.php @@ -33,7 +33,6 @@ use phpOMS\Message\Http\RequestStatusCode; use phpOMS\Message\NotificationLevel; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; -use phpOMS\Model\Message\FormValidation; /** * FleetManagement class. @@ -61,8 +60,8 @@ final class ApiDriverController extends Controller public function apiDriverCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { if (!empty($val = $this->validateDriverCreate($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; } @@ -77,14 +76,7 @@ final class ApiDriverController extends Controller $this->createDriverMedia($driver, $request); } - $this->fillJsonResponse( - $request, - $response, - NotificationLevel::OK, - '', - $this->app->l11nManager->getText($response->header->l11n->language, '0', '0', 'SucessfulCreate'), - $driver - ); + $this->createStandardCreateResponse($request, $response, $driver); } /** @@ -254,8 +246,8 @@ final class ApiDriverController extends Controller public function apiMediaAddToDriver(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { if (!empty($val = $this->validateMediaAddToDriver($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; } @@ -400,24 +392,16 @@ final class ApiDriverController extends Controller public function apiDriverInspectionTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { if (!empty($val = $this->validateDriverInspectionTypeCreate($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; } - /** @var BaseStringL11nType $driver */ - $driver = $this->createDriverInspectionTypeFromRequest($request); - $this->createModel($request->header->account, $driver, DriverInspectionTypeMapper::class, 'driver_inspection_type', $request->getOrigin()); - - $this->fillJsonResponse( - $request, - $response, - NotificationLevel::OK, - '', - $this->app->l11nManager->getText($response->header->l11n->language, '0', '0', 'SucessfulCreate'), - $driver - ); + /** @var BaseStringL11nType $inspection */ + $inspection = $this->createDriverInspectionTypeFromRequest($request); + $this->createModel($request->header->account, $inspection, DriverInspectionTypeMapper::class, 'driver_inspection_type', $request->getOrigin()); + $this->createStandardCreateResponse($request, $response, $inspection); } /** @@ -475,15 +459,15 @@ final class ApiDriverController extends Controller public function apiDriverInspectionTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { if (!empty($val = $this->validateDriverInspectionTypeL11nCreate($request))) { - $response->data['driver_inspection_type_l11n_create'] = new FormValidation($val); - $response->header->status = RequestStatusCode::R_400; + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidCreateResponse($request, $response, $val); return; } $typeL11n = $this->createDriverInspectionTypeL11nFromRequest($request); $this->createModel($request->header->account, $typeL11n, DriverInspectionTypeL11nMapper::class, 'driver_inspection_type_l11n', $request->getOrigin()); - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $typeL11n); + $this->createStandardCreateResponse($request, $response, $typeL11n); } /** @@ -544,8 +528,8 @@ final class ApiDriverController extends Controller public function apiNoteCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { if (!empty($val = $this->validateNoteCreate($request))) { - $response->data['driver_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/ApiVehicleAttributeController.php b/Controller/ApiVehicleAttributeController.php index 739a828..c40475d 100644 --- a/Controller/ApiVehicleAttributeController.php +++ b/Controller/ApiVehicleAttributeController.php @@ -17,20 +17,15 @@ namespace Modules\FleetManagement\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\FleetManagement\Models\VehicleAttributeMapper; -use Modules\FleetManagement\Models\VehicleAttributeTypeL11nMapper; -use Modules\FleetManagement\Models\VehicleAttributeTypeMapper; -use Modules\FleetManagement\Models\VehicleAttributeValueL11nMapper; -use Modules\FleetManagement\Models\VehicleAttributeValueMapper; +use Modules\FleetManagement\Models\Attribute\VehicleAttributeMapper; +use Modules\FleetManagement\Models\Attribute\VehicleAttributeTypeL11nMapper; +use Modules\FleetManagement\Models\Attribute\VehicleAttributeTypeMapper; +use Modules\FleetManagement\Models\Attribute\VehicleAttributeValueL11nMapper; +use Modules\FleetManagement\Models\Attribute\VehicleAttributeValueMapper; 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; /** * FleetManagement class. @@ -42,8 +37,10 @@ use phpOMS\Model\Message\FormValidation; */ final class ApiVehicleAttributeController extends Controller { + use \Modules\Attribute\Controller\ApiAttributeTraitController; + /** - * Api method to create vehicle attribute + * Api method to create item attribute * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -57,158 +54,16 @@ final class ApiVehicleAttributeController extends Controller */ public function apiVehicleAttributeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { - if (!empty($val = $this->validateVehicleAttributeCreate($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->createVehicleAttributeFromRequest($request); + $attribute = $this->createAttributeFromRequest($request); $this->createModel($request->header->account, $attribute, VehicleAttributeMapper::class, 'attribute', $request->getOrigin()); - - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute', 'Attribute successfully created', $attribute); - } - - /** - * Method to create vehicle attribute from request. - * - * @param RequestAbstract $request Request - * - * @return Attribute - * - * @since 1.0.0 - */ - private function createVehicleAttributeFromRequest(RequestAbstract $request) : Attribute - { - $attribute = new Attribute(); - $attribute->ref = (int) $request->getData('vehicle'); - $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 vehicle attribute create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateVehicleAttributeCreate(RequestAbstract $request) : array - { - $val = []; - if (($val['type'] = !$request->hasData('type')) - || ($val['value'] = (!$request->hasData('value') && !$request->hasData('custom'))) - || ($val['vehicle'] = !$request->hasData('vehicle')) - ) { - return $val; - } - - return []; - } - - /** - * Api method to create vehicle attribute - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return void - * - * @api - * - * @since 1.0.0 - */ - public function apiVehicleAttributeUpdate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void - { - if (!empty($val = $this->validateVehicleAttributeUpdate($request))) { - $response->data['attribute_update'] = new FormValidation($val); - $response->header->status = RequestStatusCode::R_400; - - return; - } - - $old = VehicleAttributeMapper::get() - ->with('type') - ->with('type/defaults') - ->with('value') - ->where('id', (int) $request->getData('id')) - ->execute(); - - $new = $this->updateVehicleAttributeFromRequest($request, $old->deepClone()); - $this->updateModel($request->header->account, $old, $new, VehicleAttributeMapper::class, 'attribute', $request->getOrigin()); - - if ($new->value->getValue() !== $old->value->getValue()) { - $this->updateModel($request->header->account, $old->value, $new->value, VehicleAttributeValueMapper::class, 'attribute_value', $request->getOrigin()); - } - - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute', 'Attribute successfully updated', $new); - } - - /** - * Method to create vehicle attribute from request. - * - * @param RequestAbstract $request Request - * - * @return Attribute - * - * @since 1.0.0 - */ - private function updateVehicleAttributeFromRequest(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 vehicle attribute create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateVehicleAttributeUpdate(RequestAbstract $request) : array - { - $val = []; - if (($val['id'] = !$request->hasData('id')) - ) { - return $val; - } - - return []; + $this->createStandardCreateResponse($request, $response, $attribute); } /** @@ -226,58 +81,16 @@ final class ApiVehicleAttributeController extends Controller */ public function apiVehicleAttributeTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { - if (!empty($val = $this->validateVehicleAttributeTypeL11nCreate($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->createVehicleAttributeTypeL11nFromRequest($request); + $attrL11n = $this->createAttributeTypeL11nFromRequest($request); $this->createModel($request->header->account, $attrL11n, VehicleAttributeTypeL11nMapper::class, 'attr_type_l11n', $request->getOrigin()); - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $attrL11n); - } - - /** - * Method to create vehicle attribute l11n from request. - * - * @param RequestAbstract $request Request - * - * @return BaseStringL11n - * - * @since 1.0.0 - */ - private function createVehicleAttributeTypeL11nFromRequest(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 vehicle attribute l11n create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateVehicleAttributeTypeL11nCreate(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 ApiVehicleAttributeController extends Controller */ public function apiVehicleAttributeTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { - if (!empty($val = $this->validateVehicleAttributeTypeCreate($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, VehicleAttributeTypeMapper::class, 'attr_type', $request->getOrigin()); - - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute type', 'Attribute type successfully created', $attrType); - } - - /** - * Method to create vehicle 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 vehicle attribute create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateVehicleAttributeTypeCreate(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 ApiVehicleAttributeController extends Controller */ public function apiVehicleAttributeValueCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { - if (!empty($val = $this->validateVehicleAttributeValueCreate($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 = VehicleAttributeTypeMapper::get() + ->where('id', $request->getDataInt('type') ?? 0) + ->execute(); + + $attrValue = $this->createAttributeValueFromRequest($request, $type); $this->createModel($request->header->account, $attrValue, VehicleAttributeValueMapper::class, 'attr_value', $request->getOrigin()); if ($attrValue->isDefault) { @@ -385,55 +159,7 @@ final class ApiVehicleAttributeController extends Controller ); } - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute value', 'Attribute value successfully created', $attrValue); - } - - /** - * Method to create vehicle attribute value from request. - * - * @param RequestAbstract $request Request - * - * @return AttributeValue - * - * @since 1.0.0 - */ - private function createAttributeValueFromRequest(RequestAbstract $request) : AttributeValue - { - /** @var AttributeType $type */ - $type = VehicleAttributeTypeMapper::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 vehicle attribute value create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateVehicleAttributeValueCreate(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 ApiVehicleAttributeController extends Controller */ public function apiVehicleAttributeValueL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { - if (!empty($val = $this->validateVehicleAttributeValueL11nCreate($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, VehicleAttributeValueL11nMapper::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 vehicle 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 vehicle attribute l11n create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateVehicleAttributeValueL11nCreate(RequestAbstract $request) : array - { - $val = []; - if (($val['title'] = !$request->hasData('title')) - || ($val['value'] = !$request->hasData('value')) - ) { - return $val; - } - - return []; - } - - /** - * Api method to handle api vehicle attributes + * Api method to update VehicleAttribute * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -518,17 +202,322 @@ final class ApiVehicleAttributeController extends Controller * * @since 1.0.0 */ - public function apiVehicleAttribute(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + public function apiVehicleAttributeUpdate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { - if (!empty($val = $this->validateVehicleAttributeValueL11nCreate($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, VehicleAttributeValueL11nMapper::class, 'attr_value_l11n', $request->getOrigin()); - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $attrL11n); + /** @var Attribute $old */ + $old = VehicleAttributeMapper::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, VehicleAttributeMapper::class, 'vehicle_attribute', $request->getOrigin()); + + if ($new->value->getValue() !== $old->value->getValue()) { + $this->updateModel($request->header->account, $old->value, $new->value, VehicleAttributeValueMapper::class, 'attribute_value', $request->getOrigin()); + } + + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Api method to delete VehicleAttribute + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiVehicleAttributeDelete(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; + } + + $vehicleAttribute = VehicleAttributeMapper::get() + ->with('type') + ->where('id', (int) $request->getData('id')) + ->execute(); + + if ($vehicleAttribute->type->isRequired) { + $this->createInvalidDeleteResponse($request, $response, []); + + return; + } + + $this->deleteModel($request->header->account, $vehicleAttribute, VehicleAttributeMapper::class, 'vehicle_attribute', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $vehicleAttribute); + } + + /** + * Api method to update VehicleAttributeTypeL11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiVehicleAttributeTypeL11nUpdate(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 = VehicleAttributeTypeL11nMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $new = $this->updateAttributeTypeL11nFromRequest($request, clone $old); + + $this->updateModel($request->header->account, $old, $new, VehicleAttributeTypeL11nMapper::class, 'vehicle_attribute_type_l11n', $request->getOrigin()); + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Api method to delete VehicleAttributeTypeL11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiVehicleAttributeTypeL11nDelete(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\FleetManagement\Models\VehicleAttributeTypeL11n $vehicleAttributeTypeL11n */ + $vehicleAttributeTypeL11n = VehicleAttributeTypeL11nMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $this->deleteModel($request->header->account, $vehicleAttributeTypeL11n, VehicleAttributeTypeL11nMapper::class, 'vehicle_attribute_type_l11n', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $vehicleAttributeTypeL11n); + } + + /** + * Api method to update VehicleAttributeType + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiVehicleAttributeTypeUpdate(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 = VehicleAttributeTypeMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $new = $this->updateAttributeTypeFromRequest($request, clone $old); + + $this->updateModel($request->header->account, $old, $new, VehicleAttributeTypeMapper::class, 'vehicle_attribute_type', $request->getOrigin()); + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Api method to delete VehicleAttributeType + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @todo: implement + * + * @since 1.0.0 + */ + public function apiVehicleAttributeTypeDelete(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\FleetManagement\Models\VehicleAttributeType $vehicleAttributeType */ + $vehicleAttributeType = VehicleAttributeTypeMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $this->deleteModel($request->header->account, $vehicleAttributeType, VehicleAttributeTypeMapper::class, 'vehicle_attribute_type', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $vehicleAttributeType); + } + + /** + * Api method to update VehicleAttributeValue + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiVehicleAttributeValueUpdate(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 = VehicleAttributeValueMapper::get()->where('id', (int) $request->getData('id'))->execute(); + + /** @var \Modules\Attribute\Models\Attribute $type */ + $attr = VehicleAttributeMapper::get() + ->with('type') + ->where('id', $request->getDataInt('attribute') ?? 0) + ->execute(); + + $new = $this->updateAttributeValueFromRequest($request, clone $old, $attr); + + $this->updateModel($request->header->account, $old, $new, VehicleAttributeValueMapper::class, 'vehicle_attribute_value', $request->getOrigin()); + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Api method to delete VehicleAttributeValue + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiVehicleAttributeValueDelete(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\FleetManagement\Models\VehicleAttributeValue $vehicleAttributeValue */ + $vehicleAttributeValue = VehicleAttributeValueMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $this->deleteModel($request->header->account, $vehicleAttributeValue, VehicleAttributeValueMapper::class, 'vehicle_attribute_value', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $vehicleAttributeValue); + } + + /** + * Api method to update VehicleAttributeValueL11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiVehicleAttributeValueL11nUpdate(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 = VehicleAttributeValueL11nMapper::get()->where('id', (int) $request->getData('id')); + $new = $this->updateAttributeValueL11nFromRequest($request, clone $old); + + $this->updateModel($request->header->account, $old, $new, VehicleAttributeValueL11nMapper::class, 'vehicle_attribute_value_l11n', $request->getOrigin()); + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Api method to delete VehicleAttributeValueL11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiVehicleAttributeValueL11nDelete(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\FleetManagement\Models\VehicleAttributeValueL11n $vehicleAttributeValueL11n */ + $vehicleAttributeValueL11n = VehicleAttributeValueL11nMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $this->deleteModel($request->header->account, $vehicleAttributeValueL11n, VehicleAttributeValueL11nMapper::class, 'vehicle_attribute_value_l11n', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $vehicleAttributeValueL11n); } } diff --git a/Controller/ApiVehicleController.php b/Controller/ApiVehicleController.php index c77a232..411dc17 100755 --- a/Controller/ApiVehicleController.php +++ b/Controller/ApiVehicleController.php @@ -38,7 +38,6 @@ use phpOMS\Message\Http\RequestStatusCode; use phpOMS\Message\NotificationLevel; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; -use phpOMS\Model\Message\FormValidation; /** * FleetManagement class. @@ -66,8 +65,8 @@ final class ApiVehicleController extends Controller public function apiVehicleTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { if (!empty($val = $this->validateVehicleTypeCreate($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; } @@ -75,15 +74,7 @@ final class ApiVehicleController extends Controller /** @var BaseStringL11nType $vehicle */ $vehicle = $this->createVehicleTypeFromRequest($request); $this->createModel($request->header->account, $vehicle, VehicleTypeMapper::class, 'vehicle_type', $request->getOrigin()); - - $this->fillJsonResponse( - $request, - $response, - NotificationLevel::OK, - '', - $this->app->l11nManager->getText($response->header->l11n->language, '0', '0', 'SucessfulCreate'), - $vehicle - ); + $this->createStandardCreateResponse($request, $response, $vehicle); } /** @@ -141,15 +132,15 @@ final class ApiVehicleController extends Controller public function apiVehicleTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { if (!empty($val = $this->validateVehicleTypeL11nCreate($request))) { - $response->data['vehicle_type_l11n_create'] = new FormValidation($val); - $response->header->status = RequestStatusCode::R_400; + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidCreateResponse($request, $response, $val); return; } $typeL11n = $this->createVehicleTypeL11nFromRequest($request); $this->createModel($request->header->account, $typeL11n, VehicleTypeL11nMapper::class, 'vehicle_type_l11n', $request->getOrigin()); - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $typeL11n); + $this->createStandardCreateResponse($request, $response, $typeL11n); } /** @@ -210,8 +201,8 @@ final class ApiVehicleController extends Controller public function apiFuelTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { if (!empty($val = $this->validateFuelTypeCreate($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; } @@ -219,15 +210,7 @@ final class ApiVehicleController extends Controller /** @var BaseStringL11nType $vehicle */ $vehicle = $this->createFuelTypeFromRequest($request); $this->createModel($request->header->account, $vehicle, FuelTypeMapper::class, 'fuel_type', $request->getOrigin()); - - $this->fillJsonResponse( - $request, - $response, - NotificationLevel::OK, - '', - $this->app->l11nManager->getText($response->header->l11n->language, '0', '0', 'SucessfulCreate'), - $vehicle - ); + $this->createStandardCreateResponse($request, $response, $vehicle); } /** @@ -285,15 +268,15 @@ final class ApiVehicleController extends Controller public function apiFuelTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { if (!empty($val = $this->validateFuelTypeL11nCreate($request))) { - $response->data['fuel_type_l11n_create'] = new FormValidation($val); - $response->header->status = RequestStatusCode::R_400; + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidCreateResponse($request, $response, $val); return; } $typeL11n = $this->createFuelTypeL11nFromRequest($request); $this->createModel($request->header->account, $typeL11n, FuelTypeL11nMapper::class, 'fuel_type_l11n', $request->getOrigin()); - $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $typeL11n); + $this->createStandardCreateResponse($request, $response, $typeL11n); } /** @@ -354,8 +337,8 @@ final class ApiVehicleController extends Controller public function apiVehicleCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { if (!empty($val = $this->validateVehicleCreate($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; } @@ -370,14 +353,7 @@ final class ApiVehicleController extends Controller $this->createVehicleMedia($vehicle, $request); } - $this->fillJsonResponse( - $request, - $response, - NotificationLevel::OK, - '', - $this->app->l11nManager->getText($response->header->l11n->language, '0', '0', 'SucessfulCreate'), - $vehicle - ); + $this->createStandardCreateResponse($request, $response, $vehicle); } /** @@ -552,8 +528,8 @@ final class ApiVehicleController extends Controller public function apiMediaAddToVehicle(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { if (!empty($val = $this->validateMediaAddToVehicle($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; } @@ -698,8 +674,8 @@ final class ApiVehicleController extends Controller 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; + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidCreateResponse($request, $response, $val); return; } @@ -707,15 +683,7 @@ final class ApiVehicleController extends Controller /** @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 - ); + $this->createStandardCreateResponse($request, $response, $inspection); } /** @@ -773,15 +741,15 @@ final class ApiVehicleController extends Controller 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; + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidCreateResponse($request, $response, $val); 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); + $this->createStandardCreateResponse($request, $response, $typeL11n); } /** @@ -842,8 +810,8 @@ final class ApiVehicleController extends Controller public function apiNoteCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void { if (!empty($val = $this->validateNoteCreate($request))) { - $response->data['vehicle_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/Models/Driver/DriverAttributeMapper.php b/Models/Attribute/DriverAttributeMapper.php similarity index 93% rename from Models/Driver/DriverAttributeMapper.php rename to Models/Attribute/DriverAttributeMapper.php index 6138f69..222fd09 100644 --- a/Models/Driver/DriverAttributeMapper.php +++ b/Models/Attribute/DriverAttributeMapper.php @@ -4,7 +4,7 @@ * * PHP Version 8.1 * - * @package Modules\FleetManagement\Models\Driver + * @package Modules\FleetManagement\Models\Attribute * @copyright Dennis Eichhorn * @license OMS License 2.0 * @version 1.0.0 @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\FleetManagement\Models\Driver; +namespace Modules\FleetManagement\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\FleetManagement\Models\Driver + * @package Modules\FleetManagement\Models\Attribute * @license OMS License 2.0 * @link https://jingga.app * @since 1.0.0 diff --git a/Models/Driver/DriverAttributeTypeL11nMapper.php b/Models/Attribute/DriverAttributeTypeL11nMapper.php similarity index 92% rename from Models/Driver/DriverAttributeTypeL11nMapper.php rename to Models/Attribute/DriverAttributeTypeL11nMapper.php index 7439317..70b2653 100644 --- a/Models/Driver/DriverAttributeTypeL11nMapper.php +++ b/Models/Attribute/DriverAttributeTypeL11nMapper.php @@ -4,7 +4,7 @@ * * PHP Version 8.1 * - * @package Modules\FleetManagement\Models\Driver + * @package Modules\FleetManagement\Models\Attribute * @copyright Dennis Eichhorn * @license OMS License 2.0 * @version 1.0.0 @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\FleetManagement\Models\Driver; +namespace Modules\FleetManagement\Models\Attribute; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; use phpOMS\Localization\BaseStringL11n; @@ -20,7 +20,7 @@ use phpOMS\Localization\BaseStringL11n; /** * Driver mapper class. * - * @package Modules\FleetManagement\Models\Driver + * @package Modules\FleetManagement\Models\Attribute * @license OMS License 2.0 * @link https://jingga.app * @since 1.0.0 diff --git a/Models/Driver/DriverAttributeTypeMapper.php b/Models/Attribute/DriverAttributeTypeMapper.php similarity index 95% rename from Models/Driver/DriverAttributeTypeMapper.php rename to Models/Attribute/DriverAttributeTypeMapper.php index 544eaab..92fd7c5 100644 --- a/Models/Driver/DriverAttributeTypeMapper.php +++ b/Models/Attribute/DriverAttributeTypeMapper.php @@ -4,7 +4,7 @@ * * PHP Version 8.1 * - * @package Modules\FleetManagement\Models\Driver + * @package Modules\FleetManagement\Models\Attribute * @copyright Dennis Eichhorn * @license OMS License 2.0 * @version 1.0.0 @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\FleetManagement\Models\Driver; +namespace Modules\FleetManagement\Models\Attribute; use Modules\Attribute\Models\AttributeType; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; @@ -20,7 +20,7 @@ use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; /** * Driver mapper class. * - * @package Modules\FleetManagement\Models\Driver + * @package Modules\FleetManagement\Models\Attribute * @license OMS License 2.0 * @link https://jingga.app * @since 1.0.0 diff --git a/Models/Driver/DriverAttributeValueL11nMapper.php b/Models/Attribute/DriverAttributeValueL11nMapper.php similarity index 92% rename from Models/Driver/DriverAttributeValueL11nMapper.php rename to Models/Attribute/DriverAttributeValueL11nMapper.php index cdb986d..a9ca0de 100644 --- a/Models/Driver/DriverAttributeValueL11nMapper.php +++ b/Models/Attribute/DriverAttributeValueL11nMapper.php @@ -4,7 +4,7 @@ * * PHP Version 8.1 * - * @package Modules\FleetManagement\Models\Driver + * @package Modules\FleetManagement\Models\Attribute * @copyright Dennis Eichhorn * @license OMS License 2.0 * @version 1.0.0 @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\FleetManagement\Models\Driver; +namespace Modules\FleetManagement\Models\Attribute; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; use phpOMS\Localization\BaseStringL11n; @@ -20,7 +20,7 @@ use phpOMS\Localization\BaseStringL11n; /** * Driver mapper class. * - * @package Modules\FleetManagement\Models\Driver + * @package Modules\FleetManagement\Models\Attribute * @license OMS License 2.0 * @link https://jingga.app * @since 1.0.0 diff --git a/Models/Driver/DriverAttributeValueMapper.php b/Models/Attribute/DriverAttributeValueMapper.php similarity index 95% rename from Models/Driver/DriverAttributeValueMapper.php rename to Models/Attribute/DriverAttributeValueMapper.php index 7b883b5..7f0b898 100644 --- a/Models/Driver/DriverAttributeValueMapper.php +++ b/Models/Attribute/DriverAttributeValueMapper.php @@ -4,7 +4,7 @@ * * PHP Version 8.1 * - * @package Modules\FleetManagement\Models\Driver + * @package Modules\FleetManagement\Models\Attribute * @copyright Dennis Eichhorn * @license OMS License 2.0 * @version 1.0.0 @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\FleetManagement\Models\Driver; +namespace Modules\FleetManagement\Models\Attribute; use Modules\Attribute\Models\AttributeValue; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; @@ -20,7 +20,7 @@ use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; /** * Driver mapper class. * - * @package Modules\FleetManagement\Models\Driver + * @package Modules\FleetManagement\Models\Attribute * @license OMS License 2.0 * @link https://jingga.app * @since 1.0.0 diff --git a/Models/VehicleAttributeMapper.php b/Models/Attribute/VehicleAttributeMapper.php similarity index 93% rename from Models/VehicleAttributeMapper.php rename to Models/Attribute/VehicleAttributeMapper.php index 4cd22c9..c3c39f3 100644 --- a/Models/VehicleAttributeMapper.php +++ b/Models/Attribute/VehicleAttributeMapper.php @@ -4,7 +4,7 @@ * * PHP Version 8.1 * - * @package Modules\FleetManagement\Models + * @package Modules\FleetManagement\Models\Attribute * @copyright Dennis Eichhorn * @license OMS License 2.0 * @version 1.0.0 @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\FleetManagement\Models; +namespace Modules\FleetManagement\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\FleetManagement\Models + * @package Modules\FleetManagement\Models\Attribute * @license OMS License 2.0 * @link https://jingga.app * @since 1.0.0 diff --git a/Models/VehicleAttributeTypeL11nMapper.php b/Models/Attribute/VehicleAttributeTypeL11nMapper.php similarity index 91% rename from Models/VehicleAttributeTypeL11nMapper.php rename to Models/Attribute/VehicleAttributeTypeL11nMapper.php index 3aaea51..9748327 100644 --- a/Models/VehicleAttributeTypeL11nMapper.php +++ b/Models/Attribute/VehicleAttributeTypeL11nMapper.php @@ -4,7 +4,7 @@ * * PHP Version 8.1 * - * @package Modules\FleetManagement\Models + * @package Modules\FleetManagement\Models\Attribute * @copyright Dennis Eichhorn * @license OMS License 2.0 * @version 1.0.0 @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\FleetManagement\Models; +namespace Modules\FleetManagement\Models\Attribute; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; use phpOMS\Localization\BaseStringL11n; @@ -20,7 +20,7 @@ use phpOMS\Localization\BaseStringL11n; /** * Vehicle mapper class. * - * @package Modules\FleetManagement\Models + * @package Modules\FleetManagement\Models\Attribute * @license OMS License 2.0 * @link https://jingga.app * @since 1.0.0 diff --git a/Models/VehicleAttributeTypeMapper.php b/Models/Attribute/VehicleAttributeTypeMapper.php similarity index 94% rename from Models/VehicleAttributeTypeMapper.php rename to Models/Attribute/VehicleAttributeTypeMapper.php index 314e148..63be3db 100644 --- a/Models/VehicleAttributeTypeMapper.php +++ b/Models/Attribute/VehicleAttributeTypeMapper.php @@ -4,7 +4,7 @@ * * PHP Version 8.1 * - * @package Modules\FleetManagement\Models + * @package Modules\FleetManagement\Models\Attribute * @copyright Dennis Eichhorn * @license OMS License 2.0 * @version 1.0.0 @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\FleetManagement\Models; +namespace Modules\FleetManagement\Models\Attribute; use Modules\Attribute\Models\AttributeType; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; @@ -20,7 +20,7 @@ use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; /** * Vehicle mapper class. * - * @package Modules\FleetManagement\Models + * @package Modules\FleetManagement\Models\Attribute * @license OMS License 2.0 * @link https://jingga.app * @since 1.0.0 diff --git a/Models/VehicleAttributeValueL11nMapper.php b/Models/Attribute/VehicleAttributeValueL11nMapper.php similarity index 91% rename from Models/VehicleAttributeValueL11nMapper.php rename to Models/Attribute/VehicleAttributeValueL11nMapper.php index b96c4d4..dfee443 100644 --- a/Models/VehicleAttributeValueL11nMapper.php +++ b/Models/Attribute/VehicleAttributeValueL11nMapper.php @@ -4,7 +4,7 @@ * * PHP Version 8.1 * - * @package Modules\FleetManagement\Models + * @package Modules\FleetManagement\Models\Attribute * @copyright Dennis Eichhorn * @license OMS License 2.0 * @version 1.0.0 @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\FleetManagement\Models; +namespace Modules\FleetManagement\Models\Attribute; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; use phpOMS\Localization\BaseStringL11n; @@ -20,7 +20,7 @@ use phpOMS\Localization\BaseStringL11n; /** * Vehicle mapper class. * - * @package Modules\FleetManagement\Models + * @package Modules\FleetManagement\Models\Attribute * @license OMS License 2.0 * @link https://jingga.app * @since 1.0.0 diff --git a/Models/VehicleAttributeValueMapper.php b/Models/Attribute/VehicleAttributeValueMapper.php similarity index 94% rename from Models/VehicleAttributeValueMapper.php rename to Models/Attribute/VehicleAttributeValueMapper.php index 5e1cd12..2948e3f 100644 --- a/Models/VehicleAttributeValueMapper.php +++ b/Models/Attribute/VehicleAttributeValueMapper.php @@ -4,7 +4,7 @@ * * PHP Version 8.1 * - * @package Modules\FleetManagement\Models + * @package Modules\FleetManagement\Models\Attribute * @copyright Dennis Eichhorn * @license OMS License 2.0 * @version 1.0.0 @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\FleetManagement\Models; +namespace Modules\FleetManagement\Models\Attribute; use Modules\Attribute\Models\AttributeValue; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; @@ -20,7 +20,7 @@ use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; /** * Vehicle mapper class. * - * @package Modules\FleetManagement\Models + * @package Modules\FleetManagement\Models\Attribute * @license OMS License 2.0 * @link https://jingga.app * @since 1.0.0 diff --git a/Models/VehicleMapper.php b/Models/VehicleMapper.php index bf821ba..cb099e9 100644 --- a/Models/VehicleMapper.php +++ b/Models/VehicleMapper.php @@ -17,6 +17,7 @@ namespace Modules\FleetManagement\Models; use Modules\Media\Models\MediaMapper; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; use Modules\Editor\Models\EditorDocMapper; +use Modules\FleetManagement\Models\Attribute\VehicleAttributeMapper; /** * Mapper class.