diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 5c2a874..a83a70e 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -22,6 +22,8 @@ use Modules\Attribute\Models\NullAttributeType; use Modules\Attribute\Models\NullAttributeValue; use Modules\FleetManagement\Models\FuelTypeL11nMapper; use Modules\FleetManagement\Models\FuelTypeMapper; +use Modules\FleetManagement\Models\InspectionTypeL11nMapper; +use Modules\FleetManagement\Models\InspectionTypeMapper; use Modules\FleetManagement\Models\Vehicle; use Modules\FleetManagement\Models\VehicleAttributeMapper; use Modules\FleetManagement\Models\VehicleAttributeTypeL11nMapper; @@ -1177,4 +1179,148 @@ final class ApiController extends Controller return []; } + + /** + * Api method to create a vehicle + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiInspectionTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateInspectionTypeCreate($request))) { + $response->set($request->uri->__toString(), new FormValidation($val)); + $response->header->status = RequestStatusCode::R_400; + + return; + } + + /** @var BaseStringL11nType $vehicle */ + $vehicle = $this->createInspectionTypeFromRequest($request); + $this->createModel($request->header->account, $vehicle, InspectionTypeMapper::class, 'inspection_type', $request->getOrigin()); + + $this->fillJsonResponse( + $request, + $response, + NotificationLevel::OK, + '', + $this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SucessfulCreate'), + $vehicle + ); + } + + /** + * Method to create vehicle from request. + * + * @param RequestAbstract $request Request + * + * @return BaseStringL11nType Returns the created vehicle from the request + * + * @since 1.0.0 + */ + public function createInspectionTypeFromRequest(RequestAbstract $request) : BaseStringL11nType + { + $type = new BaseStringL11nType(); + $type->title = $request->getDataString('name') ?? ''; + $type->setL11n($request->getDataString('title') ?? '', $request->getDataString('language') ?? ISO639x1Enum::_EN); + + return $type; + } + + /** + * Validate vehicle create request + * + * @param RequestAbstract $request Request + * + * @return array Returns the validation array of the request + * + * @since 1.0.0 + */ + private function validateInspectionTypeCreate(RequestAbstract $request) : array + { + $val = []; + if (($val['name'] = !$request->hasData('name')) + || ($val['title'] = !$request->hasData('title')) + ) { + return $val; + } + + return []; + } + + /** + * Api method to create vehicle attribute l11n + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiInspectionTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void + { + if (!empty($val = $this->validateInspectionTypeL11nCreate($request))) { + $response->set('inspection_type_l11n_create', new FormValidation($val)); + $response->header->status = RequestStatusCode::R_400; + + return; + } + + $typeL11n = $this->createInspectionTypeL11nFromRequest($request); + $this->createModel($request->header->account, $typeL11n, InspectionTypeL11nMapper::class, 'inspection_type_l11n', $request->getOrigin()); + $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $typeL11n); + } + + /** + * Method to create vehicle attribute l11n from request. + * + * @param RequestAbstract $request Request + * + * @return BaseStringL11n + * + * @since 1.0.0 + */ + private function createInspectionTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n + { + $typeL11n = new BaseStringL11n(); + $typeL11n->ref = $request->getDataInt('type') ?? 0; + $typeL11n->setLanguage( + $request->getDataString('language') ?? $request->getLanguage() + ); + $typeL11n->content = $request->getDataString('title') ?? ''; + + return $typeL11n; + } + + /** + * Validate vehicle attribute l11n create request + * + * @param RequestAbstract $request Request + * + * @return array + * + * @since 1.0.0 + */ + private function validateInspectionTypeL11nCreate(RequestAbstract $request) : array + { + $val = []; + if (($val['title'] = !$request->hasData('title')) + || ($val['type'] = !$request->hasData('type')) + ) { + return $val; + } + + return []; + } } diff --git a/Models/FuelTypeMapper.php b/Models/FuelTypeMapper.php index 0059b21..d1c5eec 100644 --- a/Models/FuelTypeMapper.php +++ b/Models/FuelTypeMapper.php @@ -25,7 +25,7 @@ use phpOMS\Localization\BaseStringL11nType; * @link https://jingga.app * @since 1.0.0 * - * @template T of FuelType + * @template T of BaseStringL11nType * @extends DataMapperFactory */ final class FuelTypeMapper extends DataMapperFactory diff --git a/Models/InspectionTypeMapper.php b/Models/InspectionTypeMapper.php index 01ddbe5..f7df79f 100644 --- a/Models/InspectionTypeMapper.php +++ b/Models/InspectionTypeMapper.php @@ -25,7 +25,7 @@ use phpOMS\Localization\BaseStringL11nType; * @link https://jingga.app * @since 1.0.0 * - * @template T of FuelType + * @template T of BaseStringL11nType * @extends DataMapperFactory */ final class InspectionTypeMapper extends DataMapperFactory @@ -49,7 +49,7 @@ final class InspectionTypeMapper extends DataMapperFactory */ public const HAS_MANY = [ 'l11n' => [ - 'mapper' => FuelTypeL11nMapper::class, + 'mapper' => InspectionTypeL11nMapper::class, 'table' => 'fleetmgmt_inspection_type_l11n', 'self' => 'fleetmgmt_inspection_type_l11n_type', 'column' => 'content', diff --git a/Models/PermissionCategory.php b/Models/PermissionCategory.php index 0dd83ba..f13ab8f 100755 --- a/Models/PermissionCategory.php +++ b/Models/PermissionCategory.php @@ -27,4 +27,14 @@ use phpOMS\Stdlib\Base\Enum; abstract class PermissionCategory extends Enum { public const VEHICLE = 1; + + public const FUEL_TYPE = 2; + + public const VEHICLE_TYPE = 3; + + public const INSPECTION_TYPE = 4; + + public const INSPECTION = 5; + + public const ATTRIBUTE_TYPE = 6; }