From fc4122e71b6510dfd495a8b2bc0aa127112ba8c8 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Mon, 28 Aug 2023 22:06:36 +0000 Subject: [PATCH] update --- Admin/Installer.php | 10 +- Controller/ApiAttributeController.php | 523 ++++++++++++++++++ Controller/ApiController.php | 410 +------------- .../{ => Attribute}/UnitAttributeMapper.php | 6 +- .../UnitAttributeTypeL11nMapper.php | 6 +- .../UnitAttributeTypeMapper.php | 6 +- .../UnitAttributeValueL11nMapper.php | 6 +- .../UnitAttributeValueMapper.php | 6 +- Models/UnitMapper.php | 1 + tests/Autoloader.php | 4 +- 10 files changed, 557 insertions(+), 421 deletions(-) create mode 100644 Controller/ApiAttributeController.php rename Models/{ => Attribute}/UnitAttributeMapper.php (93%) mode change 100755 => 100644 rename Models/{ => Attribute}/UnitAttributeTypeL11nMapper.php (91%) mode change 100755 => 100644 rename Models/{ => Attribute}/UnitAttributeTypeMapper.php (94%) mode change 100755 => 100644 rename Models/{ => Attribute}/UnitAttributeValueL11nMapper.php (92%) mode change 100755 => 100644 rename Models/{ => Attribute}/UnitAttributeValueMapper.php (95%) mode change 100755 => 100644 diff --git a/Admin/Installer.php b/Admin/Installer.php index b0de2a5..f61905a 100755 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -81,8 +81,8 @@ final class Installer extends InstallerAbstract /** @var array $unitAttrType */ $unitAttrType = []; - /** @var \Modules\Organization\Controller\ApiController $module */ - $module = $app->moduleManager->getModuleInstance('Organization'); + /** @var \Modules\Organization\Controller\ApiAttributeController $module */ + $module = $app->moduleManager->getModuleInstance('Organization', 'ApiAttribute'); /** @var array $attribute */ foreach ($attributes as $attribute) { @@ -148,8 +148,8 @@ final class Installer extends InstallerAbstract /** @var array $unitAttrValue */ $unitAttrValue = []; - /** @var \Modules\Organization\Controller\ApiController $module */ - $module = $app->moduleManager->getModuleInstance('Organization'); + /** @var \Modules\Organization\Controller\ApiAttributeController $module */ + $module = $app->moduleManager->getModuleInstance('Organization', 'ApiAttribute'); foreach ($attributes as $attribute) { $unitAttrValue[$attribute['name']] = []; @@ -216,7 +216,7 @@ final class Installer extends InstallerAbstract private static function installDefaultUnit() : void { $unit = new Unit(); - $unit->name = 'Karaka'; + $unit->name = 'Jingga'; UnitMapper::create()->execute($unit); } diff --git a/Controller/ApiAttributeController.php b/Controller/ApiAttributeController.php new file mode 100644 index 0000000..dad5115 --- /dev/null +++ b/Controller/ApiAttributeController.php @@ -0,0 +1,523 @@ +validateAttributeCreate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidCreateResponse($request, $response, $val); + + return; + } + + $attribute = $this->createAttributeFromRequest($request); + $this->createModel($request->header->account, $attribute, UnitAttributeMapper::class, 'attribute', $request->getOrigin()); + $this->createStandardCreateResponse($request, $response, $attribute); + } + + /** + * Api method to create unit attribute l11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiUnitAttributeTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateAttributeTypeL11nCreate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidCreateResponse($request, $response, $val); + + return; + } + + $attrL11n = $this->createAttributeTypeL11nFromRequest($request); + $this->createModel($request->header->account, $attrL11n, UnitAttributeTypeL11nMapper::class, 'attr_type_l11n', $request->getOrigin()); + $this->createStandardCreateResponse($request, $response, $attrL11n); + } + + /** + * Api method to create unit attribute type + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiUnitAttributeTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + 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, UnitAttributeTypeMapper::class, 'attr_type', $request->getOrigin()); + $this->createStandardCreateResponse($request, $response, $attrType); + } + + /** + * Api method to create unit attribute value + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiUnitAttributeValueCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateAttributeValueCreate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidCreateResponse($request, $response, $val); + + return; + } + + /** @var \Modules\Attribute\Models\AttributeType $type */ + $type = UnitAttributeTypeMapper::get() + ->where('id', $request->getDataInt('type') ?? 0) + ->execute(); + + $attrValue = $this->createAttributeValueFromRequest($request, $type); + $this->createModel($request->header->account, $attrValue, UnitAttributeValueMapper::class, 'attr_value', $request->getOrigin()); + + if ($attrValue->isDefault) { + $this->createModelRelation( + $request->header->account, + (int) $request->getData('type'), + $attrValue->id, + UnitAttributeTypeMapper::class, 'defaults', '', $request->getOrigin() + ); + } + + $this->createStandardCreateResponse($request, $response, $attrValue); + } + + /** + * Api method to create unit attribute l11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiUnitAttributeValueL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + 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, UnitAttributeValueL11nMapper::class, 'attr_value_l11n', $request->getOrigin()); + $this->createStandardCreateResponse($request, $response, $attrL11n); + } + + /** + * Api method to update UnitAttribute + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiUnitAttributeUpdate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateAttributeUpdate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidUpdateResponse($request, $response, $val); + + return; + } + + /** @var Attribute $old */ + $old = UnitAttributeMapper::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, UnitAttributeMapper::class, 'unit_attribute', $request->getOrigin()); + + if ($new->value->getValue() !== $old->value->getValue()) { + $this->updateModel($request->header->account, $old->value, $new->value, UnitAttributeValueMapper::class, 'attribute_value', $request->getOrigin()); + } + + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Api method to delete UnitAttribute + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiUnitAttributeDelete(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; + } + + $unitAttribute = UnitAttributeMapper::get() + ->with('type') + ->where('id', (int) $request->getData('id')) + ->execute(); + + if ($unitAttribute->type->isRequired) { + $this->createInvalidDeleteResponse($request, $response, []); + + return; + } + + $this->deleteModel($request->header->account, $unitAttribute, UnitAttributeMapper::class, 'unit_attribute', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $unitAttribute); + } + + /** + * Api method to update UnitAttributeTypeL11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiUnitAttributeTypeL11nUpdate(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 = UnitAttributeTypeL11nMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $new = $this->updateAttributeTypeL11nFromRequest($request, clone $old); + + $this->updateModel($request->header->account, $old, $new, UnitAttributeTypeL11nMapper::class, 'unit_attribute_type_l11n', $request->getOrigin()); + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Api method to delete UnitAttributeTypeL11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiUnitAttributeTypeL11nDelete(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\Organization\Models\UnitAttributeTypeL11n $unitAttributeTypeL11n */ + $unitAttributeTypeL11n = UnitAttributeTypeL11nMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $this->deleteModel($request->header->account, $unitAttributeTypeL11n, UnitAttributeTypeL11nMapper::class, 'unit_attribute_type_l11n', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $unitAttributeTypeL11n); + } + + /** + * Api method to update UnitAttributeType + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiUnitAttributeTypeUpdate(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 = UnitAttributeTypeMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $new = $this->updateAttributeTypeFromRequest($request, clone $old); + + $this->updateModel($request->header->account, $old, $new, UnitAttributeTypeMapper::class, 'unit_attribute_type', $request->getOrigin()); + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Api method to delete UnitAttributeType + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @todo: implement + * + * @since 1.0.0 + */ + public function apiUnitAttributeTypeDelete(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\Organization\Models\UnitAttributeType $unitAttributeType */ + $unitAttributeType = UnitAttributeTypeMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $this->deleteModel($request->header->account, $unitAttributeType, UnitAttributeTypeMapper::class, 'unit_attribute_type', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $unitAttributeType); + } + + /** + * Api method to update UnitAttributeValue + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiUnitAttributeValueUpdate(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 = UnitAttributeValueMapper::get()->where('id', (int) $request->getData('id'))->execute(); + + /** @var \Modules\Attribute\Models\Attribute $type */ + $attr = UnitAttributeMapper::get() + ->with('type') + ->where('id', $request->getDataInt('attribute') ?? 0) + ->execute(); + + $new = $this->updateAttributeValueFromRequest($request, clone $old, $attr); + + $this->updateModel($request->header->account, $old, $new, UnitAttributeValueMapper::class, 'unit_attribute_value', $request->getOrigin()); + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Api method to delete UnitAttributeValue + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiUnitAttributeValueDelete(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\Organization\Models\UnitAttributeValue $unitAttributeValue */ + $unitAttributeValue = UnitAttributeValueMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $this->deleteModel($request->header->account, $unitAttributeValue, UnitAttributeValueMapper::class, 'unit_attribute_value', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $unitAttributeValue); + } + + /** + * Api method to update UnitAttributeValueL11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiUnitAttributeValueL11nUpdate(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 = UnitAttributeValueL11nMapper::get()->where('id', (int) $request->getData('id')); + $new = $this->updateAttributeValueL11nFromRequest($request, clone $old); + + $this->updateModel($request->header->account, $old, $new, UnitAttributeValueL11nMapper::class, 'unit_attribute_value_l11n', $request->getOrigin()); + $this->createStandardUpdateResponse($request, $response, $new); + } + + /** + * Api method to delete UnitAttributeValueL11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiUnitAttributeValueL11nDelete(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\Organization\Models\UnitAttributeValueL11n $unitAttributeValueL11n */ + $unitAttributeValueL11n = UnitAttributeValueL11nMapper::get()->where('id', (int) $request->getData('id'))->execute(); + $this->deleteModel($request->header->account, $unitAttributeValueL11n, UnitAttributeValueL11nMapper::class, 'unit_attribute_value_l11n', $request->getOrigin()); + $this->createStandardDeleteResponse($request, $response, $unitAttributeValueL11n); + } +} diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 14221f4..ccd6709 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -20,11 +20,6 @@ use Modules\Admin\Models\Address; use Modules\Admin\Models\AddressMapper; use Modules\Admin\Models\NullAddress; use Modules\Admin\Models\SettingsEnum as ModelsSettingsEnum; -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\Media\Models\PathSettings; use Modules\Organization\Models\Department; use Modules\Organization\Models\DepartmentMapper; @@ -36,16 +31,9 @@ use Modules\Organization\Models\PositionMapper; use Modules\Organization\Models\SettingsEnum; use Modules\Organization\Models\Status; use Modules\Organization\Models\Unit; -use Modules\Organization\Models\UnitAttributeMapper; -use Modules\Organization\Models\UnitAttributeTypeL11nMapper; -use Modules\Organization\Models\UnitAttributeTypeMapper; -use Modules\Organization\Models\UnitAttributeValueL11nMapper; -use Modules\Organization\Models\UnitAttributeValueMapper; use Modules\Organization\Models\UnitMapper; use phpOMS\Account\GroupStatus; -use phpOMS\Localization\BaseStringL11n; use phpOMS\Localization\ISO3166TwoEnum; -use phpOMS\Localization\ISO639x1Enum; use phpOMS\Message\Http\HttpRequest; use phpOMS\Message\Http\HttpResponse; use phpOMS\Message\Http\RequestStatusCode; @@ -145,9 +133,9 @@ final class ApiController extends Controller */ private function updateUnitFromRequest(RequestAbstract $request, Unit $unit) : Unit { - $unit->name = (string) ($request->getData('name') ?? $unit->name); - $unit->descriptionRaw = (string) ($request->getData('description') ?? $unit->descriptionRaw); - $unit->description = Markdown::parse((string) ($request->getData('description') ?? $unit->descriptionRaw)); + $unit->name = $request->getDataString('name') ?? $unit->name; + $unit->descriptionRaw = $request->getDataString('description') ?? $unit->descriptionRaw; + $unit->description = Markdown::parse($request->getDataString('description') ?? $unit->descriptionRaw); $parent = (int) $request->getData('parent'); $unit->parent = !empty($parent) ? new NullUnit($parent) : $unit->parent; @@ -521,9 +509,9 @@ final class ApiController extends Controller */ private function updatePositionFromRequest(RequestAbstract $request, Position $position) : Position { - $position->name = (string) ($request->getData('name') ?? $position->name); - $position->descriptionRaw = (string) ($request->getData('description') ?? $position->descriptionRaw); - $position->description = Markdown::parse((string) ($request->getData('description') ?? $position->descriptionRaw)); + $position->name = $request->getDataString('name') ?? $position->name; + $position->descriptionRaw = $request->getDataString('description') ?? $position->descriptionRaw; + $position->description = Markdown::parse($request->getDataString('description') ?? $position->descriptionRaw); $parent = (int) $request->getData('parent'); $position->parent = !empty($parent) ? new NullPosition($parent) : $position->parent; @@ -565,7 +553,7 @@ final class ApiController extends Controller if ($setting->content === '1') { $newRequest = new HttpRequest(); $newRequest->header->account = $request->header->account; - $newRequest->setData('name', 'org:pos:' . \str_replace(' ', '_', \strtolower($position->name))); + $newRequest->setData('name', 'org:pos:' . \strtr(\strtolower($position->name), ' ', '_')); $newRequest->setData('status', GroupStatus::ACTIVE); $this->app->moduleManager->get('Admin')->apiGroupCreate($newRequest, $response, $data); } @@ -585,8 +573,8 @@ final class ApiController extends Controller private function createPositionFromRequest(RequestAbstract $request) : Position { $position = new Position(); - $position->name = (string) ($request->getData('name')); - $position->setStatus((int) $request->getData('status')); + $position->name = $request->getDataString('name') ?? ''; + $position->setStatus($request->getDataInt('status') ?? Status::ACTIVE); $position->descriptionRaw = $request->getDataString('description') ?? ''; $position->description = Markdown::parse($request->getDataString('description') ?? ''); $position->parent = new NullPosition((int) $request->getData('parent')); @@ -675,9 +663,9 @@ final class ApiController extends Controller */ private function updateDepartmentFromRequest(RequestAbstract $request, Department $department) : Department { - $department->name = (string) ($request->getData('name') ?? $department->name); - $department->descriptionRaw = (string) ($request->getData('description') ?? $department->descriptionRaw); - $department->description = Markdown::parse((string) ($request->getData('description') ?? $department->descriptionRaw)); + $department->name = $request->getDataString('name') ?? $department->name; + $department->descriptionRaw = $request->getDataString('description') ?? $department->descriptionRaw; + $department->description = Markdown::parse($request->getDataString('description') ?? $department->descriptionRaw); $parent = (int) $request->getData('parent'); $department->parent = !empty($parent) ? new NullDepartment($parent) : $department->parent; @@ -851,378 +839,4 @@ final class ApiController extends Controller \array_values($positions) ); } - - /** - * Api method to create item attribute - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return void - * - * @api - * - * @since 1.0.0 - */ - public function apiUnitAttributeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void - { - if (!empty($val = $this->validateUnitAttributeCreate($request))) { - $response->header->status = RequestStatusCode::R_400; - $this->createInvalidCreateResponse($request, $response, $val); - - return; - } - - $attribute = $this->createUnitAttributeFromRequest($request); - $this->createModel($request->header->account, $attribute, UnitAttributeMapper::class, 'attribute', $request->getOrigin()); - $this->createStandardCreateResponse($request, $response, $attribute); - } - - /** - * Method to create item attribute from request. - * - * @param RequestAbstract $request Request - * - * @return Attribute - * - * @since 1.0.0 - */ - private function createUnitAttributeFromRequest(RequestAbstract $request) : Attribute - { - $attribute = new Attribute(); - $attribute->ref = (int) $request->getData('unit'); - $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->createUnitAttributeValueFromRequest($newRequest); - - $attribute->value = $value; - } - - return $attribute; - } - - /** - * Validate unit attribute create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateUnitAttributeCreate(RequestAbstract $request) : array - { - $val = []; - if (($val['type'] = !$request->hasData('type')) - || ($val['value'] = (!$request->hasData('value') && !$request->hasData('custom'))) - || ($val['unit'] = !$request->hasData('unit')) - ) { - return $val; - } - - return []; - } - - /** - * Api method to create unit attribute l11n - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return void - * - * @api - * - * @since 1.0.0 - */ - public function apiUnitAttributeTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void - { - if (!empty($val = $this->validateUnitAttributeTypeL11nCreate($request))) { - $response->header->status = RequestStatusCode::R_400; - $this->createInvalidCreateResponse($request, $response, $val); - - return; - } - - $attrL11n = $this->createUnitAttributeTypeL11nFromRequest($request); - $this->createModel($request->header->account, $attrL11n, UnitAttributeTypeL11nMapper::class, 'attr_type_l11n', $request->getOrigin()); - $this->createStandardCreateResponse($request, $response, $attrL11n); - } - - /** - * Method to create unit attribute l11n from request. - * - * @param RequestAbstract $request Request - * - * @return BaseStringL11n - * - * @since 1.0.0 - */ - private function createUnitAttributeTypeL11nFromRequest(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 unit attribute l11n create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateUnitAttributeTypeL11nCreate(RequestAbstract $request) : array - { - $val = []; - if (($val['title'] = !$request->hasData('title')) - || ($val['type'] = !$request->hasData('type')) - ) { - return $val; - } - - return []; - } - - /** - * Api method to create unit attribute type - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return void - * - * @api - * - * @since 1.0.0 - */ - public function apiUnitAttributeTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void - { - if (!empty($val = $this->validateUnitAttributeTypeCreate($request))) { - $response->header->status = RequestStatusCode::R_400; - $this->createInvalidCreateResponse($request, $response, $val); - - return; - } - - $attrType = $this->createUnitAttributeTypeFromRequest($request); - $this->createModel($request->header->account, $attrType, UnitAttributeTypeMapper::class, 'attr_type', $request->getOrigin()); - $this->createStandardCreateResponse($request, $response, $attrType); - } - - /** - * Method to create unit attribute from request. - * - * @param RequestAbstract $request Request - * - * @return AttributeType - * - * @since 1.0.0 - */ - private function createUnitAttributeTypeFromRequest(RequestAbstract $request) : AttributeType - { - $attrType = new AttributeType($request->getDataString('name') ?? ''); - $attrType->datatype = $request->getDataInt('datatype') ?? 0; - $attrType->custom = $request->getDataBool('custom') ?? false; - $attrType->isRequired = $request->getDataBool('is_required') ?? false; - $attrType->validationPattern = $request->getDataString('validation_pattern') ?? ''; - $attrType->setL11n($request->getDataString('title') ?? '', $request->getDataString('language') ?? ISO639x1Enum::_EN); - $attrType->setFields($request->getDataInt('fields') ?? 0); - - return $attrType; - } - - /** - * Validate unit attribute create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateUnitAttributeTypeCreate(RequestAbstract $request) : array - { - $val = []; - if (($val['title'] = !$request->hasData('title')) - || ($val['name'] = !$request->hasData('name')) - ) { - return $val; - } - - return []; - } - - /** - * Api method to create unit attribute value - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return void - * - * @api - * - * @since 1.0.0 - */ - public function apiUnitAttributeValueCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void - { - if (!empty($val = $this->validateUnitAttributeValueCreate($request))) { - $response->header->status = RequestStatusCode::R_400; - $this->createInvalidCreateResponse($request, $response, $val); - - return; - } - - $attrValue = $this->createUnitAttributeValueFromRequest($request); - $this->createModel($request->header->account, $attrValue, UnitAttributeValueMapper::class, 'attr_value', $request->getOrigin()); - - if ($attrValue->isDefault) { - $this->createModelRelation( - $request->header->account, - (int) $request->getData('type'), - $attrValue->id, - UnitAttributeTypeMapper::class, 'defaults', '', $request->getOrigin() - ); - } - - $this->createStandardCreateResponse($request, $response, $attrValue); - } - - /** - * Method to create unit attribute value from request. - * - * @param RequestAbstract $request Request - * - * @return AttributeValue - * - * @since 1.0.0 - */ - private function createUnitAttributeValueFromRequest(RequestAbstract $request) : AttributeValue - { - /** @var AttributeType $type */ - $type = UnitAttributeTypeMapper::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 unit attribute value create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateUnitAttributeValueCreate(RequestAbstract $request) : array - { - $val = []; - if (($val['type'] = !$request->hasData('type')) - || ($val['value'] = !$request->hasData('value')) - ) { - return $val; - } - - return []; - } - - /** - * Api method to create unit attribute l11n - * - * @param RequestAbstract $request Request - * @param ResponseAbstract $response Response - * @param mixed $data Generic data - * - * @return void - * - * @api - * - * @since 1.0.0 - */ - public function apiUnitAttributeValueL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void - { - if (!empty($val = $this->validateUnitAttributeValueL11nCreate($request))) { - $response->header->status = RequestStatusCode::R_400; - $this->createInvalidCreateResponse($request, $response, $val); - - return; - } - - $attrL11n = $this->createUnitAttributeValueL11nFromRequest($request); - $this->createModel($request->header->account, $attrL11n, UnitAttributeValueL11nMapper::class, 'attr_value_l11n', $request->getOrigin()); - $this->createStandardCreateResponse($request, $response, $attrL11n); - } - - /** - * Method to create unit attribute l11n from request. - * - * @param RequestAbstract $request Request - * - * @return BaseStringL11n - * - * @since 1.0.0 - */ - private function createUnitAttributeValueL11nFromRequest(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 unit attribute l11n create request - * - * @param RequestAbstract $request Request - * - * @return array - * - * @since 1.0.0 - */ - private function validateUnitAttributeValueL11nCreate(RequestAbstract $request) : array - { - $val = []; - if (($val['title'] = !$request->hasData('title')) - || ($val['value'] = !$request->hasData('value')) - ) { - return $val; - } - - return []; - } } diff --git a/Models/UnitAttributeMapper.php b/Models/Attribute/UnitAttributeMapper.php old mode 100755 new mode 100644 similarity index 93% rename from Models/UnitAttributeMapper.php rename to Models/Attribute/UnitAttributeMapper.php index 94d8363..9960c7b --- a/Models/UnitAttributeMapper.php +++ b/Models/Attribute/UnitAttributeMapper.php @@ -4,7 +4,7 @@ * * PHP Version 8.1 * - * @package Modules\Organization\Models + * @package Modules\Organization\Models\Attribute * @copyright Dennis Eichhorn * @license OMS License 2.0 * @version 1.0.0 @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\Organization\Models; +namespace Modules\Organization\Models\Attribute; use Modules\Attribute\Models\Attribute; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; @@ -20,7 +20,7 @@ use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; /** * Unit mapper class. * - * @package Modules\Organization\Models + * @package Modules\Organization\Models\Attribute * @license OMS License 2.0 * @link https://jingga.app * @since 1.0.0 diff --git a/Models/UnitAttributeTypeL11nMapper.php b/Models/Attribute/UnitAttributeTypeL11nMapper.php old mode 100755 new mode 100644 similarity index 91% rename from Models/UnitAttributeTypeL11nMapper.php rename to Models/Attribute/UnitAttributeTypeL11nMapper.php index c623c87..89398d3 --- a/Models/UnitAttributeTypeL11nMapper.php +++ b/Models/Attribute/UnitAttributeTypeL11nMapper.php @@ -4,7 +4,7 @@ * * PHP Version 8.1 * - * @package Modules\Organization\Models + * @package Modules\Organization\Models\Attribute * @copyright Dennis Eichhorn * @license OMS License 2.0 * @version 1.0.0 @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\Organization\Models; +namespace Modules\Organization\Models\Attribute; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; use phpOMS\Localization\BaseStringL11n; @@ -20,7 +20,7 @@ use phpOMS\Localization\BaseStringL11n; /** * Unit mapper class. * - * @package Modules\Organization\Models + * @package Modules\Organization\Models\Attribute * @license OMS License 2.0 * @link https://jingga.app * @since 1.0.0 diff --git a/Models/UnitAttributeTypeMapper.php b/Models/Attribute/UnitAttributeTypeMapper.php old mode 100755 new mode 100644 similarity index 94% rename from Models/UnitAttributeTypeMapper.php rename to Models/Attribute/UnitAttributeTypeMapper.php index 289cea7..2941e5e --- a/Models/UnitAttributeTypeMapper.php +++ b/Models/Attribute/UnitAttributeTypeMapper.php @@ -4,7 +4,7 @@ * * PHP Version 8.1 * - * @package Modules\Organization\Models + * @package Modules\Organization\Models\Attribute * @copyright Dennis Eichhorn * @license OMS License 2.0 * @version 1.0.0 @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\Organization\Models; +namespace Modules\Organization\Models\Attribute; use Modules\Attribute\Models\AttributeType; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; @@ -20,7 +20,7 @@ use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; /** * Unit mapper class. * - * @package Modules\Organization\Models + * @package Modules\Organization\Models\Attribute * @license OMS License 2.0 * @link https://jingga.app * @since 1.0.0 diff --git a/Models/UnitAttributeValueL11nMapper.php b/Models/Attribute/UnitAttributeValueL11nMapper.php old mode 100755 new mode 100644 similarity index 92% rename from Models/UnitAttributeValueL11nMapper.php rename to Models/Attribute/UnitAttributeValueL11nMapper.php index a51f111..12ff828 --- a/Models/UnitAttributeValueL11nMapper.php +++ b/Models/Attribute/UnitAttributeValueL11nMapper.php @@ -4,7 +4,7 @@ * * PHP Version 8.1 * - * @package Modules\Organization\Models + * @package Modules\Organization\Models\Attribute * @copyright Dennis Eichhorn * @license OMS License 2.0 * @version 1.0.0 @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\Organization\Models; +namespace Modules\Organization\Models\Attribute; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; use phpOMS\Localization\BaseStringL11n; @@ -20,7 +20,7 @@ use phpOMS\Localization\BaseStringL11n; /** * Unit mapper class. * - * @package Modules\Organization\Models + * @package Modules\Organization\Models\Attribute * @license OMS License 2.0 * @link https://jingga.app * @since 1.0.0 diff --git a/Models/UnitAttributeValueMapper.php b/Models/Attribute/UnitAttributeValueMapper.php old mode 100755 new mode 100644 similarity index 95% rename from Models/UnitAttributeValueMapper.php rename to Models/Attribute/UnitAttributeValueMapper.php index 000e819..a6e9dcd --- a/Models/UnitAttributeValueMapper.php +++ b/Models/Attribute/UnitAttributeValueMapper.php @@ -4,7 +4,7 @@ * * PHP Version 8.1 * - * @package Modules\Organization\Models + * @package Modules\Organization\Models\Attribute * @copyright Dennis Eichhorn * @license OMS License 2.0 * @version 1.0.0 @@ -12,7 +12,7 @@ */ declare(strict_types=1); -namespace Modules\Organization\Models; +namespace Modules\Organization\Models\Attribute; use Modules\Attribute\Models\AttributeValue; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; @@ -20,7 +20,7 @@ use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; /** * Unit mapper class. * - * @package Modules\Organization\Models + * @package Modules\Organization\Models\Attribute * @license OMS License 2.0 * @link https://jingga.app * @since 1.0.0 diff --git a/Models/UnitMapper.php b/Models/UnitMapper.php index 8a1e603..e7d751c 100755 --- a/Models/UnitMapper.php +++ b/Models/UnitMapper.php @@ -16,6 +16,7 @@ namespace Modules\Organization\Models; use Modules\Admin\Models\AddressMapper; use Modules\Media\Models\MediaMapper; +use Modules\Organization\Models\Attribute\UnitAttributeMapper; use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; /** diff --git a/tests/Autoloader.php b/tests/Autoloader.php index 80a0a1e..d2d0080 100755 --- a/tests/Autoloader.php +++ b/tests/Autoloader.php @@ -71,14 +71,12 @@ final class Autoloader * * @return void * - * @throws AutoloadException Throws this exception if the class to autoload doesn't exist. This could also be related to a wrong namespace/file path correlation. - * * @since 1.0.0 */ public static function defaultAutoloader(string $class) : void { $class = \ltrim($class, '\\'); - $class = \str_replace(['_', '\\'], '/', $class); + $class = \strtr($class, '_\\', '//'); foreach (self::$paths as $path) { $file = $path . $class . '.php';