This commit is contained in:
Dennis Eichhorn 2024-01-02 23:34:17 +00:00
parent abfff4adb9
commit d4972ec74b
11 changed files with 267 additions and 25 deletions

View File

@ -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": []
}
]

View File

@ -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<string, bool> 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
*

View File

@ -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)

View File

@ -2,4 +2,4 @@
## ER
![ER](Modules/ClientManagement/Docs/Dev/img/er.png)
![ER](Modules/EquipmentManagement/Docs/Dev/img/er.png)

BIN
Docs/Dev/img/er.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 KiB

After

Width:  |  Height:  |  Size: 74 KiB

View File

@ -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;

View File

@ -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

View File

@ -49,7 +49,7 @@ echo $this->data['nav']->render(); ?>
<div class="form-group">
<label for="iPattern"><?= $this->getHtml('Pattern', 'Attribute', 'Backend'); ?></label>
<input id="iPattern" type="text" value="<?= $this->printHtml($attribute->validationPAttern); ?>">
<input id="iPattern" type="text" value="<?= $this->printHtml($attribute->validationPattern); ?>">
</div>
<div class="form-group">
@ -74,7 +74,7 @@ echo $this->data['nav']->render(); ?>
<div class="col-xs-12 col-md-6">
<div class="portlet">
<div class="portlet-head"><?= $this->getHtml('Language', '0', '0'); ?><i class="g-icon download btn end-xs">download</i></div>
<table class="default">
<table class="default sticky">
<thead>
<tr>
<td>

View File

@ -55,8 +55,8 @@ echo $this->data['nav']->render();
<div class="portlet-head"><?= $this->getHtml('Profile'); ?></div>
<div class="portlet-body">
<div class="form-group">
<label for="iEquipmentEquipmentProfileName"><?= $this->getHtml('Name'); ?></label>
<input type="text" id="iEquipmentEquipmentProfileName" name="name" value="<?= $this->printHtml($equipment->name); ?>">
<label for="iEquipmentProfileName"><?= $this->getHtml('Name'); ?></label>
<input type="text" id="iEquipmentProfileName" name="name" value="<?= $this->printHtml($equipment->name); ?>">
</div>
<div class="form-group">
@ -172,17 +172,24 @@ echo $this->data['nav']->render();
<div class="col-xs-12 col-md-6">
<section class="portlet">
<div class="portlet-head"><?= $this->getHtml('Upcoming'); ?></div>
<table id="upcomingInspections" class="default">
<table id="upcomingInspections" class="default sticky">
<thead>
<tr>
<td><?= $this->getHtml('Date'); ?>
<td class="wf-100"><?= $this->getHtml('Type'); ?>
<td><?= $this->getHtml('Responsible'); ?>
<tbody>
<?php foreach ($this->data['inspections'] as $inspection) :
// @todo handle old inspections in the past? maybe use a status?!
if ($inspection->next === null) {
continue;
}
?>
<tr>
<td><?= $inspection->next->format('Y-m-d H:i'); ?>
<td><?= $this->printHtml($inspection->type->getL11n()); ?>
<td>
<td>
<td>
<?php endforeach; ?>
</table>
</section>
</div>
@ -190,17 +197,19 @@ echo $this->data['nav']->render();
<div class="col-xs-12 col-md-6">
<section class="portlet">
<div class="portlet-head"><?= $this->getHtml('History'); ?></div>
<table id="historicInspections" class="default">
<table id="historicInspections" class="default sticky">
<thead>
<tr>
<td><?= $this->getHtml('Date'); ?>
<td class="wf-100"><?= $this->getHtml('Type'); ?>
<td><?= $this->getHtml('Responsible'); ?>
<tbody>
<?php foreach ($this->data['inspections'] as $inspection) : ?>
<tr>
<td><?= $inspection->date->format('Y-m-d H:i'); ?>
<td><?= $this->printHtml($inspection->type->getL11n()); ?>
<td>
<td>
<td>
<?php endforeach; ?>
</table>
</section>
</div>

View File

@ -14,7 +14,6 @@
"name": "Jingga",
"website": "jingga.app"
},
"description": "The buisness module.",
"directory": "EquipmentManagement",
"dependencies": {
"Admin": "1.0.0",

View File

@ -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();