diff --git a/Admin/Install/attributes.json b/Admin/Install/attributes.json index 1896daf..4ddd4b7 100755 --- a/Admin/Install/attributes.json +++ b/Admin/Install/attributes.json @@ -18,5 +18,161 @@ "value": 1 } ] + }, + { + "name": "insurance_provider", + "l11n": { + "en": "Insurance provider", + "de": "Versicherung" + }, + "value_type": 2, + "is_custom_allowed": true, + "validation_pattern": "", + "is_required": false, + "default_value": "", + "values": [] + }, + { + "name": "insurance_number", + "l11n": { + "en": "Insurance number", + "de": "Versicherungsnummer" + }, + "value_type": 2, + "is_custom_allowed": true, + "validation_pattern": "", + "is_required": false, + "default_value": "", + "values": [] + }, + { + "name": "leasing_provider", + "l11n": { + "en": "Leasing provider", + "de": "Leasingsnummer" + }, + "value_type": 2, + "is_custom_allowed": true, + "validation_pattern": "", + "is_required": false, + "default_value": "", + "values": [] + }, + { + "name": "leasing_number", + "l11n": { + "en": "Leasing number", + "de": "Leasingsnummer" + }, + "value_type": 2, + "is_custom_allowed": true, + "validation_pattern": "", + "is_required": false, + "default_value": "", + "values": [] + }, + { + "name": "leasing_end", + "l11n": { + "en": "Leasing end", + "de": "Leasingende" + }, + "value_type": 4, + "is_custom_allowed": true, + "validation_pattern": "", + "is_required": false, + "default_value": "", + "values": [] + }, + { + "name": "make", + "l11n": { + "en": "Make", + "de": "Marke" + }, + "value_type": 2, + "is_custom_allowed": true, + "validation_pattern": "", + "is_required": false, + "default_value": "", + "values": [] + }, + { + "name": "model", + "l11n": { + "en": "Model", + "de": "Modell" + }, + "value_type": 2, + "is_custom_allowed": true, + "validation_pattern": "", + "is_required": false, + "default_value": "", + "values": [] + }, + { + "name": "build", + "l11n": { + "en": "Build year", + "de": "Baujahr" + }, + "value_type": 4, + "is_custom_allowed": true, + "validation_pattern": "", + "is_required": false, + "default_value": "", + "values": [] + }, + { + "name": "ownership_start", + "l11n": { + "en": "Ownership start", + "de": "Besitzbeginn" + }, + "value_type": 4, + "is_custom_allowed": true, + "validation_pattern": "", + "is_required": false, + "default_value": "", + "values": [] + }, + { + "name": "ownership_end", + "l11n": { + "en": "Ownership end", + "de": "Besitzende" + }, + "value_type": 4, + "is_custom_allowed": true, + "validation_pattern": "", + "is_required": false, + "default_value": "", + "values": [] + }, + { + "name": "purchase_price", + "l11n": { + "en": "Purchase price", + "de": "Kaufpreis" + }, + "value_type": 1, + "is_custom_allowed": true, + "validation_pattern": "", + "is_required": false, + "default_value": "", + "values": [] + }, + { + "name": "leasing_residual_value", + "l11n": { + "en": "Leasing residual value", + "de": "Leasing Restwert" + }, + "value_type": 1, + "is_custom_allowed": true, + "validation_pattern": "", + "is_required": false, + "default_value": "", + "values": [] } ] \ No newline at end of file diff --git a/Controller/ApiInspectionTypeController.php b/Controller/ApiInspectionTypeController.php index b743a7f..7deaac5 100755 --- a/Controller/ApiInspectionTypeController.php +++ b/Controller/ApiInspectionTypeController.php @@ -15,11 +15,15 @@ declare(strict_types=1); namespace Modules\EquipmentManagement\Controller; +use Modules\EquipmentManagement\Models\Inspection; +use Modules\EquipmentManagement\Models\InspectionMapper; +use Modules\EquipmentManagement\Models\InspectionStatus; use Modules\EquipmentManagement\Models\InspectionTypeL11nMapper; use Modules\EquipmentManagement\Models\InspectionTypeMapper; use phpOMS\Localization\BaseStringL11n; use phpOMS\Localization\BaseStringL11nType; use phpOMS\Localization\ISO639x1Enum; +use phpOMS\Localization\NullBaseStringL11nType; use phpOMS\Message\Http\RequestStatusCode; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; @@ -34,6 +38,76 @@ use phpOMS\Message\ResponseAbstract; */ final class ApiInspectionTypeController extends Controller { + /** + * Api method to create a vehicle + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param array $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiInspectionCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void + { + if (!empty($val = $this->validateInspectionCreate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidCreateResponse($request, $response, $val); + + return; + } + + /** @var \Modules\FleetManagement\Models\Inspection $inspection */ + $inspection = $this->createInspectionFromRequest($request); + $this->createModel($request->header->account, $inspection, InspectionMapper::class, 'inspection', $request->getOrigin()); + $this->createStandardCreateResponse($request, $response, $inspection); + } + + /** + * Method to create vehicle from request. + * + * @param RequestAbstract $request Request + * + * @return Inspection Returns the created vehicle from the request + * + * @since 1.0.0 + */ + public function createInspectionFromRequest(RequestAbstract $request) : Inspection + { + $inspection = new Inspection(); + $inspection->reference = (int) $request->getData('ref'); + $inspection->description = $request->getDataString('description') ?? ''; + $inspection->status = $request->getDataInt('status') ?? InspectionStatus::TODO; + $inspection->next = $request->getDataDateTime('next') ?? null; + $inspection->date = $request->getDataDateTime('date') ?? null; + $inspection->interval = $request->getDataInt('interval') ?? 0; + $inspection->type = new NullBaseStringL11nType((int) $request->getData('type')); + + return $inspection; + } + + /** + * Validate vehicle create request + * + * @param RequestAbstract $request Request + * + * @return array Returns the validation array of the request + * + * @since 1.0.0 + */ + private function validateInspectionCreate(RequestAbstract $request) : array + { + $val = []; + if (($val['ref'] = !$request->hasData('ref'))) { + return $val; + } + + return []; + } + /** * Api method to create item attribute type * diff --git a/Controller/BackendController.php b/Controller/BackendController.php index 47637ac..7bae04b 100755 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -20,6 +20,7 @@ use Modules\EquipmentManagement\Models\Attribute\EquipmentAttributeTypeL11nMappe use Modules\EquipmentManagement\Models\Attribute\EquipmentAttributeTypeMapper; use Modules\EquipmentManagement\Models\EquipmentMapper; use Modules\EquipmentManagement\Models\EquipmentTypeMapper; +use Modules\EquipmentManagement\Models\InspectionMapper; use Modules\Media\Models\MediaMapper; use Modules\Media\Models\MediaTypeMapper; use Modules\Organization\Models\UnitMapper; @@ -41,7 +42,7 @@ use phpOMS\Views\View; final class BackendController extends Controller { /** - * Routing end-point for application behaviour. + * Routing end-point for application behavior. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -70,7 +71,7 @@ final class BackendController extends Controller } /** - * Routing end-point for application behaviour. + * Routing end-point for application behavior. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -101,7 +102,7 @@ final class BackendController extends Controller } /** - * Routing end-point for application behaviour. + * Routing end-point for application behavior. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -136,7 +137,7 @@ final class BackendController extends Controller } /** - * Routing end-point for application behaviour. + * Routing end-point for application behavior. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -169,7 +170,7 @@ final class BackendController extends Controller } /** - * Routing end-point for application behaviour. + * Routing end-point for application behavior. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -207,6 +208,15 @@ final class BackendController extends Controller $view->data['equipment'] = $equipment; + $inspections = InspectionMapper::getAll() + ->with('type') + ->with('type/l11n') + ->where('reference', $equipment->id) + ->where('type/l11n/language', $response->header->l11n->language) + ->execute(); + + $view->data['inspections'] = $inspections; + $query = new Builder($this->app->dbPool->get()); $results = $query->selectAs(EquipmentMapper::HAS_MANY['files']['external'], 'file') ->from(EquipmentMapper::TABLE) diff --git a/Docs/Dev/en/structure.md b/Docs/Dev/en/structure.md index 24f79ab..38a509f 100755 --- a/Docs/Dev/en/structure.md +++ b/Docs/Dev/en/structure.md @@ -2,4 +2,4 @@ ## ER -![ER](Modules/ClientManagement/Docs/Dev/img/er.png) \ No newline at end of file +![ER](Modules/EquipmentManagement/Docs/Dev/img/er.png) \ No newline at end of file diff --git a/Docs/Dev/img/er.png b/Docs/Dev/img/er.png old mode 100755 new mode 100644 index b4b4986..b56a770 Binary files a/Docs/Dev/img/er.png and b/Docs/Dev/img/er.png differ diff --git a/Models/Equipment.php b/Models/Equipment.php index e3b8bd2..203aa92 100755 --- a/Models/Equipment.php +++ b/Models/Equipment.php @@ -36,12 +36,8 @@ class Equipment implements \JsonSerializable public string $info = ''; - public array $drivers = []; - public array $inspections = []; - public array $milage = []; - public int $unit = 0; public ?int $responsible = null; diff --git a/Models/PermissionCategory.php b/Models/PermissionCategory.php index dd25c8a..fbf573d 100755 --- a/Models/PermissionCategory.php +++ b/Models/PermissionCategory.php @@ -17,7 +17,7 @@ namespace Modules\EquipmentManagement\Models; use phpOMS\Stdlib\Base\Enum; /** - * Permision state enum. + * Permission category enum. * * @package Modules\EquipmentManagement\Models * @license OMS License 2.0 diff --git a/Theme/Backend/attribute-type.tpl.php b/Theme/Backend/attribute-type.tpl.php index 6e6ce67..5f8fec5 100755 --- a/Theme/Backend/attribute-type.tpl.php +++ b/Theme/Backend/attribute-type.tpl.php @@ -49,7 +49,7 @@ echo $this->data['nav']->render(); ?>
- +
@@ -74,7 +74,7 @@ echo $this->data['nav']->render(); ?>
getHtml('Language', '0', '0'); ?>download
- +
diff --git a/Theme/Backend/equipment-profile.tpl.php b/Theme/Backend/equipment-profile.tpl.php index d218bfb..1e1fced 100755 --- a/Theme/Backend/equipment-profile.tpl.php +++ b/Theme/Backend/equipment-profile.tpl.php @@ -55,8 +55,8 @@ echo $this->data['nav']->render();
getHtml('Profile'); ?>
- - + +
@@ -172,17 +172,24 @@ echo $this->data['nav']->render();
getHtml('Upcoming'); ?>
- +
+ data['inspections'] as $inspection) : + // @todo handle old inspections in the past? maybe use a status?! + if ($inspection->next === null) { + continue; + } + ?> +
getHtml('Date'); ?> getHtml('Type'); ?> getHtml('Responsible'); ?>
next->format('Y-m-d H:i'); ?> + printHtml($inspection->type->getL11n()); ?> - - +
@@ -190,17 +197,19 @@ echo $this->data['nav']->render();
getHtml('History'); ?>
- +
+ data['inspections'] as $inspection) : ?> +
getHtml('Date'); ?> getHtml('Type'); ?> getHtml('Responsible'); ?>
date->format('Y-m-d H:i'); ?> + printHtml($inspection->type->getL11n()); ?> - - +
diff --git a/info.json b/info.json index 176a22b..6d81750 100755 --- a/info.json +++ b/info.json @@ -14,7 +14,6 @@ "name": "Jingga", "website": "jingga.app" }, - "description": "The buisness module.", "directory": "EquipmentManagement", "dependencies": { "Admin": "1.0.0", diff --git a/tests/Controller/Api/ApiControllerEquipmentTrait.php b/tests/Controller/Api/ApiControllerEquipmentTrait.php index 46b80c7..ac5df11 100755 --- a/tests/Controller/Api/ApiControllerEquipmentTrait.php +++ b/tests/Controller/Api/ApiControllerEquipmentTrait.php @@ -17,9 +17,7 @@ namespace Modules\EquipmentManagement\tests\Controller\Api; use Modules\EquipmentManagement\Models\EquipmentTypeMapper; use phpOMS\Message\Http\HttpRequest; use phpOMS\Message\Http\HttpResponse; -use phpOMS\Message\Http\RequestStatusCode; use phpOMS\Uri\HttpUri; -use phpOMS\Utils\TestUtils; use phpOMS\Utils\RnG\Text; trait ApiControllerEquipmentTrait @@ -30,7 +28,7 @@ trait ApiControllerEquipmentTrait */ public function testApiEquipmentCreate() : void { - $equipmentType = EquipmentTypeMapper::getAll()->execute(); + $equipmentType = EquipmentTypeMapper::getAll()->execute(); $equipmentTypeCount = \count($equipmentType); $response = new HttpResponse();