loan/investment/fleetmgmt fixes

This commit is contained in:
Dennis Eichhorn 2023-06-23 14:27:13 +00:00
parent a944c777dd
commit 4d527776ed
76 changed files with 992 additions and 5335 deletions

View File

@ -1,7 +1,7 @@
[
{
"type": "type",
"name": "vehicle_profile_image",
"name": "equipment_profile_image",
"l11n": [
{
"title": "Profile image",
@ -16,15 +16,15 @@
{
"type": "collection",
"create_directory": true,
"name": "FleetManagement",
"name": "EquipmentManagement",
"virtualPath": "/Modules",
"user": 1
},
{
"type": "collection",
"create_directory": true,
"name": "Vehicle",
"virtualPath": "/Modules/FleetManagement",
"name": "Equipment",
"virtualPath": "/Modules/EquipmentManagement",
"user": 1
}
]

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Admin\Install
* @package Modules\EquipmentManagement\Admin\Install
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
@ -12,14 +12,14 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Admin\Install;
namespace Modules\EquipmentManagement\Admin\Install;
use phpOMS\Application\ApplicationAbstract;
/**
* Media class.
*
* @package Modules\FleetManagement\Admin\Install
* @package Modules\EquipmentManagement\Admin\Install
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0

View File

@ -1,259 +1,152 @@
[
{
"id": 1003501001,
"id": 1008401001,
"pid": "/",
"type": 2,
"subtype": 0,
"name": "FleetManagement",
"name": "EquipmentManagement",
"uri": null,
"target": "self",
"icon": "fa fa-car",
"icon": "fa fa-wrench",
"order": 80,
"from": "FleetManagement",
"from": "EquipmentManagement",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 0,
"children": [
{
"id": 1003502001,
"id": 1008402001,
"pid": "/",
"type": 2,
"subtype": 1,
"name": "Vehicles",
"uri": "{/base}/fleet/vehicle/list",
"name": "Equipments",
"uri": "{/base}/equipment/equipment/list",
"target": "self",
"icon": null,
"order": 1,
"from": "FleetManagement",
"from": "EquipmentManagement",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1003501001,
"parent": 1008401001,
"children": [
{
"id": 1003502101,
"pid": "/fleet/vehicle",
"id": 1008402101,
"pid": "/equipment/equipment",
"type": 3,
"subtype": 1,
"name": "List",
"uri": "{/base}/fleet/vehicle/list",
"uri": "{/base}/equipment/equipment/list",
"target": "self",
"icon": null,
"order": 1,
"from": "FleetManagement",
"from": "EquipmentManagement",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1003502001,
"parent": 1008402001,
"children": []
},
{
"id": 1003502201,
"pid": "/fleet/vehicle",
"id": 1008402201,
"pid": "/equipment/equipment",
"type": 3,
"subtype": 1,
"name": "Create",
"uri": "{/base}/fleet/vehicle/create?{?}",
"uri": "{/base}/equipment/equipment/create?{?}",
"target": "self",
"icon": null,
"order": 1,
"from": "FleetManagement",
"from": "EquipmentManagement",
"permission": { "permission": 4, "category": null, "element": null },
"parent": 1003502001,
"parent": 1008402001,
"children": []
}
]
},
{
"id": 1003503001,
"pid": "/",
"type": 2,
"subtype": 1,
"name": "Drivers",
"uri": "{/base}/fleet/driver/list",
"target": "self",
"icon": null,
"order": 1,
"from": "FleetManagement",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1003501001,
"children": [
{
"id": 1003503101,
"pid": "/fleet/driver",
"type": 3,
"subtype": 1,
"name": "List",
"uri": "{/base}/fleet/driver/list",
"target": "self",
"icon": null,
"order": 1,
"from": "FleetManagement",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1003503001,
"children": []
},
{
"id": 1003503201,
"pid": "/fleet/driver",
"type": 3,
"subtype": 1,
"name": "Create",
"uri": "{/base}/fleet/driver/create?{?}",
"target": "self",
"icon": null,
"order": 1,
"from": "FleetManagement",
"permission": { "permission": 4, "category": null, "element": null },
"parent": 1003503001,
"children": []
}
]
},
{
"id": 1003504001,
"id": 1008404001,
"pid": "/",
"type": 2,
"subtype": 1,
"name": "Inspections",
"uri": "{/base}/fleet/inspection/list",
"uri": "{/base}/equipment/inspection/list",
"target": "self",
"icon": null,
"order": 1,
"from": "FleetManagement",
"from": "EquipmentManagement",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1003501001,
"parent": 1008401001,
"children": [
{
"id": 1003504101,
"pid": "/fleet/inspection",
"id": 1008404101,
"pid": "/equipment/inspection",
"type": 3,
"subtype": 1,
"name": "List",
"uri": "{/base}/fleet/inspection/list",
"uri": "{/base}/equipment/inspection/list",
"target": "self",
"icon": null,
"order": 1,
"from": "FleetManagement",
"from": "EquipmentManagement",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1003504001,
"parent": 1008404001,
"children": []
},
{
"id": 1003504201,
"pid": "/fleet/inspection",
"id": 1008404201,
"pid": "/equipment/inspection",
"type": 3,
"subtype": 1,
"name": "VehicleInspectionTypes",
"uri": "{/base}/fleet/vehicle/inspection/type/list?{?}",
"name": "EquipmentInspectionTypes",
"uri": "{/base}/equipment/equipment/inspection/type/list?{?}",
"target": "self",
"icon": null,
"order": 5,
"from": "FleetManagement",
"from": "EquipmentManagement",
"permission": { "permission": 4, "category": null, "element": null },
"parent": 1003504001,
"children": []
},
{
"id": 1003504301,
"pid": "/fleet/inspection",
"type": 3,
"subtype": 1,
"name": "DriverInspectionTypes",
"uri": "{/base}/fleet/driver/inspection/type/list?{?}",
"target": "self",
"icon": null,
"order": 10,
"from": "FleetManagement",
"permission": { "permission": 4, "category": null, "element": null },
"parent": 1003504001,
"parent": 1008404001,
"children": []
}
]
},
{
"id": 1003505001,
"id": 1008405001,
"pid": "/",
"type": 2,
"subtype": 1,
"name": "VehicleAttributes",
"uri": "{/base}/fleet/vehicle/attribute/type/list?{?}",
"name": "EquipmentAttributes",
"uri": "{/base}/equipment/equipment/attribute/type/list?{?}",
"target": "self",
"icon": null,
"order": 5,
"from": "FleetManagement",
"from": "EquipmentManagement",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1003501001,
"parent": 1008401001,
"children": [
{
"id": 1003505101,
"pid": "/fleet/vehicle/attribute",
"id": 1008405101,
"pid": "/equipment/equipment/attribute",
"type": 3,
"subtype": 1,
"name": "Types",
"uri": "{/base}/fleet/vehicle/attribute/type/list?{?}",
"uri": "{/base}/equipment/equipment/attribute/type/list?{?}",
"target": "self",
"icon": null,
"order": 15,
"from": "FleetManagement",
"from": "EquipmentManagement",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1003505001,
"parent": 1008405001,
"children": []
},
{
"id": 1003505201,
"pid": "/fleet/vehicle/attribute",
"id": 1008405201,
"pid": "/equipment/equipment/attribute",
"type": 3,
"subtype": 1,
"name": "Values",
"uri": "{/base}/fleet/vehicle/attribute/value/list?{?}",
"uri": "{/base}/equipment/equipment/attribute/value/list?{?}",
"target": "self",
"icon": null,
"order": 15,
"from": "FleetManagement",
"from": "EquipmentManagement",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1003505001,
"children": []
}
]
},
{
"id": 1003506001,
"pid": "/",
"type": 2,
"subtype": 1,
"name": "DriverAttributes",
"uri": "{/base}/fleet/driver/attribute/type/list?{?}",
"target": "self",
"icon": null,
"order": 5,
"from": "FleetManagement",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1003501001,
"children": [
{
"id": 1003506101,
"pid": "/fleet/driver/attribute",
"type": 3,
"subtype": 1,
"name": "Types",
"uri": "{/base}/fleet/driver/attribute/type/list?{?}",
"target": "self",
"icon": null,
"order": 15,
"from": "FleetManagement",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1003506001,
"children": []
},
{
"id": 1003506201,
"pid": "/fleet/driver/attribute",
"type": 3,
"subtype": 1,
"name": "Values",
"uri": "{/base}/fleet/driver/attribute/value/list?{?}",
"target": "self",
"icon": null,
"order": 15,
"from": "FleetManagement",
"permission": { "permission": 2, "category": null, "element": null },
"parent": 1003506001,
"parent": 1008405001,
"children": []
}
]

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Admin\Install
* @package Modules\EquipmentManagement\Admin\Install
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
@ -12,14 +12,14 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Admin\Install;
namespace Modules\EquipmentManagement\Admin\Install;
use phpOMS\Application\ApplicationAbstract;
/**
* Navigation class.
*
* @package Modules\FleetManagement\Admin\Install
* @package Modules\EquipmentManagement\Admin\Install
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0

View File

@ -1,285 +1,22 @@
[
{
"name": "license_plate",
"name": "is_gauge",
"l11n": {
"en": "License plate",
"de": "Kennzeichen"
},
"value_type": 2,
"is_custom_allowed": true,
"validation_pattern": "",
"is_required": false,
"default_value": "",
"values": []
},
{
"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": "leasing_milage",
"l11n": {
"en": "Leasing milage",
"de": "Laufleistung"
},
"value_type": 1,
"is_custom_allowed": true,
"validation_pattern": "",
"is_required": false,
"default_value": "",
"values": []
},
{
"name": "insurance_milage",
"l11n": {
"en": "Insurance milage",
"de": "Versicherungslaufleistung"
},
"value_type": 1,
"is_custom_allowed": true,
"validation_pattern": "",
"is_required": false,
"default_value": "",
"values": []
},
{
"name": "engine_size",
"l11n": {
"en": "Engine size",
"de": "Hubraum"
},
"value_type": 2,
"is_custom_allowed": true,
"validation_pattern": "",
"is_required": false,
"default_value": "",
"values": []
},
{
"name": "vin",
"l11n": {
"en": "VIN",
"de": "Fahrgestellnummer"
},
"value_type": 2,
"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": "color",
"l11n": {
"en": "Color",
"de": "Farbe"
},
"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": "fuel_type",
"l11n": {
"en": "Fuel type",
"de": "Kraftstoffart"
"en": "Gauge",
"de": "Messgerät"
},
"value_type": 1,
"is_custom_allowed": false,
"validation_pattern": "",
"is_required": true,
"is_required": false,
"default_value": "",
"values": [
{
"value": 1,
"l11n": {
"en": "None",
"de": "Kein"
}
"value": 0
},
{
"value": 2,
"l11n": {
"en": "Gas",
"de": "Benzin"
}
},
{
"value": 3,
"l11n": {
"en": "Diesel",
"de": "Diesel"
}
},
{
"value": 4,
"l11n": {
"en": "Electric",
"de": "Elektro"
}
},
{
"value": 5,
"l11n": {
"en": "Hydrogen",
"de": "Wasserstoff"
}
"value": 1
}
]
},
{
"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": []
}
]

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +0,0 @@
[
{
"name": "license",
"l11n": {
"en": "License",
"de": "Führerschein"
}
}
]

View File

@ -0,0 +1,30 @@
[
{
"name": "scale",
"l11n": {
"en": "Scale",
"de": "Waage"
}
},
{
"name": "ladder",
"l11n": {
"en": "Ladder",
"de": "Leiter"
}
},
{
"name": "drill",
"l11n": {
"en": "Drill",
"de": "Bohrer"
}
},
{
"name": "saw",
"l11n": {
"en": "Saw",
"de": "Säge"
}
}
]

View File

@ -1,135 +0,0 @@
[
{
"name": "gasoline",
"l11n": {
"en": "Gasoline",
"de": "Benzin"
}
},
{
"name": "diesel",
"l11n": {
"en": "Diesel",
"de": "Diesel"
}
},
{
"name": "electirc",
"l11n": {
"en": "Electric",
"de": "Elektrisch"
}
},
{
"name": "hydrogen",
"l11n": {
"en": "Hydrogen",
"de": "Wasserstoff"
}
},
{
"name": "ethanol",
"l11n": {
"en": "Ethanol",
"de": "Ethanol"
}
},
{
"name": "kerosene",
"l11n": {
"en": "Kerosene",
"de": "Kerosin"
}
},
{
"name": "lpg",
"l11n": {
"en": "LPG",
"de": "Autogas"
}
},
{
"name": "methanol",
"l11n": {
"en": "Methanol",
"de": "Methanol"
}
},
{
"name": "methane",
"l11n": {
"en": "Methane",
"de": "Methan"
}
},
{
"name": "nitromethane",
"l11n": {
"en": "Nitromethane",
"de": "Nitromethan"
}
},
{
"name": "coal",
"l11n": {
"en": "Coal",
"de": "Kohle"
}
},
{
"name": "wood",
"l11n": {
"en": "Wood",
"de": "Holz"
}
},
{
"name": "petroleum",
"l11n": {
"en": "Petroleum",
"de": "Petroleum"
}
},
{
"name": "coaltar",
"l11n": {
"en": "Coaltar",
"de": "Steinkohlenteer"
}
},
{
"name": "coke",
"l11n": {
"en": "Coke",
"de": "Koks"
}
},
{
"name": "charcoale",
"l11n": {
"en": "Charcoale",
"de": "Holzkohle"
}
},
{
"name": "naturalgas",
"l11n": {
"en": "Naturalgas",
"de": "Erdgas"
}
},
{
"name": "biogas",
"l11n": {
"en": "Biogas",
"de": "Biogas"
}
},
{
"name": "biodiesel",
"l11n": {
"en": "Biodiesel",
"de": "Biodiesel"
}
}
]

View File

@ -1,37 +1,9 @@
[
{
"name": "tire_change",
"name": "tuv",
"l11n": {
"en": "Tire change",
"de": "Reifenwechsel"
}
},
{
"name": "oil_change",
"l11n": {
"en": "Oil change",
"de": "Ölwechsel"
}
},
{
"name": "mot",
"l11n": {
"en": "MOT test",
"de": "TÜV"
}
},
{
"name": "emissions_test",
"l11n": {
"en": "Emissions test",
"de": "Abgasuntersuchung"
}
},
{
"name": "general",
"l11n": {
"en": "General",
"de": "Allgemein"
"en": "TUV",
"de": "TUV"
}
}
]

View File

@ -1,93 +0,0 @@
[
{
"name": "car",
"l11n": {
"en": "Car",
"de": "Auto"
}
},
{
"name": "truck",
"l11n": {
"en": "Truck",
"de": "LKW"
}
},
{
"name": "motorcycle",
"l11n": {
"en": "Motorcycle",
"de": "Motorrad"
}
},
{
"name": "bicycle",
"l11n": {
"en": "Bicycle",
"de": "Fahrrad"
}
},
{
"name": "bus",
"l11n": {
"en": "Bus",
"de": "Bus"
}
},
{
"name": "boat",
"l11n": {
"en": "Boat",
"de": "Boot"
}
},
{
"name": "airplane",
"l11n": {
"en": "Airplane",
"de": "Flugzeug"
}
},
{
"name": "helicopter",
"l11n": {
"en": "Helicopter",
"de": "Hubschrauber"
}
},
{
"name": "train",
"l11n": {
"en": "Train",
"de": "Zug"
}
},
{
"name": "scooter",
"l11n": {
"en": "Scooter",
"de": "Roller"
}
},
{
"name": "moped",
"l11n": {
"en": "Moped",
"de": "Moped"
}
},
{
"name": "tractor",
"l11n": {
"en": "Tractor",
"de": "Traktor"
}
},
{
"name": "forklift",
"l11n": {
"en": "Forklift",
"de": "Gabelstapler"
}
}
]

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Admin
* @package Modules\EquipmentManagement\Admin
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
@ -12,7 +12,7 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Admin;
namespace Modules\EquipmentManagement\Admin;
use phpOMS\Application\ApplicationAbstract;
use phpOMS\Config\SettingsInterface;
@ -25,7 +25,7 @@ use phpOMS\Uri\HttpUri;
/**
* Installer class.
*
* @package Modules\FleetManagement\Admin
* @package Modules\EquipmentManagement\Admin
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
@ -58,25 +58,15 @@ final class Installer extends InstallerAbstract
$attrTypes = self::createAttributeTypes($app, $attributes);
$attrValues = self::createAttributeValues($app, $attrTypes, $attributes);
/* Fuel types */
$fileContent = \file_get_contents(__DIR__ . '/Install/fueltype.json');
if ($fileContent === false) {
return;
}
/** @var array $types */
$types = \json_decode($fileContent, true);
$fuelTypes = self::createFuelTypes($app, $types);
/* Vehicle types */
$fileContent = \file_get_contents(__DIR__ . '/Install/vehicletype.json');
/* Equipment types */
$fileContent = \file_get_contents(__DIR__ . '/Install/equipmenttype.json');
if ($fileContent === false) {
return;
}
/** @var array $types */
$types = \json_decode($fileContent, true);
$vehicleTypes = self::createVehicleTypes($app, $types);
$equipmentTypes = self::createEquipmentTypes($app, $types);
/* Inspection types */
$fileContent = \file_get_contents(__DIR__ . '/Install/inspectiontype.json');
@ -87,20 +77,10 @@ final class Installer extends InstallerAbstract
/** @var array $types */
$types = \json_decode($fileContent, true);
$inspectionTypes = self::createInspectionTypes($app, $types);
/* Inspection types */
$fileContent = \file_get_contents(__DIR__ . '/Install/driverinspectiontype.json');
if ($fileContent === false) {
return;
}
/** @var array $types */
$types = \json_decode($fileContent, true);
$inspectionTypes = self::createDriverInspectionTypes($app, $types);
}
/**
* Install fuel type
* Install equipment type
*
* @param ApplicationAbstract $app Application
* @param array $types Attribute definition
@ -109,13 +89,13 @@ final class Installer extends InstallerAbstract
*
* @since 1.0.0
*/
private static function createFuelTypes(ApplicationAbstract $app, array $types) : array
private static function createEquipmentTypes(ApplicationAbstract $app, array $types) : array
{
/** @var array<string, array> $fuelTypes */
$fuelTypes = [];
/** @var array<string, array> $equipmentTypes */
$equipmentTypes = [];
/** @var \Modules\FleetManagement\Controller\ApiVehicleController $module */
$module = $app->moduleManager->getModuleInstance('FleetManagement', 'ApiVehicle');
/** @var \Modules\EquipmentManagement\Controller\ApiEquipmentController $module */
$module = $app->moduleManager->getModuleInstance('EquipmentManagement', 'ApiEquipment');
/** @var array $type */
foreach ($types as $type) {
@ -127,14 +107,14 @@ final class Installer extends InstallerAbstract
$request->setData('title', \reset($type['l11n']));
$request->setData('language', \array_keys($type['l11n'])[0] ?? 'en');
$module->apiFuelTypeCreate($request, $response);
$module->apiEquipmentTypeCreate($request, $response);
$responseData = $response->get('');
if (!\is_array($responseData)) {
continue;
}
$fuelTypes[$type['name']] = !\is_array($responseData['response'])
$equipmentTypes[$type['name']] = !\is_array($responseData['response'])
? $responseData['response']->toArray()
: $responseData['response'];
@ -151,74 +131,13 @@ final class Installer extends InstallerAbstract
$request->header->account = 1;
$request->setData('title', $l11n);
$request->setData('language', $language);
$request->setData('type', $fuelTypes[$type['name']]['id']);
$request->setData('type', $equipmentTypes[$type['name']]['id']);
$module->apiFuelTypeL11nCreate($request, $response);
$module->apiEquipmentTypeL11nCreate($request, $response);
}
}
return $fuelTypes;
}
/**
* Install vehicle type
*
* @param ApplicationAbstract $app Application
* @param array $types Attribute definition
*
* @return array
*
* @since 1.0.0
*/
private static function createVehicleTypes(ApplicationAbstract $app, array $types) : array
{
/** @var array<string, array> $vehicleTypes */
$vehicleTypes = [];
/** @var \Modules\FleetManagement\Controller\ApiVehicleController $module */
$module = $app->moduleManager->getModuleInstance('FleetManagement', 'ApiVehicle');
/** @var array $type */
foreach ($types as $type) {
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('name', $type['name'] ?? '');
$request->setData('title', \reset($type['l11n']));
$request->setData('language', \array_keys($type['l11n'])[0] ?? 'en');
$module->apiVehicleTypeCreate($request, $response);
$responseData = $response->get('');
if (!\is_array($responseData)) {
continue;
}
$vehicleTypes[$type['name']] = !\is_array($responseData['response'])
? $responseData['response']->toArray()
: $responseData['response'];
$isFirst = true;
foreach ($type['l11n'] as $language => $l11n) {
if ($isFirst) {
$isFirst = false;
continue;
}
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('title', $l11n);
$request->setData('language', $language);
$request->setData('type', $vehicleTypes[$type['name']]['id']);
$module->apiVehicleTypeL11nCreate($request, $response);
}
}
return $vehicleTypes;
return $equipmentTypes;
}
/**
@ -236,8 +155,8 @@ final class Installer extends InstallerAbstract
/** @var array<string, array> $inspectionTypes */
$inspectionTypes = [];
/** @var \Modules\FleetManagement\Controller\ApiVehicleController $module */
$module = $app->moduleManager->getModuleInstance('FleetManagement', 'ApiVehicle');
/** @var \Modules\EquipmentManagement\Controller\ApiEquipmentController $module */
$module = $app->moduleManager->getModuleInstance('EquipmentManagement', 'ApiEquipment');
/** @var array $type */
foreach ($types as $type) {
@ -282,67 +201,6 @@ final class Installer extends InstallerAbstract
return $inspectionTypes;
}
/**
* Install inspection type
*
* @param ApplicationAbstract $app Application
* @param array $types Attribute definition
*
* @return array
*
* @since 1.0.0
*/
private static function createDriverInspectionTypes(ApplicationAbstract $app, array $types) : array
{
/** @var array<string, array> $inspectionTypes */
$inspectionTypes = [];
/** @var \Modules\FleetManagement\Controller\ApiVehicleController $module */
$module = $app->moduleManager->getModuleInstance('FleetManagement', 'ApiDriver');
/** @var array $type */
foreach ($types as $type) {
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('name', $type['name'] ?? '');
$request->setData('title', \reset($type['l11n']));
$request->setData('language', \array_keys($type['l11n'])[0] ?? 'en');
$module->apiDriverInspectionTypeCreate($request, $response);
$responseData = $response->get('');
if (!\is_array($responseData)) {
continue;
}
$inspectionTypes[$type['name']] = !\is_array($responseData['response'])
? $responseData['response']->toArray()
: $responseData['response'];
$isFirst = true;
foreach ($type['l11n'] as $language => $l11n) {
if ($isFirst) {
$isFirst = false;
continue;
}
$response = new HttpResponse();
$request = new HttpRequest(new HttpUri(''));
$request->header->account = 1;
$request->setData('title', $l11n);
$request->setData('language', $language);
$request->setData('type', $inspectionTypes[$type['name']]['id']);
$module->apiDriverInspectionTypeL11nCreate($request, $response);
}
}
return $inspectionTypes;
}
/**
* Install default attribute types
*
@ -358,8 +216,8 @@ final class Installer extends InstallerAbstract
/** @var array<string, array> $itemAttrType */
$itemAttrType = [];
/** @var \Modules\FleetManagement\Controller\ApiVehicleAttributeController $module */
$module = $app->moduleManager->getModuleInstance('FleetManagement', 'ApiVehicleAttribute');
/** @var \Modules\EquipmentManagement\Controller\ApiEquipmentAttributeController $module */
$module = $app->moduleManager->getModuleInstance('EquipmentManagement', 'ApiEquipmentAttribute');
/** @var array $attribute */
foreach ($attributes as $attribute) {
@ -375,7 +233,7 @@ final class Installer extends InstallerAbstract
$request->setData('validation_pattern', $attribute['validation_pattern'] ?? '');
$request->setData('datatype', (int) $attribute['value_type']);
$module->apiVehicleAttributeTypeCreate($request, $response);
$module->apiEquipmentAttributeTypeCreate($request, $response);
$responseData = $response->get('');
if (!\is_array($responseData)) {
@ -401,7 +259,7 @@ final class Installer extends InstallerAbstract
$request->setData('language', $language);
$request->setData('type', $itemAttrType[$attribute['name']]['id']);
$module->apiVehicleAttributeTypeL11nCreate($request, $response);
$module->apiEquipmentAttributeTypeL11nCreate($request, $response);
}
}
@ -424,8 +282,8 @@ final class Installer extends InstallerAbstract
/** @var array<string, array> $itemAttrValue */
$itemAttrValue = [];
/** @var \Modules\FleetManagement\Controller\ApiVehicleAttributeController $module */
$module = $app->moduleManager->getModuleInstance('FleetManagement', 'ApiVehicleAttribute');
/** @var \Modules\EquipmentManagement\Controller\ApiEquipmentAttributeController $module */
$module = $app->moduleManager->getModuleInstance('EquipmentManagement', 'ApiEquipmentAttribute');
foreach ($attributes as $attribute) {
$itemAttrValue[$attribute['name']] = [];
@ -446,7 +304,7 @@ final class Installer extends InstallerAbstract
$request->setData('language', \array_keys($value['l11n'])[0] ?? 'en');
}
$module->apiVehicleAttributeValueCreate($request, $response);
$module->apiEquipmentAttributeValueCreate($request, $response);
$responseData = $response->get('');
if (!\is_array($responseData)) {
@ -474,7 +332,7 @@ final class Installer extends InstallerAbstract
$request->setData('language', $language);
$request->setData('value', $attrValue['id']);
$module->apiVehicleAttributeValueL11nCreate($request, $response);
$module->apiEquipmentAttributeValueL11nCreate($request, $response);
}
}
}

View File

@ -12,104 +12,62 @@
*/
declare(strict_types=1);
use Modules\FleetManagement\Controller\Controller;
use Modules\FleetManagement\Models\PermissionCategory;
use Modules\EquipmentManagement\Controller\Controller;
use Modules\EquipmentManagement\Models\PermissionCategory;
use phpOMS\Account\PermissionType;
use phpOMS\Router\RouteVerb;
return [
'^.*/fleet/vehicle/find.*$' => [
'^.*/equipment/equipment/find.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\ApiVehicleController:apiVehicleFind',
'dest' => '\Modules\EquipmentManagement\Controller\ApiEquipmentController:apiEquipmentFind',
'verb' => RouteVerb::GET,
'permission' => [
'module' => Controller::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::VEHICLE,
'state' => PermissionCategory::EQUIPMENT,
],
],
],
'^.*/fleet/vehicle/attribute.*$' => [
'^.*/equipment/equipment/attribute.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\ApiVehicleAttributeController:apiVehicleAttributeCreate',
'dest' => '\Modules\EquipmentManagement\Controller\ApiEquipmentAttributeController:apiEquipmentAttributeCreate',
'verb' => RouteVerb::PUT,
'permission' => [
'module' => Controller::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::VEHICLE,
'state' => PermissionCategory::EQUIPMENT,
],
],
[
'dest' => '\Modules\FleetManagement\Controller\ApiVehicleAttributeController:apiVehicleAttributeUpdate',
'dest' => '\Modules\EquipmentManagement\Controller\ApiEquipmentAttributeController:apiEquipmentAttributeUpdate',
'verb' => RouteVerb::SET,
'permission' => [
'module' => Controller::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::VEHICLE,
'state' => PermissionCategory::EQUIPMENT,
],
],
],
'^.*/fleet/driver/attribute.*$' => [
'^.*/equipment/equipment/note.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\ApiDriverAttributeController:apiDriverAttributeCreate',
'dest' => '\Modules\EquipmentManagement\Controller\ApiEquipmentAttributeController:apiNoteCreate',
'verb' => RouteVerb::PUT,
'permission' => [
'module' => Controller::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::DRIVER,
'state' => PermissionCategory::EQUIPMENT,
],
],
[
'dest' => '\Modules\FleetManagement\Controller\ApiDriverAttributeController:apiDriverAttributeUpdate',
'dest' => '\Modules\EquipmentManagement\Controller\ApiEquipmentAttributeController:apiNoteEdit',
'verb' => RouteVerb::SET,
'permission' => [
'module' => Controller::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::DRIVER,
],
],
],
'^.*/fleet/vehicle/note.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\ApiVehicleAttributeController:apiNoteCreate',
'verb' => RouteVerb::PUT,
'permission' => [
'module' => Controller::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::VEHICLE,
],
],
[
'dest' => '\Modules\FleetManagement\Controller\ApiVehicleAttributeController:apiNoteEdit',
'verb' => RouteVerb::SET,
'permission' => [
'module' => Controller::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::VEHICLE,
],
],
],
'^.*/fleet/driver/note.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\ApiDriverAttributeController:apiNoteCreate',
'verb' => RouteVerb::PUT,
'permission' => [
'module' => Controller::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::DRIVER,
],
],
[
'dest' => '\Modules\FleetManagement\Controller\ApiDriverAttributeController:apiNoteEdit',
'verb' => RouteVerb::SET,
'permission' => [
'module' => Controller::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::DRIVER,
'state' => PermissionCategory::EQUIPMENT,
],
],
],

View File

@ -12,156 +12,99 @@
*/
declare(strict_types=1);
use Modules\FleetManagement\Controller\BackendController;
use Modules\FleetManagement\Models\PermissionCategory;
use Modules\EquipmentManagement\Controller\BackendController;
use Modules\EquipmentManagement\Models\PermissionCategory;
use phpOMS\Account\PermissionType;
use phpOMS\Router\RouteVerb;
return [
'^.*/fleet/vehicle/attribute/type/list.*$' => [
'^.*/equipment/equipment/attribute/type/list.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementAttributeTypeList',
'dest' => '\Modules\EquipmentManagement\Controller\BackendController:viewEquipmentManagementAttributeTypeList',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::VEHICLE,
'state' => PermissionCategory::EQUIPMENT,
],
],
],
'^.*/fleet/vehicle/attribute/type\?.*$' => [
'^.*/equipment/equipment/attribute/type\?.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementAttributeType',
'dest' => '\Modules\EquipmentManagement\Controller\BackendController:viewEquipmentManagementAttributeType',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::VEHICLE,
'state' => PermissionCategory::EQUIPMENT,
],
],
],
'^.*/fleet/vehicle/list.*$' => [
'^.*/equipment/equipment/list.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementVehicleList',
'dest' => '\Modules\EquipmentManagement\Controller\BackendController:viewEquipmentManagementEquipmentList',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::VEHICLE,
'state' => PermissionCategory::EQUIPMENT,
],
],
],
'^.*/fleet/vehicle/create.*$' => [
'^.*/equipment/equipment/create.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementVehicleCreate',
'dest' => '\Modules\EquipmentManagement\Controller\BackendController:viewEquipmentManagementEquipmentCreate',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::CREATE,
'state' => PermissionCategory::VEHICLE,
'state' => PermissionCategory::EQUIPMENT,
],
],
],
'^.*/fleet/vehicle/profile.*$' => [
'^.*/equipment/equipment/profile.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementVehicleProfile',
'dest' => '\Modules\EquipmentManagement\Controller\BackendController:viewEquipmentManagementEquipmentProfile',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::VEHICLE,
'state' => PermissionCategory::EQUIPMENT,
],
],
],
'^.*/fleet/driver/attribute/type/list.*$' => [
'^.*/equipment/inspection/list.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementDriverAttributeTypeList',
'dest' => '\Modules\EquipmentManagement\Controller\BackendController:viewEquipmentManagementEquipmentList',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::VEHICLE,
'state' => PermissionCategory::EQUIPMENT,
],
],
],
'^.*/fleet/driver/attribute/type\?.*$' => [
'^.*/equipment/inspection/create.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementDriverAttributeType',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::VEHICLE,
],
],
],
'^.*/fleet/driver/list.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementDriverList',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::VEHICLE,
],
],
],
'^.*/fleet/driver/create.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementDriverCreate',
'dest' => '\Modules\EquipmentManagement\Controller\BackendController:viewEquipmentManagementEquipmentCreate',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::CREATE,
'state' => PermissionCategory::VEHICLE,
'state' => PermissionCategory::EQUIPMENT,
],
],
],
'^.*/fleet/driver/profile.*$' => [
'^.*/equipment/inspection/profile.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementDriverProfile',
'dest' => '\Modules\EquipmentManagement\Controller\BackendController:viewEquipmentManagementEquipmentProfile',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::VEHICLE,
],
],
],
'^.*/fleet/inspection/list.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementVehicleList',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::VEHICLE,
],
],
],
'^.*/fleet/inspection/create.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementVehicleCreate',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::CREATE,
'state' => PermissionCategory::VEHICLE,
],
],
],
'^.*/fleet/inspection/profile.*$' => [
[
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementVehicleProfile',
'verb' => RouteVerb::GET,
'permission' => [
'module' => BackendController::NAME,
'type' => PermissionType::READ,
'state' => PermissionCategory::VEHICLE,
'state' => PermissionCategory::EQUIPMENT,
],
],
],

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Admin
* @package Modules\EquipmentManagement\Admin
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
@ -12,14 +12,14 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Admin;
namespace Modules\EquipmentManagement\Admin;
use phpOMS\Module\StatusAbstract;
/**
* Status class.
*
* @package Modules\FleetManagement\Admin
* @package Modules\EquipmentManagement\Admin
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Admin
* @package Modules\EquipmentManagement\Admin
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
@ -12,14 +12,14 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Admin;
namespace Modules\EquipmentManagement\Admin;
use phpOMS\Module\UninstallerAbstract;
/**
* Uninstaller class.
*
* @package Modules\FleetManagement\Admin
* @package Modules\EquipmentManagement\Admin
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Admin
* @package Modules\EquipmentManagement\Admin
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
@ -12,14 +12,14 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Admin;
namespace Modules\EquipmentManagement\Admin;
use phpOMS\Module\UpdaterAbstract;
/**
* Updater class.
*
* @package Modules\FleetManagement\Admin
* @package Modules\EquipmentManagement\Admin
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0

View File

@ -1,615 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\FleetManagement
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Controller;
use Modules\Admin\Models\NullAccount;
use Modules\FleetManagement\Models\Driver\DriverInspectionTypeL11nMapper;
use Modules\FleetManagement\Models\Driver\DriverInspectionTypeMapper;
use Modules\FleetManagement\Models\Driver\Driver;
use Modules\FleetManagement\Models\Driver\DriverMapper;
use Modules\FleetManagement\Models\Driver\DriverStatus;
use Modules\Media\Models\CollectionMapper;
use Modules\Media\Models\MediaMapper;
use Modules\Media\Models\NullMedia;
use Modules\Media\Models\PathSettings;
use Modules\Media\Models\Reference;
use Modules\Media\Models\ReferenceMapper;
use phpOMS\Localization\BaseStringL11n;
use phpOMS\Localization\BaseStringL11nType;
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.
*
* @package Modules\FleetManagement
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
final class ApiDriverController extends Controller
{
/**
* Api method to create a driver
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return void
*
* @api
*
* @since 1.0.0
*/
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;
return;
}
/** @var Driver $driver */
$driver = $this->createDriverFromRequest($request);
$this->createModel($request->header->account, $driver, DriverMapper::class, 'driver', $request->getOrigin());
if (!empty($request->files)
|| !empty($request->getDataJson('media'))
) {
$this->createDriverMedia($driver, $request);
}
$this->fillJsonResponse(
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->header->l11n->language, '0', '0', 'SucessfulCreate'),
$driver
);
}
/**
* Method to create driver from request.
*
* @param RequestAbstract $request Request
*
* @return Driver Returns the created driver from the request
*
* @since 1.0.0
*/
public function createDriverFromRequest(RequestAbstract $request) : Driver
{
$driver = new Driver();
$driver->account = new NullAccount($request->getDataInt('account') ?? 1);
$driver->status = (int) ($request->getDataInt('status') ?? DriverStatus::INACTIVE);
return $driver;
}
/**
* Create media files for driver
*
* @param Driver $driver Driver
* @param RequestAbstract $request Request incl. media do upload
*
* @return void
*
* @since 1.0.0
*/
private function createDriverMedia(Driver $driver, RequestAbstract $request) : void
{
$path = $this->createDriverDir($driver);
if (!empty($uploadedFiles = $request->files)) {
$uploaded = $this->app->moduleManager->get('Media')->uploadFiles(
names: [],
fileNames: [],
files: $uploadedFiles,
account: $request->header->account,
basePath: __DIR__ . '/../../../Modules/Media/Files' . $path,
virtualPath: $path,
pathSettings: PathSettings::FILE_PATH
);
$collection = null;
foreach ($uploaded as $media) {
$this->createModelRelation(
$request->header->account,
$driver->id,
$media->id,
DriverMapper::class,
'files',
'',
$request->getOrigin()
);
if ($collection === null) {
/** @var \Modules\Media\Models\Collection $collection */
$collection = MediaMapper::getParentCollection($path)->limit(1)->execute();
if ($collection->id === 0) {
$collection = $this->app->moduleManager->get('Media')->createRecursiveMediaCollection(
$path,
$request->header->account,
__DIR__ . '/../../../Modules/Media/Files' . $path
);
}
}
$this->createModelRelation(
$request->header->account,
$collection->id,
$media->id,
CollectionMapper::class,
'sources',
'',
$request->getOrigin()
);
}
}
if (!empty($mediaFiles = $request->getDataJson('media'))) {
$collection = null;
foreach ($mediaFiles as $file) {
/** @var \Modules\Media\Models\Media $media */
$media = MediaMapper::get()->where('id', (int) $file)->limit(1)->execute();
$this->createModelRelation(
$request->header->account,
$driver->id,
$media->id,
DriverMapper::class,
'files',
'',
$request->getOrigin()
);
$ref = new Reference();
$ref->name = $media->name;
$ref->source = new NullMedia($media->id);
$ref->createdBy = new NullAccount($request->header->account);
$ref->setVirtualPath($path);
$this->createModel($request->header->account, $ref, ReferenceMapper::class, 'media_reference', $request->getOrigin());
if ($collection === null) {
/** @var \Modules\Media\Models\Collection $collection */
$collection = MediaMapper::getParentCollection($path)->limit(1)->execute();
if ($collection->id === 0) {
$collection = $this->app->moduleManager->get('Media')->createRecursiveMediaCollection(
$path,
$request->header->account,
__DIR__ . '/../../../Modules/Media/Files' . $path
);
}
}
$this->createModelRelation(
$request->header->account,
$collection->id,
$ref->id,
CollectionMapper::class,
'sources',
'',
$request->getOrigin()
);
}
}
}
/**
* Validate driver create request
*
* @param RequestAbstract $request Request
*
* @return array<string, bool> Returns the validation array of the request
*
* @since 1.0.0
*/
private function validateDriverCreate(RequestAbstract $request) : array
{
$val = [];
if (($val['account'] = !$request->hasData('account'))
) {
return $val;
}
return [];
}
/**
* Api method to create a bill
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return void
*
* @api
*
* @since 1.0.0
*/
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;
return;
}
/** @var \Modules\FleetManagement\Models\Driver\Driver $driver */
$driver = DriverMapper::get()->where('id', (int) $request->getData('driver'))->execute();
$path = $this->createDriverDir($driver);
$uploaded = [];
if (!empty($uploadedFiles = $request->files)) {
$uploaded = $this->app->moduleManager->get('Media')->uploadFiles(
names: [],
fileNames: [],
files: $uploadedFiles,
account: $request->header->account,
basePath: __DIR__ . '/../../../Modules/Media/Files' . $path,
virtualPath: $path,
pathSettings: PathSettings::FILE_PATH,
hasAccountRelation: false,
readContent: (bool) ($request->getData('parse_content') ?? false)
);
$collection = null;
foreach ($uploaded as $media) {
$this->createModelRelation(
$request->header->account,
$driver->id,
$media->id,
DriverMapper::class,
'files',
'',
$request->getOrigin()
);
if ($request->hasData('type')) {
$this->createModelRelation(
$request->header->account,
$media->id,
$request->getDataInt('type'),
MediaMapper::class,
'types',
'',
$request->getOrigin()
);
}
if ($collection === null) {
/** @var \Modules\Media\Models\Collection $collection */
$collection = MediaMapper::getParentCollection($path)->limit(1)->execute();
if ($collection->id === 0) {
$collection = $this->app->moduleManager->get('Media')->createRecursiveMediaCollection(
$path,
$request->header->account,
__DIR__ . '/../../../Modules/Media/Files' . $path,
);
}
}
$this->createModelRelation(
$request->header->account,
$collection->id,
$media->id,
CollectionMapper::class,
'sources',
'',
$request->getOrigin()
);
}
}
if (!empty($mediaFiles = $request->getDataJson('media'))) {
foreach ($mediaFiles as $media) {
$this->createModelRelation(
$request->header->account,
$driver->id,
(int) $media,
DriverMapper::class,
'files',
'',
$request->getOrigin()
);
}
}
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Media', 'Media added to driver.', [
'upload' => $uploaded,
'media' => $mediaFiles,
]);
}
/**
* Create media directory path
*
* @param Driver $driver Driver
*
* @return string
*
* @since 1.0.0
*/
private function createDriverDir(Driver $driver) : string
{
return '/Modules/FleetManagement/Driver/'
. $this->app->unitId . '/'
. $driver->id;
}
/**
* Method to validate bill creation from request
*
* @param RequestAbstract $request Request
*
* @return array<string, bool>
*
* @since 1.0.0
*/
private function validateMediaAddToDriver(RequestAbstract $request) : array
{
$val = [];
if (($val['media'] = (!$request->hasData('media') && empty($request->files)))
|| ($val['driver'] = !$request->hasData('driver'))
) {
return $val;
}
return [];
}
/**
* Api method to create a driver
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return void
*
* @api
*
* @since 1.0.0
*/
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;
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
);
}
/**
* Method to create driver from request.
*
* @param RequestAbstract $request Request
*
* @return BaseStringL11nType Returns the created driver from the request
*
* @since 1.0.0
*/
public function createDriverInspectionTypeFromRequest(RequestAbstract $request) : BaseStringL11nType
{
$type = new BaseStringL11nType();
$type->title = $request->getDataString('name') ?? '';
$type->setL11n($request->getDataString('title') ?? '', $request->getDataString('language') ?? ISO639x1Enum::_EN);
return $type;
}
/**
* Validate driver create request
*
* @param RequestAbstract $request Request
*
* @return array<string, bool> Returns the validation array of the request
*
* @since 1.0.0
*/
private function validateDriverInspectionTypeCreate(RequestAbstract $request) : array
{
$val = [];
if (($val['name'] = !$request->hasData('name'))
|| ($val['title'] = !$request->hasData('title'))
) {
return $val;
}
return [];
}
/**
* Api method to create driver attribute l11n
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return void
*
* @api
*
* @since 1.0.0
*/
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;
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);
}
/**
* Method to create driver attribute l11n from request.
*
* @param RequestAbstract $request Request
*
* @return BaseStringL11n
*
* @since 1.0.0
*/
private function createDriverInspectionTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n
{
$typeL11n = new BaseStringL11n();
$typeL11n->ref = $request->getDataInt('type') ?? 0;
$typeL11n->setLanguage(
$request->getDataString('language') ?? $request->header->l11n->language
);
$typeL11n->content = $request->getDataString('title') ?? '';
return $typeL11n;
}
/**
* Validate driver attribute l11n create request
*
* @param RequestAbstract $request Request
*
* @return array<string, bool>
*
* @since 1.0.0
*/
private function validateDriverInspectionTypeL11nCreate(RequestAbstract $request) : array
{
$val = [];
if (($val['title'] = !$request->hasData('title'))
|| ($val['type'] = !$request->hasData('type'))
) {
return $val;
}
return [];
}
/**
* Api method to create notes
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return void
*
* @api
*
* @since 1.0.0
*/
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;
return;
}
$request->setData('virtualpath', '/Modules/FleetManagement/Driver/' . $request->getData('id'), true);
$this->app->moduleManager->get('Editor', 'Api')->apiEditorCreate($request, $response, $data);
if ($response->header->status !== RequestStatusCode::R_200) {
return;
}
$responseData = $response->get($request->uri->__toString());
if (!\is_array($responseData)) {
return;
}
$model = $responseData['response'];
$this->createModelRelation($request->header->account, (int) $request->getData('id'), $model->id, DriverMapper::class, 'notes', '', $request->getOrigin());
}
/**
* Validate item note create request
*
* @param RequestAbstract $request Request
*
* @return array<string, bool>
*
* @since 1.0.0
*/
private function validateNoteCreate(RequestAbstract $request) : array
{
$val = [];
if (($val['id'] = !$request->hasData('id'))
) {
return $val;
}
return [];
}
/**
* Api method to update note
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return void
*
* @api
*
* @since 1.0.0
*/
public function apiNoteEdit(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{
$this->app->moduleManager->get('Editor', 'Api')->apiEditorUpdate($request, $response, $data);
if ($response->header->status !== RequestStatusCode::R_200) {
return;
}
$responseData = $response->get($request->uri->__toString());
if (!\is_array($responseData)) {
return;
}
}
}

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement
* @package Modules\EquipmentManagement
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
@ -12,18 +12,18 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Controller;
namespace Modules\EquipmentManagement\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\EquipmentManagement\Models\EquipmentAttributeMapper;
use Modules\EquipmentManagement\Models\EquipmentAttributeTypeL11nMapper;
use Modules\EquipmentManagement\Models\EquipmentAttributeTypeMapper;
use Modules\EquipmentManagement\Models\EquipmentAttributeValueL11nMapper;
use Modules\EquipmentManagement\Models\EquipmentAttributeValueMapper;
use phpOMS\Localization\BaseStringL11n;
use phpOMS\Localization\ISO639x1Enum;
use phpOMS\Message\Http\RequestStatusCode;
@ -33,17 +33,17 @@ use phpOMS\Message\ResponseAbstract;
use phpOMS\Model\Message\FormValidation;
/**
* FleetManagement class.
* EquipmentManagement class.
*
* @package Modules\FleetManagement
* @package Modules\EquipmentManagement
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
final class ApiDriverAttributeController extends Controller
final class ApiEquipmentAttributeController extends Controller
{
/**
* Api method to create driver attribute
* Api method to create equipment attribute
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
@ -55,23 +55,23 @@ final class ApiDriverAttributeController extends Controller
*
* @since 1.0.0
*/
public function apiDriverAttributeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
public function apiEquipmentAttributeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{
if (!empty($val = $this->validateDriverAttributeCreate($request))) {
if (!empty($val = $this->validateEquipmentAttributeCreate($request))) {
$response->data['attribute_create'] = new FormValidation($val);
$response->header->status = RequestStatusCode::R_400;
return;
}
$attribute = $this->createDriverAttributeFromRequest($request);
$this->createModel($request->header->account, $attribute, DriverAttributeMapper::class, 'attribute', $request->getOrigin());
$attribute = $this->createEquipmentAttributeFromRequest($request);
$this->createModel($request->header->account, $attribute, EquipmentAttributeMapper::class, 'attribute', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute', 'Attribute successfully created', $attribute);
}
/**
* Method to create driver attribute from request.
* Method to create equipment attribute from request.
*
* @param RequestAbstract $request Request
*
@ -79,10 +79,10 @@ final class ApiDriverAttributeController extends Controller
*
* @since 1.0.0
*/
private function createDriverAttributeFromRequest(RequestAbstract $request) : Attribute
private function createEquipmentAttributeFromRequest(RequestAbstract $request) : Attribute
{
$attribute = new Attribute();
$attribute->ref = (int) $request->getData('driver');
$attribute->ref = (int) $request->getData('equipment');
$attribute->type = new NullAttributeType((int) $request->getData('type'));
if ($request->hasData('value')) {
@ -100,7 +100,7 @@ final class ApiDriverAttributeController extends Controller
}
/**
* Validate driver attribute create request
* Validate equipment attribute create request
*
* @param RequestAbstract $request Request
*
@ -108,12 +108,12 @@ final class ApiDriverAttributeController extends Controller
*
* @since 1.0.0
*/
private function validateDriverAttributeCreate(RequestAbstract $request) : array
private function validateEquipmentAttributeCreate(RequestAbstract $request) : array
{
$val = [];
if (($val['type'] = !$request->hasData('type'))
|| ($val['value'] = (!$request->hasData('value') && !$request->hasData('custom')))
|| ($val['driver'] = !$request->hasData('driver'))
|| ($val['equipment'] = !$request->hasData('equipment'))
) {
return $val;
}
@ -122,7 +122,7 @@ final class ApiDriverAttributeController extends Controller
}
/**
* Api method to create driver attribute
* Api method to create equipment attribute
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
@ -134,34 +134,34 @@ final class ApiDriverAttributeController extends Controller
*
* @since 1.0.0
*/
public function apiDriverAttributeUpdate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
public function apiEquipmentAttributeUpdate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{
if (!empty($val = $this->validateDriverAttributeUpdate($request))) {
if (!empty($val = $this->validateEquipmentAttributeUpdate($request))) {
$response->data['attribute_update'] = new FormValidation($val);
$response->header->status = RequestStatusCode::R_400;
return;
}
$old = DriverAttributeMapper::get()
$old = EquipmentAttributeMapper::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());
$new = $this->updateEquipmentAttributeFromRequest($request, $old->deepClone());
$this->updateModel($request->header->account, $old, $new, EquipmentAttributeMapper::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->updateModel($request->header->account, $old->value, $new->value, EquipmentAttributeValueMapper::class, 'attribute_value', $request->getOrigin());
}
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Attribute', 'Attribute successfully updated', $new);
}
/**
* Method to create driver attribute from request.
* Method to create equipment attribute from request.
*
* @param RequestAbstract $request Request
*
@ -169,7 +169,7 @@ final class ApiDriverAttributeController extends Controller
*
* @since 1.0.0
*/
private function updateDriverAttributeFromRequest(RequestAbstract $request, Attribute $attribute) : Attribute
private function updateEquipmentAttributeFromRequest(RequestAbstract $request, Attribute $attribute) : Attribute
{
if ($attribute->type->custom) {
if ($request->hasData('value')) {
@ -192,7 +192,7 @@ final class ApiDriverAttributeController extends Controller
}
/**
* Validate driver attribute create request
* Validate equipment attribute create request
*
* @param RequestAbstract $request Request
*
@ -200,7 +200,7 @@ final class ApiDriverAttributeController extends Controller
*
* @since 1.0.0
*/
private function validateDriverAttributeUpdate(RequestAbstract $request) : array
private function validateEquipmentAttributeUpdate(RequestAbstract $request) : array
{
$val = [];
if (($val['id'] = !$request->hasData('id'))
@ -212,7 +212,7 @@ final class ApiDriverAttributeController extends Controller
}
/**
* Api method to create driver attribute l11n
* Api method to create equipment attribute l11n
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
@ -224,22 +224,22 @@ final class ApiDriverAttributeController extends Controller
*
* @since 1.0.0
*/
public function apiDriverAttributeTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
public function apiEquipmentAttributeTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{
if (!empty($val = $this->validateDriverAttributeTypeL11nCreate($request))) {
if (!empty($val = $this->validateEquipmentAttributeTypeL11nCreate($request))) {
$response->data['attr_type_l11n_create'] = new FormValidation($val);
$response->header->status = RequestStatusCode::R_400;
return;
}
$attrL11n = $this->createDriverAttributeTypeL11nFromRequest($request);
$this->createModel($request->header->account, $attrL11n, DriverAttributeTypeL11nMapper::class, 'attr_type_l11n', $request->getOrigin());
$attrL11n = $this->createEquipmentAttributeTypeL11nFromRequest($request);
$this->createModel($request->header->account, $attrL11n, EquipmentAttributeTypeL11nMapper::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.
* Method to create equipment attribute l11n from request.
*
* @param RequestAbstract $request Request
*
@ -247,7 +247,7 @@ final class ApiDriverAttributeController extends Controller
*
* @since 1.0.0
*/
private function createDriverAttributeTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n
private function createEquipmentAttributeTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n
{
$attrL11n = new BaseStringL11n();
$attrL11n->ref = $request->getDataInt('type') ?? 0;
@ -260,7 +260,7 @@ final class ApiDriverAttributeController extends Controller
}
/**
* Validate driver attribute l11n create request
* Validate equipment attribute l11n create request
*
* @param RequestAbstract $request Request
*
@ -268,7 +268,7 @@ final class ApiDriverAttributeController extends Controller
*
* @since 1.0.0
*/
private function validateDriverAttributeTypeL11nCreate(RequestAbstract $request) : array
private function validateEquipmentAttributeTypeL11nCreate(RequestAbstract $request) : array
{
$val = [];
if (($val['title'] = !$request->hasData('title'))
@ -281,7 +281,7 @@ final class ApiDriverAttributeController extends Controller
}
/**
* Api method to create driver attribute type
* Api method to create equipment attribute type
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
@ -293,9 +293,9 @@ final class ApiDriverAttributeController extends Controller
*
* @since 1.0.0
*/
public function apiDriverAttributeTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
public function apiEquipmentAttributeTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{
if (!empty($val = $this->validateDriverAttributeTypeCreate($request))) {
if (!empty($val = $this->validateEquipmentAttributeTypeCreate($request))) {
$response->data['attr_type_create'] = new FormValidation($val);
$response->header->status = RequestStatusCode::R_400;
@ -303,13 +303,13 @@ final class ApiDriverAttributeController extends Controller
}
$attrType = $this->createAttributeTypeFromRequest($request);
$this->createModel($request->header->account, $attrType, DriverAttributeTypeMapper::class, 'attr_type', $request->getOrigin());
$this->createModel($request->header->account, $attrType, EquipmentAttributeTypeMapper::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.
* Method to create equipment attribute from request.
*
* @param RequestAbstract $request Request
*
@ -331,7 +331,7 @@ final class ApiDriverAttributeController extends Controller
}
/**
* Validate driver attribute create request
* Validate equipment attribute create request
*
* @param RequestAbstract $request Request
*
@ -339,7 +339,7 @@ final class ApiDriverAttributeController extends Controller
*
* @since 1.0.0
*/
private function validateDriverAttributeTypeCreate(RequestAbstract $request) : array
private function validateEquipmentAttributeTypeCreate(RequestAbstract $request) : array
{
$val = [];
if (($val['title'] = !$request->hasData('title'))
@ -352,7 +352,7 @@ final class ApiDriverAttributeController extends Controller
}
/**
* Api method to create driver attribute value
* Api method to create equipment attribute value
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
@ -364,9 +364,9 @@ final class ApiDriverAttributeController extends Controller
*
* @since 1.0.0
*/
public function apiDriverAttributeValueCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
public function apiEquipmentAttributeValueCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{
if (!empty($val = $this->validateDriverAttributeValueCreate($request))) {
if (!empty($val = $this->validateEquipmentAttributeValueCreate($request))) {
$response->data['attr_value_create'] = new FormValidation($val);
$response->header->status = RequestStatusCode::R_400;
@ -374,14 +374,14 @@ final class ApiDriverAttributeController extends Controller
}
$attrValue = $this->createAttributeValueFromRequest($request);
$this->createModel($request->header->account, $attrValue, DriverAttributeValueMapper::class, 'attr_value', $request->getOrigin());
$this->createModel($request->header->account, $attrValue, EquipmentAttributeValueMapper::class, 'attr_value', $request->getOrigin());
if ($attrValue->isDefault) {
$this->createModelRelation(
$request->header->account,
(int) $request->getData('type'),
$attrValue->id,
DriverAttributeTypeMapper::class, 'defaults', '', $request->getOrigin()
EquipmentAttributeTypeMapper::class, 'defaults', '', $request->getOrigin()
);
}
@ -389,7 +389,7 @@ final class ApiDriverAttributeController extends Controller
}
/**
* Method to create driver attribute value from request.
* Method to create equipment attribute value from request.
*
* @param RequestAbstract $request Request
*
@ -400,7 +400,7 @@ final class ApiDriverAttributeController extends Controller
private function createAttributeValueFromRequest(RequestAbstract $request) : AttributeValue
{
/** @var AttributeType $type */
$type = DriverAttributeTypeMapper::get()
$type = EquipmentAttributeTypeMapper::get()
->where('id', $request->getDataInt('type') ?? 0)
->execute();
@ -416,7 +416,7 @@ final class ApiDriverAttributeController extends Controller
}
/**
* Validate driver attribute value create request
* Validate equipment attribute value create request
*
* @param RequestAbstract $request Request
*
@ -424,7 +424,7 @@ final class ApiDriverAttributeController extends Controller
*
* @since 1.0.0
*/
private function validateDriverAttributeValueCreate(RequestAbstract $request) : array
private function validateEquipmentAttributeValueCreate(RequestAbstract $request) : array
{
$val = [];
if (($val['type'] = !$request->hasData('type'))
@ -437,7 +437,7 @@ final class ApiDriverAttributeController extends Controller
}
/**
* Api method to create driver attribute l11n
* Api method to create equipment attribute l11n
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
@ -449,9 +449,9 @@ final class ApiDriverAttributeController extends Controller
*
* @since 1.0.0
*/
public function apiDriverAttributeValueL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
public function apiEquipmentAttributeValueL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{
if (!empty($val = $this->validateDriverAttributeValueL11nCreate($request))) {
if (!empty($val = $this->validateEquipmentAttributeValueL11nCreate($request))) {
$response->data['attr_value_l11n_create'] = new FormValidation($val);
$response->header->status = RequestStatusCode::R_400;
@ -459,12 +459,12 @@ final class ApiDriverAttributeController extends Controller
}
$attrL11n = $this->createAttributeValueL11nFromRequest($request);
$this->createModel($request->header->account, $attrL11n, DriverAttributeValueL11nMapper::class, 'attr_value_l11n', $request->getOrigin());
$this->createModel($request->header->account, $attrL11n, EquipmentAttributeValueL11nMapper::class, 'attr_value_l11n', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $attrL11n);
}
/**
* Method to create driver attribute l11n from request.
* Method to create equipment attribute l11n from request.
*
* @param RequestAbstract $request Request
*
@ -485,7 +485,7 @@ final class ApiDriverAttributeController extends Controller
}
/**
* Validate driver attribute l11n create request
* Validate equipment attribute l11n create request
*
* @param RequestAbstract $request Request
*
@ -493,7 +493,7 @@ final class ApiDriverAttributeController extends Controller
*
* @since 1.0.0
*/
private function validateDriverAttributeValueL11nCreate(RequestAbstract $request) : array
private function validateEquipmentAttributeValueL11nCreate(RequestAbstract $request) : array
{
$val = [];
if (($val['title'] = !$request->hasData('title'))
@ -506,7 +506,7 @@ final class ApiDriverAttributeController extends Controller
}
/**
* Api method to handle api driver attributes
* Api method to handle api equipment attributes
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
@ -518,9 +518,9 @@ final class ApiDriverAttributeController extends Controller
*
* @since 1.0.0
*/
public function apiDriverAttribute(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
public function apiEquipmentAttribute(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{
if (!empty($val = $this->validateDriverAttributeValueL11nCreate($request))) {
if (!empty($val = $this->validateEquipmentAttributeValueL11nCreate($request))) {
$response->data['attr_value_l11n_create'] = new FormValidation($val);
$response->header->status = RequestStatusCode::R_400;
@ -528,7 +528,7 @@ final class ApiDriverAttributeController extends Controller
}
$attrL11n = $this->createAttributeValueL11nFromRequest($request);
$this->createModel($request->header->account, $attrL11n, DriverAttributeValueL11nMapper::class, 'attr_value_l11n', $request->getOrigin());
$this->createModel($request->header->account, $attrL11n, EquipmentAttributeValueL11nMapper::class, 'attr_value_l11n', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $attrL11n);
}
}

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement
* @package Modules\EquipmentManagement
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
@ -12,18 +12,16 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Controller;
namespace Modules\EquipmentManagement\Controller;
use Modules\Admin\Models\NullAccount;
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\VehicleMapper;
use Modules\FleetManagement\Models\VehicleStatus;
use Modules\FleetManagement\Models\VehicleTypeL11nMapper;
use Modules\FleetManagement\Models\VehicleTypeMapper;
use Modules\EquipmentManagement\Models\InspectionTypeL11nMapper;
use Modules\EquipmentManagement\Models\InspectionTypeMapper;
use Modules\EquipmentManagement\Models\Equipment;
use Modules\EquipmentManagement\Models\EquipmentMapper;
use Modules\EquipmentManagement\Models\EquipmentStatus;
use Modules\EquipmentManagement\Models\EquipmentTypeL11nMapper;
use Modules\EquipmentManagement\Models\EquipmentTypeMapper;
use Modules\Media\Models\CollectionMapper;
use Modules\Media\Models\MediaMapper;
use Modules\Media\Models\NullMedia;
@ -41,17 +39,17 @@ use phpOMS\Message\ResponseAbstract;
use phpOMS\Model\Message\FormValidation;
/**
* FleetManagement class.
* EquipmentManagement class.
*
* @package Modules\FleetManagement
* @package Modules\EquipmentManagement
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
final class ApiVehicleController extends Controller
final class ApiEquipmentController extends Controller
{
/**
* Api method to create a vehicle
* Api method to create a equipment
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
@ -63,18 +61,18 @@ final class ApiVehicleController extends Controller
*
* @since 1.0.0
*/
public function apiVehicleTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
public function apiEquipmentTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{
if (!empty($val = $this->validateVehicleTypeCreate($request))) {
if (!empty($val = $this->validateEquipmentTypeCreate($request))) {
$response->data[$request->uri->__toString()] = new FormValidation($val);
$response->header->status = RequestStatusCode::R_400;
return;
}
/** @var BaseStringL11nType $vehicle */
$vehicle = $this->createVehicleTypeFromRequest($request);
$this->createModel($request->header->account, $vehicle, VehicleTypeMapper::class, 'vehicle_type', $request->getOrigin());
/** @var BaseStringL11nType $equipment */
$equipment = $this->createEquipmentTypeFromRequest($request);
$this->createModel($request->header->account, $equipment, EquipmentTypeMapper::class, 'equipment_type', $request->getOrigin());
$this->fillJsonResponse(
$request,
@ -82,20 +80,20 @@ final class ApiVehicleController extends Controller
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->header->l11n->language, '0', '0', 'SucessfulCreate'),
$vehicle
$equipment
);
}
/**
* Method to create vehicle from request.
* Method to create equipment from request.
*
* @param RequestAbstract $request Request
*
* @return BaseStringL11nType Returns the created vehicle from the request
* @return BaseStringL11nType Returns the created equipment from the request
*
* @since 1.0.0
*/
public function createVehicleTypeFromRequest(RequestAbstract $request) : BaseStringL11nType
public function createEquipmentTypeFromRequest(RequestAbstract $request) : BaseStringL11nType
{
$type = new BaseStringL11nType();
$type->title = $request->getDataString('name') ?? '';
@ -105,7 +103,7 @@ final class ApiVehicleController extends Controller
}
/**
* Validate vehicle create request
* Validate equipment create request
*
* @param RequestAbstract $request Request
*
@ -113,7 +111,7 @@ final class ApiVehicleController extends Controller
*
* @since 1.0.0
*/
private function validateVehicleTypeCreate(RequestAbstract $request) : array
private function validateEquipmentTypeCreate(RequestAbstract $request) : array
{
$val = [];
if (($val['name'] = !$request->hasData('name'))
@ -126,7 +124,7 @@ final class ApiVehicleController extends Controller
}
/**
* Api method to create vehicle attribute l11n
* Api method to create equipment attribute l11n
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
@ -138,22 +136,22 @@ final class ApiVehicleController extends Controller
*
* @since 1.0.0
*/
public function apiVehicleTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
public function apiEquipmentTypeL11nCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{
if (!empty($val = $this->validateVehicleTypeL11nCreate($request))) {
$response->data['vehicle_type_l11n_create'] = new FormValidation($val);
if (!empty($val = $this->validateEquipmentTypeL11nCreate($request))) {
$response->data['equipment_type_l11n_create'] = new FormValidation($val);
$response->header->status = RequestStatusCode::R_400;
return;
}
$typeL11n = $this->createVehicleTypeL11nFromRequest($request);
$this->createModel($request->header->account, $typeL11n, VehicleTypeL11nMapper::class, 'vehicle_type_l11n', $request->getOrigin());
$typeL11n = $this->createEquipmentTypeL11nFromRequest($request);
$this->createModel($request->header->account, $typeL11n, EquipmentTypeL11nMapper::class, 'equipment_type_l11n', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Localization', 'Localization successfully created', $typeL11n);
}
/**
* Method to create vehicle attribute l11n from request.
* Method to create equipment attribute l11n from request.
*
* @param RequestAbstract $request Request
*
@ -161,7 +159,7 @@ final class ApiVehicleController extends Controller
*
* @since 1.0.0
*/
private function createVehicleTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n
private function createEquipmentTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n
{
$typeL11n = new BaseStringL11n();
$typeL11n->ref = $request->getDataInt('type') ?? 0;
@ -174,7 +172,7 @@ final class ApiVehicleController extends Controller
}
/**
* Validate vehicle attribute l11n create request
* Validate equipment attribute l11n create request
*
* @param RequestAbstract $request Request
*
@ -182,7 +180,7 @@ final class ApiVehicleController extends Controller
*
* @since 1.0.0
*/
private function validateVehicleTypeL11nCreate(RequestAbstract $request) : array
private function validateEquipmentTypeL11nCreate(RequestAbstract $request) : array
{
$val = [];
if (($val['title'] = !$request->hasData('title'))
@ -195,7 +193,7 @@ final class ApiVehicleController extends Controller
}
/**
* Api method to create a vehicle
* Api method to create a equipment
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
@ -207,167 +205,23 @@ final class ApiVehicleController extends Controller
*
* @since 1.0.0
*/
public function apiFuelTypeCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
public function apiEquipmentCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{
if (!empty($val = $this->validateFuelTypeCreate($request))) {
if (!empty($val = $this->validateEquipmentCreate($request))) {
$response->data[$request->uri->__toString()] = new FormValidation($val);
$response->header->status = RequestStatusCode::R_400;
return;
}
/** @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
);
}
/**
* 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 createFuelTypeFromRequest(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<string, bool> Returns the validation array of the request
*
* @since 1.0.0
*/
private function validateFuelTypeCreate(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 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;
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);
}
/**
* Method to create vehicle attribute l11n from request.
*
* @param RequestAbstract $request Request
*
* @return BaseStringL11n
*
* @since 1.0.0
*/
private function createFuelTypeL11nFromRequest(RequestAbstract $request) : BaseStringL11n
{
$typeL11n = new BaseStringL11n();
$typeL11n->ref = $request->getDataInt('type') ?? 0;
$typeL11n->setLanguage(
$request->getDataString('language') ?? $request->header->l11n->language
);
$typeL11n->content = $request->getDataString('title') ?? '';
return $typeL11n;
}
/**
* Validate vehicle attribute l11n create request
*
* @param RequestAbstract $request Request
*
* @return array<string, bool>
*
* @since 1.0.0
*/
private function validateFuelTypeL11nCreate(RequestAbstract $request) : array
{
$val = [];
if (($val['title'] = !$request->hasData('title'))
|| ($val['type'] = !$request->hasData('type'))
) {
return $val;
}
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 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;
return;
}
/** @var Vehicle $vehicle */
$vehicle = $this->createVehicleFromRequest($request);
$this->createModel($request->header->account, $vehicle, VehicleMapper::class, 'vehicle', $request->getOrigin());
/** @var Equipment $equipment */
$equipment = $this->createEquipmentFromRequest($request);
$this->createModel($request->header->account, $equipment, EquipmentMapper::class, 'equipment', $request->getOrigin());
if (!empty($request->files)
|| !empty($request->getDataJson('media'))
) {
$this->createVehicleMedia($vehicle, $request);
$this->createEquipmentMedia($equipment, $request);
}
$this->fillJsonResponse(
@ -376,45 +230,44 @@ final class ApiVehicleController extends Controller
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->header->l11n->language, '0', '0', 'SucessfulCreate'),
$vehicle
$equipment
);
}
/**
* Method to create vehicle from request.
* Method to create equipment from request.
*
* @param RequestAbstract $request Request
*
* @return Vehicle Returns the created vehicle from the request
* @return Equipment Returns the created equipment from the request
*
* @since 1.0.0
*/
public function createVehicleFromRequest(RequestAbstract $request) : Vehicle
public function createEquipmentFromRequest(RequestAbstract $request) : Equipment
{
$vehicle = new Vehicle();
$vehicle->name = $request->getDataString('name') ?? '';
$vehicle->info = $request->getDataString('info') ?? '';
$vehicle->type = new NullBaseStringL11nType((int) ($request->getDataInt('type') ?? 0));
$vehicle->fuelType = new NullBaseStringL11nType((int) ($request->getDataInt('fuel') ?? 0));
$vehicle->status = (int) ($request->getDataInt('status') ?? VehicleStatus::INACTIVE);
$vehicle->unit = $request->getDataInt('unit') ?? $this->app->unitId;
$equipment = new Equipment();
$equipment->name = $request->getDataString('name') ?? '';
$equipment->info = $request->getDataString('info') ?? '';
$equipment->type = new NullBaseStringL11nType((int) ($request->getDataInt('type') ?? 0));
$equipment->status = (int) ($request->getDataInt('status') ?? EquipmentStatus::INACTIVE);
$equipment->unit = $request->getDataInt('unit') ?? $this->app->unitId;
return $vehicle;
return $equipment;
}
/**
* Create media files for vehicle
* Create media files for equipment
*
* @param Vehicle $vehicle Vehicle
* @param Equipment $equipment Equipment
* @param RequestAbstract $request Request incl. media do upload
*
* @return void
*
* @since 1.0.0
*/
private function createVehicleMedia(Vehicle $vehicle, RequestAbstract $request) : void
private function createEquipmentMedia(Equipment $equipment, RequestAbstract $request) : void
{
$path = $this->createVehicleDir($vehicle);
$path = $this->createEquipmentDir($equipment);
if (!empty($uploadedFiles = $request->files)) {
$uploaded = $this->app->moduleManager->get('Media')->uploadFiles(
@ -431,9 +284,9 @@ final class ApiVehicleController extends Controller
foreach ($uploaded as $media) {
$this->createModelRelation(
$request->header->account,
$vehicle->id,
$equipment->id,
$media->id,
VehicleMapper::class,
EquipmentMapper::class,
'files',
'',
$request->getOrigin()
@ -473,9 +326,9 @@ final class ApiVehicleController extends Controller
$this->createModelRelation(
$request->header->account,
$vehicle->id,
$equipment->id,
$media->id,
VehicleMapper::class,
EquipmentMapper::class,
'files',
'',
$request->getOrigin()
@ -516,7 +369,7 @@ final class ApiVehicleController extends Controller
}
/**
* Validate vehicle create request
* Validate equipment create request
*
* @param RequestAbstract $request Request
*
@ -524,7 +377,7 @@ final class ApiVehicleController extends Controller
*
* @since 1.0.0
*/
private function validateVehicleCreate(RequestAbstract $request) : array
private function validateEquipmentCreate(RequestAbstract $request) : array
{
$val = [];
if (($val['name'] = !$request->hasData('name'))
@ -549,18 +402,18 @@ final class ApiVehicleController extends Controller
*
* @since 1.0.0
*/
public function apiMediaAddToVehicle(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
public function apiMediaAddToEquipment(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
{
if (!empty($val = $this->validateMediaAddToVehicle($request))) {
if (!empty($val = $this->validateMediaAddToEquipment($request))) {
$response->data[$request->uri->__toString()] = new FormValidation($val);
$response->header->status = RequestStatusCode::R_400;
return;
}
/** @var \Modules\FleetManagement\Models\Vehicle $vehicle */
$vehicle = VehicleMapper::get()->where('id', (int) $request->getData('vehicle'))->execute();
$path = $this->createVehicleDir($vehicle);
/** @var \Modules\EquipmentManagement\Models\Equipment $equipment */
$equipment = EquipmentMapper::get()->where('id', (int) $request->getData('equipment'))->execute();
$path = $this->createEquipmentDir($equipment);
$uploaded = [];
if (!empty($uploadedFiles = $request->files)) {
@ -580,9 +433,9 @@ final class ApiVehicleController extends Controller
foreach ($uploaded as $media) {
$this->createModelRelation(
$request->header->account,
$vehicle->id,
$equipment->id,
$media->id,
VehicleMapper::class,
EquipmentMapper::class,
'files',
'',
$request->getOrigin()
@ -629,9 +482,9 @@ final class ApiVehicleController extends Controller
foreach ($mediaFiles as $media) {
$this->createModelRelation(
$request->header->account,
$vehicle->id,
$equipment->id,
(int) $media,
VehicleMapper::class,
EquipmentMapper::class,
'files',
'',
$request->getOrigin()
@ -639,7 +492,7 @@ final class ApiVehicleController extends Controller
}
}
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Media', 'Media added to vehicle.', [
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Media', 'Media added to equipment.', [
'upload' => $uploaded,
'media' => $mediaFiles,
]);
@ -648,17 +501,17 @@ final class ApiVehicleController extends Controller
/**
* Create media directory path
*
* @param Vehicle $vehicle Vehicle
* @param Equipment $equipment Equipment
*
* @return string
*
* @since 1.0.0
*/
private function createVehicleDir(Vehicle $vehicle) : string
private function createEquipmentDir(Equipment $equipment) : string
{
return '/Modules/FleetManagement/Vehicle/'
return '/Modules/EquipmentManagement/Equipment/'
. $this->app->unitId . '/'
. $vehicle->id;
. $equipment->id;
}
/**
@ -670,11 +523,11 @@ final class ApiVehicleController extends Controller
*
* @since 1.0.0
*/
private function validateMediaAddToVehicle(RequestAbstract $request) : array
private function validateMediaAddToEquipment(RequestAbstract $request) : array
{
$val = [];
if (($val['media'] = (!$request->hasData('media') && empty($request->files)))
|| ($val['vehicle'] = !$request->hasData('vehicle'))
|| ($val['equipment'] = !$request->hasData('equipment'))
) {
return $val;
}
@ -683,7 +536,7 @@ final class ApiVehicleController extends Controller
}
/**
* Api method to create a vehicle
* Api method to create a equipment
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
@ -719,11 +572,11 @@ final class ApiVehicleController extends Controller
}
/**
* Method to create vehicle from request.
* Method to create equipment from request.
*
* @param RequestAbstract $request Request
*
* @return BaseStringL11nType Returns the created vehicle from the request
* @return BaseStringL11nType Returns the created equipment from the request
*
* @since 1.0.0
*/
@ -737,7 +590,7 @@ final class ApiVehicleController extends Controller
}
/**
* Validate vehicle create request
* Validate equipment create request
*
* @param RequestAbstract $request Request
*
@ -758,7 +611,7 @@ final class ApiVehicleController extends Controller
}
/**
* Api method to create vehicle attribute l11n
* Api method to create equipment attribute l11n
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
@ -785,7 +638,7 @@ final class ApiVehicleController extends Controller
}
/**
* Method to create vehicle attribute l11n from request.
* Method to create equipment attribute l11n from request.
*
* @param RequestAbstract $request Request
*
@ -806,7 +659,7 @@ final class ApiVehicleController extends Controller
}
/**
* Validate vehicle attribute l11n create request
* Validate equipment attribute l11n create request
*
* @param RequestAbstract $request Request
*
@ -842,13 +695,13 @@ 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->data['equipment_note_create'] = new FormValidation($val);
$response->header->status = RequestStatusCode::R_400;
return;
}
$request->setData('virtualpath', '/Modules/FleetManagement/Vehicle/' . $request->getData('id'), true);
$request->setData('virtualpath', '/Modules/EquipmentManagement/Equipment/' . $request->getData('id'), true);
$this->app->moduleManager->get('Editor', 'Api')->apiEditorCreate($request, $response, $data);
if ($response->header->status !== RequestStatusCode::R_200) {
@ -861,7 +714,7 @@ final class ApiVehicleController extends Controller
}
$model = $responseData['response'];
$this->createModelRelation($request->header->account, (int) $request->getData('id'), $model->id, VehicleMapper::class, 'notes', '', $request->getOrigin());
$this->createModelRelation($request->header->account, (int) $request->getData('id'), $model->id, EquipmentMapper::class, 'notes', '', $request->getOrigin());
}
/**

View File

@ -1,534 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\FleetManagement
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
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 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.
*
* @package Modules\FleetManagement
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
final class ApiVehicleAttributeController extends Controller
{
/**
* 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 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;
return;
}
$attribute = $this->createVehicleAttributeFromRequest($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<string, bool>
*
* @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<string, bool>
*
* @since 1.0.0
*/
private function validateVehicleAttributeUpdate(RequestAbstract $request) : array
{
$val = [];
if (($val['id'] = !$request->hasData('id'))
) {
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 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;
return;
}
$attrL11n = $this->createVehicleAttributeTypeL11nFromRequest($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<string, bool>
*
* @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 [];
}
/**
* Api method to create vehicle attribute type
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return void
*
* @api
*
* @since 1.0.0
*/
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;
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<string, bool>
*
* @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 [];
}
/**
* Api method to create vehicle attribute value
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return void
*
* @api
*
* @since 1.0.0
*/
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;
return;
}
$attrValue = $this->createAttributeValueFromRequest($request);
$this->createModel($request->header->account, $attrValue, VehicleAttributeValueMapper::class, 'attr_value', $request->getOrigin());
if ($attrValue->isDefault) {
$this->createModelRelation(
$request->header->account,
(int) $request->getData('type'),
$attrValue->id,
VehicleAttributeTypeMapper::class, 'defaults', '', $request->getOrigin()
);
}
$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<string, bool>
*
* @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 [];
}
/**
* 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 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;
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);
}
/**
* 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<string, bool>
*
* @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
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return void
*
* @api
*
* @since 1.0.0
*/
public function apiVehicleAttribute(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;
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);
}
}

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement
* @package Modules\EquipmentManagement
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
@ -12,14 +12,14 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Controller;
namespace Modules\EquipmentManagement\Controller;
use Modules\Admin\Models\LocalizationMapper;
use Modules\Admin\Models\SettingsEnum;
use Modules\FleetManagement\Models\VehicleAttributeTypeL11nMapper;
use Modules\FleetManagement\Models\VehicleAttributeTypeMapper;
use Modules\FleetManagement\Models\VehicleMapper;
use Modules\FleetManagement\Models\VehicleTypeMapper;
use Modules\EquipmentManagement\Models\EquipmentAttributeTypeL11nMapper;
use Modules\EquipmentManagement\Models\EquipmentAttributeTypeMapper;
use Modules\EquipmentManagement\Models\EquipmentMapper;
use Modules\EquipmentManagement\Models\EquipmentTypeMapper;
use Modules\Media\Models\MediaMapper;
use Modules\Media\Models\MediaTypeMapper;
use Modules\Organization\Models\UnitMapper;
@ -30,9 +30,9 @@ use phpOMS\Message\ResponseAbstract;
use phpOMS\Views\View;
/**
* FleetManagement class.
* EquipmentManagement class.
*
* @package Modules\FleetManagement
* @package Modules\EquipmentManagement
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
@ -52,14 +52,14 @@ final class BackendController extends Controller
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewFleetManagementAttributeTypeList(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : RenderableInterface
public function viewEquipmentManagementAttributeTypeList(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : RenderableInterface
{
$view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/FleetManagement/Theme/Backend/attribute-type-list');
$view->setTemplate('/Modules/EquipmentManagement/Theme/Backend/attribute-type-list');
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1003503001, $request, $response);
/** @var \Modules\Attribute\Models\AttributeType[] $attributes */
$attributes = VehicleAttributeTypeMapper::getAll()
$attributes = EquipmentAttributeTypeMapper::getAll()
->with('l11n')
->where('l11n/language', $response->header->l11n->language)
->execute();
@ -81,50 +81,21 @@ final class BackendController extends Controller
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewFleetManagementVehicleList(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : RenderableInterface
public function viewEquipmentManagementEquipmentList(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : RenderableInterface
{
$view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/FleetManagement/Theme/Backend/vehicle-list');
$view->setTemplate('/Modules/EquipmentManagement/Theme/Backend/equipment-list');
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1003502001, $request, $response);
$list = VehicleMapper::getAll()
$list = EquipmentMapper::getAll()
->with('type')
->with('type/l11n')
->where('type/l11n/language', $response->header->l11n->language)
->sort('id', 'DESC')
->execute();
$view->data['vehicles'] = $list;
return $view;
}
/**
* Routing end-point for application behaviour.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return RenderableInterface Returns a renderable object
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewFleetManagementDriverList(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : RenderableInterface
{
$view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/FleetManagement/Theme/Backend/driver-list');
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1003502001, $request, $response);
$list = DriverMapper::getAll()
->with('account')
->sort('id', 'DESC')
->execute();
$view->data['drivers'] = $list;
$view->data['equipments'] = $list;
return $view;
}
@ -141,20 +112,20 @@ final class BackendController extends Controller
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewFleetManagementAttributeType(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : RenderableInterface
public function viewEquipmentManagementAttributeType(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : RenderableInterface
{
$view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/FleetManagement/Theme/Backend/attribute-type');
$view->setTemplate('/Modules/EquipmentManagement/Theme/Backend/attribute-type');
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1004801001, $request, $response);
/** @var \Modules\Attribute\Models\AttributeType $attribute */
$attribute = VehicleAttributeTypeMapper::get()
$attribute = EquipmentAttributeTypeMapper::get()
->with('l11n')
->where('id', (int) $request->getData('id'))
->where('l11n/language', $response->header->l11n->language)
->execute();
$l11ns = VehicleAttributeTypeL11nMapper::getAll()
$l11ns = EquipmentAttributeTypeL11nMapper::getAll()
->where('ref', $attribute->id)
->execute();
@ -176,11 +147,11 @@ final class BackendController extends Controller
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewFleetManagementVehicleCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : RenderableInterface
public function viewEquipmentManagementEquipmentCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : RenderableInterface
{
$view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/FleetManagement/Theme/Backend/vehicle-profile');
$view->setTemplate('/Modules/EquipmentManagement/Theme/Backend/equipment-profile');
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1003502001, $request, $response);
/** @var \Model\Setting $settings */
@ -192,7 +163,7 @@ final class BackendController extends Controller
$view->data['attributeView']->data['defaultlocalization'] = LocalizationMapper::get()->where('id', (int) $settings->id)->execute();
$view->data['media-upload'] = new \Modules\Media\Theme\Backend\Components\Upload\BaseView($this->app->l11nManager, $request, $response);
$view->data['vehicle-notes'] = new \Modules\Editor\Theme\Backend\Components\Compound\BaseView($this->app->l11nManager, $request, $response);
$view->data['equipment-notes'] = new \Modules\Editor\Theme\Backend\Components\Compound\BaseView($this->app->l11nManager, $request, $response);
return $view;
}
@ -209,15 +180,15 @@ final class BackendController extends Controller
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewFleetManagementVehicleProfile(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : RenderableInterface
public function viewEquipmentManagementEquipmentProfile(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : RenderableInterface
{
$view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/FleetManagement/Theme/Backend/vehicle-profile');
$view->setTemplate('/Modules/EquipmentManagement/Theme/Backend/equipment-profile');
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1003502001, $request, $response);
// @todo: This langauge filtering doesn't work. But it was working with the old mappers. Maybe there is a bug in the where() definition. Need to inspect the actual query.
$vehicle = VehicleMapper::get()
$equipment = EquipmentMapper::get()
->with('attributes')
->with('attributes/type')
->with('attributes/value')
@ -234,36 +205,36 @@ final class BackendController extends Controller
->where('attributes/type/l11n/language', $response->header->l11n->language)
->execute();
$view->data['vehicle'] = $vehicle;
$view->data['equipment'] = $equipment;
$query = new Builder($this->app->dbPool->get());
$results = $query->selectAs(VehicleMapper::HAS_MANY['files']['external'], 'file')
->from(VehicleMapper::TABLE)
->leftJoin(VehicleMapper::HAS_MANY['files']['table'])
->on(VehicleMapper::HAS_MANY['files']['table'] . '.' . VehicleMapper::HAS_MANY['files']['self'], '=', VehicleMapper::TABLE . '.' . VehicleMapper::PRIMARYFIELD)
$results = $query->selectAs(EquipmentMapper::HAS_MANY['files']['external'], 'file')
->from(EquipmentMapper::TABLE)
->leftJoin(EquipmentMapper::HAS_MANY['files']['table'])
->on(EquipmentMapper::HAS_MANY['files']['table'] . '.' . EquipmentMapper::HAS_MANY['files']['self'], '=', EquipmentMapper::TABLE . '.' . EquipmentMapper::PRIMARYFIELD)
->leftJoin(MediaMapper::TABLE)
->on(VehicleMapper::HAS_MANY['files']['table'] . '.' . VehicleMapper::HAS_MANY['files']['external'], '=', MediaMapper::TABLE . '.' . MediaMapper::PRIMARYFIELD)
->on(EquipmentMapper::HAS_MANY['files']['table'] . '.' . EquipmentMapper::HAS_MANY['files']['external'], '=', MediaMapper::TABLE . '.' . MediaMapper::PRIMARYFIELD)
->leftJoin(MediaMapper::HAS_MANY['types']['table'])
->on(MediaMapper::TABLE . '.' . MediaMapper::PRIMARYFIELD, '=', MediaMapper::HAS_MANY['types']['table'] . '.' . MediaMapper::HAS_MANY['types']['self'])
->leftJoin(MediaTypeMapper::TABLE)
->on(MediaMapper::HAS_MANY['types']['table'] . '.' . MediaMapper::HAS_MANY['types']['external'], '=', MediaTypeMapper::TABLE . '.' . MediaTypeMapper::PRIMARYFIELD)
->where(VehicleMapper::HAS_MANY['files']['self'], '=', $vehicle->id)
->where(MediaTypeMapper::TABLE . '.' . MediaTypeMapper::getColumnByMember('name'), '=', 'vehicle_profile_image');
->where(EquipmentMapper::HAS_MANY['files']['self'], '=', $equipment->id)
->where(MediaTypeMapper::TABLE . '.' . MediaTypeMapper::getColumnByMember('name'), '=', 'equipment_profile_image');
$vehicleImage = MediaMapper::get()
$equipmentImage = MediaMapper::get()
->with('types')
->where('id', $results)
->limit(1)
->execute();
$view->data['vehicleImage'] = $vehicleImage;
$view->data['equipmentImage'] = $equipmentImage;
$vehicleTypes = VehicleTypeMapper::getAll()
$equipmentTypes = EquipmentTypeMapper::getAll()
->with('l11n')
->where('l11n/language', $response->header->l11n->language)
->execute();
$view->data['types'] = $vehicleTypes;
$view->data['types'] = $equipmentTypes;
$units = UnitMapper::getAll()
->execute();
@ -279,76 +250,7 @@ final class BackendController extends Controller
$view->data['attributeView']->data['defaultlocalization'] = LocalizationMapper::get()->where('id', (int) $settings->id)->execute();
$view->data['media-upload'] = new \Modules\Media\Theme\Backend\Components\Upload\BaseView($this->app->l11nManager, $request, $response);
$view->data['vehicle-notes'] = new \Modules\Editor\Theme\Backend\Components\Compound\BaseView($this->app->l11nManager, $request, $response);
return $view;
}
/**
* Routing end-point for application behaviour.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return RenderableInterface Returns a renderable object
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public function viewFleetManagementDriverProfile(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : RenderableInterface
{
$view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/FleetManagement/Theme/Backend/driver-profile');
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1003502001, $request, $response);
// @todo: This langauge filtering doesn't work. But it was working with the old mappers. Maybe there is a bug in the where() definition. Need to inspect the actual query.
$driver = DriverMapper::get()
->with('attributes')
->with('attributes/type')
->with('attributes/value')
->with('attributes/type/l11n')
->with('files')
->with('files/types')
->where('id', (int) $request->getData('id'))
->where('attributes/type/l11n/language', $response->header->l11n->language)
->execute();
$view->data['driver'] = $driver;
$query = new Builder($this->app->dbPool->get());
$results = $query->selectAs(DriverMapper::HAS_MANY['files']['external'], 'file')
->from(DriverMapper::TABLE)
->leftJoin(DriverMapper::HAS_MANY['files']['table'])
->on(DriverMapper::HAS_MANY['files']['table'] . '.' . DriverMapper::HAS_MANY['files']['self'], '=', DriverMapper::TABLE . '.' . DriverMapper::PRIMARYFIELD)
->leftJoin(MediaMapper::TABLE)
->on(DriverMapper::HAS_MANY['files']['table'] . '.' . DriverMapper::HAS_MANY['files']['external'], '=', MediaMapper::TABLE . '.' . MediaMapper::PRIMARYFIELD)
->leftJoin(MediaMapper::HAS_MANY['types']['table'])
->on(MediaMapper::TABLE . '.' . MediaMapper::PRIMARYFIELD, '=', MediaMapper::HAS_MANY['types']['table'] . '.' . MediaMapper::HAS_MANY['types']['self'])
->leftJoin(MediaTypeMapper::TABLE)
->on(MediaMapper::HAS_MANY['types']['table'] . '.' . MediaMapper::HAS_MANY['types']['external'], '=', MediaTypeMapper::TABLE . '.' . MediaTypeMapper::PRIMARYFIELD)
->where(DriverMapper::HAS_MANY['files']['self'], '=', $driver->id)
->where(MediaTypeMapper::TABLE . '.' . MediaTypeMapper::getColumnByMember('name'), '=', 'driver_profile_image');
$driverImage = MediaMapper::get()
->with('types')
->where('id', $results)
->limit(1)
->execute();
$view->data['driverImage'] = $driverImage;
/** @var \Model\Setting $settings */
$settings = $this->app->appSettings->get(null, [
SettingsEnum::DEFAULT_LOCALIZATION,
]);
$view->data['attributeView'] = new \Modules\Attribute\Theme\Backend\Components\AttributeView($this->app->l11nManager, $request, $response);
$view->data['attributeView']->data['defaultlocalization'] = LocalizationMapper::get()->where('id', (int) $settings->id)->execute();
$view->data['media-upload'] = new \Modules\Media\Theme\Backend\Components\Upload\BaseView($this->app->l11nManager, $request, $response);
$view->data['driver-notes'] = new \Modules\Editor\Theme\Backend\Components\Compound\BaseView($this->app->l11nManager, $request, $response);
$view->data['equipment-notes'] = new \Modules\Editor\Theme\Backend\Components\Compound\BaseView($this->app->l11nManager, $request, $response);
return $view;
}

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement
* @package Modules\EquipmentManagement
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
@ -12,14 +12,14 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Controller;
namespace Modules\EquipmentManagement\Controller;
use phpOMS\Module\ModuleAbstract;
/**
* FleetManagement class.
* EquipmentManagement class.
*
* @package Modules\FleetManagement
* @package Modules\EquipmentManagement
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
@ -48,7 +48,7 @@ class Controller extends ModuleAbstract
* @var string
* @since 1.0.0
*/
public const NAME = 'FleetManagement';
public const NAME = 'EquipmentManagement';
/**
* Module id.
@ -56,7 +56,7 @@ class Controller extends ModuleAbstract
* @var int
* @since 1.0.0
*/
public const ID = 1003500000;
public const ID = 1008400000;
/**
* Providing.

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @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\EquipmentManagement\Models;
/**
* class.

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @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\EquipmentManagement\Models;
/**
* class.

View File

@ -1,79 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models\Driver
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models\Driver;
use Modules\Admin\Models\Account;
/**
* Driver class.
*
* @package Modules\FleetManagement\Models\Driver
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
class Driver
{
/**
* ID value.
*
* @var int
* @since 1.0.0
*/
public int $id = 0;
/**
* Status value.
*
* @var int
* @since 1.0.0
*/
public int $status = DriverStatus::ACTIVE;
/**
* Account associated with the client.
*
* @var Account
* @since 1.0.0
*/
public Account $account;
public array $licenses = [];
public array $inspections = [];
/**
* {@inheritdoc}
*/
public function toArray() : array
{
return [
'id' => $this->id,
'status' => $this->status,
];
}
/**
* {@inheritdoc}
*/
public function jsonSerialize() : mixed
{
return $this->toArray();
}
use \Modules\Media\Models\MediaListTrait;
use \Modules\Editor\Models\EditorDocListTrait;
use \Modules\Attribute\Models\AttributeHolderTrait;
}

View File

@ -1,86 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models\Driver
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models\Driver;
use Modules\Attribute\Models\Attribute;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/**
* Fleet mapper class.
*
* @package Modules\FleetManagement\Models\Driver
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*
* @template T of Attribute
* @extends DataMapperFactory<T>
*/
final class DriverAttributeMapper extends DataMapperFactory
{
/**
* Columns.
*
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_driver_attr_id' => ['name' => 'fleetmgmt_driver_attr_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_driver_attr_driver' => ['name' => 'fleetmgmt_driver_attr_driver', 'type' => 'int', 'internal' => 'ref'],
'fleetmgmt_driver_attr_type' => ['name' => 'fleetmgmt_driver_attr_type', 'type' => 'int', 'internal' => 'type'],
'fleetmgmt_driver_attr_value' => ['name' => 'fleetmgmt_driver_attr_value', 'type' => 'int', 'internal' => 'value'],
];
/**
* Has one relation.
*
* @var array<string, array{mapper:class-string, external:string, by?:string, column?:string, conditional?:bool}>
* @since 1.0.0
*/
public const OWNS_ONE = [
'type' => [
'mapper' => DriverAttributeTypeMapper::class,
'external' => 'fleetmgmt_driver_attr_type',
],
'value' => [
'mapper' => DriverAttributeValueMapper::class,
'external' => 'fleetmgmt_driver_attr_value',
],
];
/**
* Model to use by the mapper.
*
* @var class-string<T>
* @since 1.0.0
*/
public const MODEL = Attribute::class;
/**
* Primary table.
*
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_driver_attr';
/**
* Primary field name.
*
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_driver_attr_id';
}

View File

@ -1,69 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models\Driver
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models\Driver;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\Localization\BaseStringL11n;
/**
* Driver mapper class.
*
* @package Modules\FleetManagement\Models\Driver
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*
* @template T of BaseStringL11n
* @extends DataMapperFactory<T>
*/
final class DriverAttributeTypeL11nMapper extends DataMapperFactory
{
/**
* Columns.
*
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_driver_attr_type_l11n_id' => ['name' => 'fleetmgmt_driver_attr_type_l11n_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_driver_attr_type_l11n_title' => ['name' => 'fleetmgmt_driver_attr_type_l11n_title', 'type' => 'string', 'internal' => 'content', 'autocomplete' => true],
'fleetmgmt_driver_attr_type_l11n_type' => ['name' => 'fleetmgmt_driver_attr_type_l11n_type', 'type' => 'int', 'internal' => 'ref'],
'fleetmgmt_driver_attr_type_l11n_lang' => ['name' => 'fleetmgmt_driver_attr_type_l11n_lang', 'type' => 'string', 'internal' => 'language'],
];
/**
* Primary table.
*
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_driver_attr_type_l11n';
/**
* Primary field name.
*
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_driver_attr_type_l11n_id';
/**
* Model to use by the mapper.
*
* @var class-string<T>
* @since 1.0.0
*/
public const MODEL = BaseStringL11n::class;
}

View File

@ -1,94 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models\Driver
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models\Driver;
use Modules\Attribute\Models\AttributeType;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/**
* Driver mapper class.
*
* @package Modules\FleetManagement\Models\Driver
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*
* @template T of AttributeType
* @extends DataMapperFactory<T>
*/
final class DriverAttributeTypeMapper extends DataMapperFactory
{
/**
* Columns.
*
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_driver_attr_type_id' => ['name' => 'fleetmgmt_driver_attr_type_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_driver_attr_type_name' => ['name' => 'fleetmgmt_driver_attr_type_name', 'type' => 'string', 'internal' => 'name', 'autocomplete' => true],
'fleetmgmt_driver_attr_type_datatype' => ['name' => 'fleetmgmt_driver_attr_type_datatype', 'type' => 'int', 'internal' => 'datatype'],
'fleetmgmt_driver_attr_type_fields' => ['name' => 'fleetmgmt_driver_attr_type_fields', 'type' => 'int', 'internal' => 'fields'],
'fleetmgmt_driver_attr_type_custom' => ['name' => 'fleetmgmt_driver_attr_type_custom', 'type' => 'bool', 'internal' => 'custom'],
'fleetmgmt_driver_attr_type_pattern' => ['name' => 'fleetmgmt_driver_attr_type_pattern', 'type' => 'string', 'internal' => 'validationPattern'],
'fleetmgmt_driver_attr_type_required' => ['name' => 'fleetmgmt_driver_attr_type_required', 'type' => 'bool', 'internal' => 'isRequired'],
];
/**
* Has many relation.
*
* @var array<string, array{mapper:class-string, table:string, self?:?string, external?:?string, column?:string}>
* @since 1.0.0
*/
public const HAS_MANY = [
'l11n' => [
'mapper' => DriverAttributeTypeL11nMapper::class,
'table' => 'fleetmgmt_driver_attr_type_l11n',
'self' => 'fleetmgmt_driver_attr_type_l11n_type',
'column' => 'content',
'external' => null,
],
'defaults' => [
'mapper' => DriverAttributeValueMapper::class,
'table' => 'fleetmgmt_driver_attr_default',
'self' => 'fleetmgmt_driver_attr_default_type',
'external' => 'fleetmgmt_driver_attr_default_value',
],
];
/**
* Model to use by the mapper.
*
* @var class-string<T>
* @since 1.0.0
*/
public const MODEL = AttributeType::class;
/**
* Primary table.
*
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_driver_attr_type';
/**
* Primary field name.
*
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_driver_attr_type_id';
}

View File

@ -1,69 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models\Driver
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models\Driver;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\Localization\BaseStringL11n;
/**
* Driver mapper class.
*
* @package Modules\FleetManagement\Models\Driver
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*
* @template T of BaseStringL11n
* @extends DataMapperFactory<T>
*/
final class DriverAttributeValueL11nMapper extends DataMapperFactory
{
/**
* Columns.
*
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_driver_attr_value_l11n_id' => ['name' => 'fleetmgmt_driver_attr_value_l11n_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_driver_attr_value_l11n_title' => ['name' => 'fleetmgmt_driver_attr_value_l11n_title', 'type' => 'string', 'internal' => 'content', 'autocomplete' => true],
'fleetmgmt_driver_attr_value_l11n_value' => ['name' => 'fleetmgmt_driver_attr_value_l11n_value', 'type' => 'int', 'internal' => 'ref'],
'fleetmgmt_driver_attr_value_l11n_lang' => ['name' => 'fleetmgmt_driver_attr_value_l11n_lang', 'type' => 'string', 'internal' => 'language'],
];
/**
* Primary table.
*
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_driver_attr_value_l11n';
/**
* Primary field name.
*
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_driver_attr_value_l11n_id';
/**
* Model to use by the mapper.
*
* @var class-string<T>
* @since 1.0.0
*/
public const MODEL = BaseStringL11n::class;
}

View File

@ -1,89 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models\Driver
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models\Driver;
use Modules\Attribute\Models\AttributeValue;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/**
* Driver mapper class.
*
* @package Modules\FleetManagement\Models\Driver
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*
* @template T of AttributeValue
* @extends DataMapperFactory<T>
*/
final class DriverAttributeValueMapper extends DataMapperFactory
{
/**
* Columns.
*
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_driver_attr_value_id' => ['name' => 'fleetmgmt_driver_attr_value_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_driver_attr_value_default' => ['name' => 'fleetmgmt_driver_attr_value_default', 'type' => 'bool', 'internal' => 'isDefault'],
'fleetmgmt_driver_attr_value_valueStr' => ['name' => 'fleetmgmt_driver_attr_value_valueStr', 'type' => 'string', 'internal' => 'valueStr'],
'fleetmgmt_driver_attr_value_valueInt' => ['name' => 'fleetmgmt_driver_attr_value_valueInt', 'type' => 'int', 'internal' => 'valueInt'],
'fleetmgmt_driver_attr_value_valueDec' => ['name' => 'fleetmgmt_driver_attr_value_valueDec', 'type' => 'float', 'internal' => 'valueDec'],
'fleetmgmt_driver_attr_value_valueDat' => ['name' => 'fleetmgmt_driver_attr_value_valueDat', 'type' => 'DateTime', 'internal' => 'valueDat'],
'fleetmgmt_driver_attr_value_unit' => ['name' => 'fleetmgmt_driver_attr_value_unit', 'type' => 'string', 'internal' => 'unit'],
'fleetmgmt_driver_attr_value_deptype' => ['name' => 'fleetmgmt_driver_attr_value_deptype', 'type' => 'int', 'internal' => 'dependingAttributeType'],
'fleetmgmt_driver_attr_value_depvalue' => ['name' => 'fleetmgmt_driver_attr_value_depvalue', 'type' => 'int', 'internal' => 'dependingAttributeValue'],
];
/**
* Has many relation.
*
* @var array<string, array{mapper:class-string, table:string, self?:?string, external?:?string, column?:string}>
* @since 1.0.0
*/
public const HAS_MANY = [
'l11n' => [
'mapper' => DriverAttributeValueL11nMapper::class,
'table' => 'fleetmgmt_driver_attr_value_l11n',
'self' => 'fleetmgmt_driver_attr_value_l11n_value',
'external' => null,
],
];
/**
* Model to use by the mapper.
*
* @var class-string<T>
* @since 1.0.0
*/
public const MODEL = AttributeValue::class;
/**
* Primary table.
*
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_driver_attr_value';
/**
* Primary field name.
*
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_driver_attr_value_id';
}

View File

@ -1,78 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models\Driver
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models\Driver;
use phpOMS\Localization\BaseStringL11nType;
/**
* Inspection class.
*
* @package Modules\FleetManagement\Models\Driver
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
class DriverInspection implements \JsonSerializable
{
public int $id = 0;
public string $description = '';
public BaseStringL11nType $type;
public int $status = DriverInspectionStatus::TODO;
// Automatically get's filled from the previous inspection if available
// Alternatively define default interval from inspection type?
public ?\DateTime $next = null;
/**
* Inspectio interval in months
*
* @var int
* @since 1.0.0
*/
public int $interval = 0;
/**
* Constructor.
*
* @since 1.0.0
*/
public function __construct()
{
$this->type = new BaseStringL11nType();
}
/**
* {@inheritdoc}
*/
public function toArray() : array
{
return [
'id' => $this->id,
];
}
/**
* {@inheritdoc}
*/
public function jsonSerialize() : mixed
{
return $this->toArray();
}
use \Modules\Media\Models\MediaListTrait;
}

View File

@ -1,84 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models\Driver
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models\Driver;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\Localization\BaseStringL11n;
/**
* mapper class.
*
* @package Modules\FleetManagement\Models\Driver
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*
* @template T of DriverInspection
* @extends DataMapperFactory<T>
*/
final class DriverInspectionMapper extends DataMapperFactory
{
/**
* Columns.
*
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_driver_inspection_id' => ['name' => 'fleetmgmt_driver_inspection_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_driver_inspection_description' => ['name' => 'fleetmgmt_driver_inspection_description', 'type' => 'string', 'internal' => 'description'],
'fleetmgmt_driver_inspection_status' => ['name' => 'fleetmgmt_driver_inspection_status', 'type' => 'int', 'internal' => 'status'],
'fleetmgmt_driver_inspection_interval' => ['name' => 'fleetmgmt_driver_inspection_interval', 'type' => 'int', 'internal' => 'interval'],
'fleetmgmt_driver_inspection_next' => ['name' => 'fleetmgmt_driver_inspection_next', 'type' => 'DateTime', 'internal' => 'next'],
'fleetmgmt_driver_inspection_type' => ['name' => 'fleetmgmt_driver_inspection_type', 'type' => 'int', 'internal' => 'type'],
];
/**
* Has one relation.
*
* @var array<string, array{mapper:class-string, external:string, by?:string, column?:string, conditional?:bool}>
* @since 1.0.0
*/
public const OWNS_ONE = [
'type' => [
'mapper' => DriverInspectionTypeMapper::class,
'external' => 'fleetmgmt_driver_inspection_type',
],
];
/**
* Primary table.
*
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_driver_inspection';
/**
* Primary field name.
*
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_driver_inspection_id';
/**
* Model to use by the mapper.
*
* @var class-string<T>
* @since 1.0.0
*/
public const MODEL = DriverInspection::class;
}

View File

@ -1,36 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models\Driver
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models\Driver;
use phpOMS\Stdlib\Base\Enum;
/**
* Inspection status enum.
*
* @package Modules\FleetManagement\Models\Driver
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
abstract class DriverInspectionStatus extends Enum
{
public const DONE = 1;
public const PASSED = 2;
public const ONGOING = 4;
public const TODO = 5;
}

View File

@ -1,69 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models\Driver
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models\Driver;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\Localization\BaseStringL11n;
/**
* mapper class.
*
* @package Modules\FleetManagement\Models\Driver
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*
* @template T of BaseStringL11n
* @extends DataMapperFactory<T>
*/
final class DriverInspectionTypeL11nMapper extends DataMapperFactory
{
/**
* Columns.
*
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_driver_inspection_type_l11n_id' => ['name' => 'fleetmgmt_driver_inspection_type_l11n_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_driver_inspection_type_l11n_title' => ['name' => 'fleetmgmt_driver_inspection_type_l11n_title', 'type' => 'string', 'internal' => 'content', 'autocomplete' => true],
'fleetmgmt_driver_inspection_type_l11n_type' => ['name' => 'fleetmgmt_driver_inspection_type_l11n_type', 'type' => 'int', 'internal' => 'ref'],
'fleetmgmt_driver_inspection_type_l11n_lang' => ['name' => 'fleetmgmt_driver_inspection_type_l11n_lang', 'type' => 'string', 'internal' => 'language'],
];
/**
* Primary table.
*
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_driver_inspection_type_l11n';
/**
* Primary field name.
*
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_driver_inspection_type_l11n_id';
/**
* Model to use by the mapper.
*
* @var class-string<T>
* @since 1.0.0
*/
public const MODEL = BaseStringL11n::class;
}

View File

@ -1,83 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models\Driver
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models\Driver;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\Localization\BaseStringL11nType;
/**
* Item mapper class.
*
* @package Modules\FleetManagement\Models\Driver
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*
* @template T of BaseStringL11nType
* @extends DataMapperFactory<T>
*/
final class DriverInspectionTypeMapper extends DataMapperFactory
{
/**
* Columns.
*
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_driver_inspection_type_id' => ['name' => 'fleetmgmt_driver_inspection_type_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_driver_inspection_type_name' => ['name' => 'fleetmgmt_driver_inspection_type_name', 'type' => 'string', 'internal' => 'title', 'autocomplete' => true],
];
/**
* Has many relation.
*
* @var array<string, array{mapper:class-string, table:string, self?:?string, external?:?string, column?:string}>
* @since 1.0.0
*/
public const HAS_MANY = [
'l11n' => [
'mapper' => DriverInspectionTypeL11nMapper::class,
'table' => 'fleetmgmt_driver_inspection_type_l11n',
'self' => 'fleetmgmt_driver_inspection_type_l11n_type',
'column' => 'content',
'external' => null,
],
];
/**
* Model to use by the mapper.
*
* @var class-string<T>
* @since 1.0.0
*/
public const MODEL = BaseStringL11nType::class;
/**
* Primary table.
*
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_driver_inspection_type';
/**
* Primary field name.
*
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_driver_inspection_type_id';
}

View File

@ -1,102 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models\Driver
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models\Driver;
use Modules\Admin\Models\AccountMapper;
use Modules\Media\Models\MediaMapper;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use Modules\Editor\Models\EditorDocMapper;
/**
* Mapper class.
*
* @package Modules\FleetManagement\Models\Driver
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*
* @template T of Driver
* @extends DataMapperFactory<T>
*/
final class DriverMapper extends DataMapperFactory
{
/**
* Columns.
*
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_driver_id' => ['name' => 'fleetmgmt_driver_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_driver_status' => ['name' => 'fleetmgmt_driver_status', 'type' => 'int', 'internal' => 'status'],
'fleetmgmt_driver_account' => ['name' => 'fleetmgmt_driver_account', 'type' => 'int', 'internal' => 'account'],
];
/**
* Has many relation.
*
* @var array<string, array{mapper:class-string, table:string, self?:?string, external?:?string, column?:string}>
* @since 1.0.0
*/
public const HAS_MANY = [
'files' => [
'mapper' => MediaMapper::class,
'table' => 'fleetmgmt_driver_media',
'external' => 'fleetmgmt_driver_media_media',
'self' => 'fleetmgmt_driver_media_vehicle',
],
'attributes' => [
'mapper' => DriverAttributeMapper::class,
'table' => 'fleetmgmt_driver_attr',
'self' => 'fleetmgmt_driver_attr_driver',
'external' => null,
],
'notes' => [
'mapper' => EditorDocMapper::class, /* mapper of the related object */
'table' => 'fleetmgmt_driver_note', /* table of the related object, null if no relation table is used (many->1) */
'external' => 'fleetmgmt_driver_note_doc',
'self' => 'fleetmgmt_driver_note_driver',
],
];
/**
* Has one relation.
*
* @var array<string, array{mapper:class-string, external:string, by?:string, column?:string, conditional?:bool}>
* @since 1.0.0
*/
public const OWNS_ONE = [
'account' => [
'mapper' => AccountMapper::class,
'external' => 'fleetmgmt_driver_account',
],
];
/**
* Primary table.
*
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_driver';
/**
* Primary field name.
*
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_driver_id';
}

View File

@ -1,34 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models\Driver
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models\Driver;
use phpOMS\Stdlib\Base\Enum;
/**
* Driver status enum.
*
* @package Modules\FleetManagement\Models\Driver
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
abstract class DriverStatus extends Enum
{
public const ACTIVE = 1;
public const INACTIVE = 2;
public const SUSPENDED = 3;
}

View File

@ -1,46 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models\Driver
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models\Driver;
/**
* Null model
*
* @package Modules\FleetManagement\Models\Driver
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
final class NullDriver extends Driver
{
/**
* Constructor
*
* @param int $id Model id
*
* @since 1.0.0
*/
public function __construct(int $id = 0)
{
$this->id = $id;
}
/**
* {@inheritdoc}
*/
public function jsonSerialize() : mixed
{
return ['id' => $this->id];
}
}

View File

@ -1,46 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models\Driver
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models\Driver;
/**
* Null model
*
* @package Modules\FleetManagement\Models\Driver
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
final class NullDriverInspection extends DriverInspection
{
/**
* Constructor
*
* @param int $id Model id
*
* @since 1.0.0
*/
public function __construct(int $id = 0)
{
$this->id = $id;
}
/**
* {@inheritdoc}
*/
public function jsonSerialize() : mixed
{
return ['id' => $this->id];
}
}

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
@ -12,30 +12,28 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models;
namespace Modules\EquipmentManagement\Models;
use phpOMS\Localization\BaseStringL11nType;
/**
* Vehicle class.
* Equipment class.
*
* @package Modules\Attribute\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
class Vehicle implements \JsonSerializable
class Equipment implements \JsonSerializable
{
public int $id = 0;
public string $name = '';
public int $status = VehicleStatus::ACTIVE;
public int $status = EquipmentStatus::ACTIVE;
public BaseStringL11nType $type;
public BaseStringL11nType $fuelType;
public string $info = '';
public array $drivers = [];
@ -59,7 +57,6 @@ class Vehicle implements \JsonSerializable
{
$this->createdAt = new \DateTimeImmutable('now');
$this->type = new BaseStringL11nType();
$this->fuelType = new BaseStringL11nType();
}
/**

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @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\EquipmentManagement\Models;
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\EquipmentManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
@ -28,7 +28,7 @@ use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
* @template T of Attribute
* @extends DataMapperFactory<T>
*/
final class VehicleAttributeMapper extends DataMapperFactory
final class EquipmentAttributeMapper extends DataMapperFactory
{
/**
* Columns.
@ -37,10 +37,10 @@ final class VehicleAttributeMapper extends DataMapperFactory
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_vehicle_attr_id' => ['name' => 'fleetmgmt_vehicle_attr_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_vehicle_attr_vehicle' => ['name' => 'fleetmgmt_vehicle_attr_vehicle', 'type' => 'int', 'internal' => 'ref'],
'fleetmgmt_vehicle_attr_type' => ['name' => 'fleetmgmt_vehicle_attr_type', 'type' => 'int', 'internal' => 'type'],
'fleetmgmt_vehicle_attr_value' => ['name' => 'fleetmgmt_vehicle_attr_value', 'type' => 'int', 'internal' => 'value'],
'equipmgmt_equipment_attr_id' => ['name' => 'equipmgmt_equipment_attr_id', 'type' => 'int', 'internal' => 'id'],
'equipmgmt_equipment_attr_equipment' => ['name' => 'equipmgmt_equipment_attr_equipment', 'type' => 'int', 'internal' => 'ref'],
'equipmgmt_equipment_attr_type' => ['name' => 'equipmgmt_equipment_attr_type', 'type' => 'int', 'internal' => 'type'],
'equipmgmt_equipment_attr_value' => ['name' => 'equipmgmt_equipment_attr_value', 'type' => 'int', 'internal' => 'value'],
];
/**
@ -51,12 +51,12 @@ final class VehicleAttributeMapper extends DataMapperFactory
*/
public const OWNS_ONE = [
'type' => [
'mapper' => VehicleAttributeTypeMapper::class,
'external' => 'fleetmgmt_vehicle_attr_type',
'mapper' => EquipmentAttributeTypeMapper::class,
'external' => 'equipmgmt_equipment_attr_type',
],
'value' => [
'mapper' => VehicleAttributeValueMapper::class,
'external' => 'fleetmgmt_vehicle_attr_value',
'mapper' => EquipmentAttributeValueMapper::class,
'external' => 'equipmgmt_equipment_attr_value',
],
];
@ -74,7 +74,7 @@ final class VehicleAttributeMapper extends DataMapperFactory
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_vehicle_attr';
public const TABLE = 'equipmgmt_equipment_attr';
/**
* Primary field name.
@ -82,5 +82,5 @@ final class VehicleAttributeMapper extends DataMapperFactory
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_vehicle_attr_id';
public const PRIMARYFIELD = 'equipmgmt_equipment_attr_id';
}

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
@ -12,15 +12,15 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models;
namespace Modules\EquipmentManagement\Models;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\Localization\BaseStringL11n;
/**
* Vehicle mapper class.
* Equipment mapper class.
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
@ -28,7 +28,7 @@ use phpOMS\Localization\BaseStringL11n;
* @template T of BaseStringL11n
* @extends DataMapperFactory<T>
*/
final class VehicleAttributeTypeL11nMapper extends DataMapperFactory
final class EquipmentAttributeTypeL11nMapper extends DataMapperFactory
{
/**
* Columns.
@ -37,10 +37,10 @@ final class VehicleAttributeTypeL11nMapper extends DataMapperFactory
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_attr_type_l11n_id' => ['name' => 'fleetmgmt_attr_type_l11n_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_attr_type_l11n_title' => ['name' => 'fleetmgmt_attr_type_l11n_title', 'type' => 'string', 'internal' => 'content', 'autocomplete' => true],
'fleetmgmt_attr_type_l11n_type' => ['name' => 'fleetmgmt_attr_type_l11n_type', 'type' => 'int', 'internal' => 'ref'],
'fleetmgmt_attr_type_l11n_lang' => ['name' => 'fleetmgmt_attr_type_l11n_lang', 'type' => 'string', 'internal' => 'language'],
'equipmgmt_attr_type_l11n_id' => ['name' => 'equipmgmt_attr_type_l11n_id', 'type' => 'int', 'internal' => 'id'],
'equipmgmt_attr_type_l11n_title' => ['name' => 'equipmgmt_attr_type_l11n_title', 'type' => 'string', 'internal' => 'content', 'autocomplete' => true],
'equipmgmt_attr_type_l11n_type' => ['name' => 'equipmgmt_attr_type_l11n_type', 'type' => 'int', 'internal' => 'ref'],
'equipmgmt_attr_type_l11n_lang' => ['name' => 'equipmgmt_attr_type_l11n_lang', 'type' => 'string', 'internal' => 'language'],
];
/**
@ -49,7 +49,7 @@ final class VehicleAttributeTypeL11nMapper extends DataMapperFactory
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_attr_type_l11n';
public const TABLE = 'equipmgmt_attr_type_l11n';
/**
* Primary field name.
@ -57,7 +57,7 @@ final class VehicleAttributeTypeL11nMapper extends DataMapperFactory
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_attr_type_l11n_id';
public const PRIMARYFIELD = 'equipmgmt_attr_type_l11n_id';
/**
* Model to use by the mapper.

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
@ -12,15 +12,15 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models;
namespace Modules\EquipmentManagement\Models;
use Modules\Attribute\Models\AttributeType;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/**
* Vehicle mapper class.
* Equipment mapper class.
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
@ -28,7 +28,7 @@ use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
* @template T of AttributeType
* @extends DataMapperFactory<T>
*/
final class VehicleAttributeTypeMapper extends DataMapperFactory
final class EquipmentAttributeTypeMapper extends DataMapperFactory
{
/**
* Columns.
@ -37,13 +37,13 @@ final class VehicleAttributeTypeMapper extends DataMapperFactory
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_attr_type_id' => ['name' => 'fleetmgmt_attr_type_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_attr_type_name' => ['name' => 'fleetmgmt_attr_type_name', 'type' => 'string', 'internal' => 'name', 'autocomplete' => true],
'fleetmgmt_attr_type_datatype' => ['name' => 'fleetmgmt_attr_type_datatype', 'type' => 'int', 'internal' => 'datatype'],
'fleetmgmt_attr_type_fields' => ['name' => 'fleetmgmt_attr_type_fields', 'type' => 'int', 'internal' => 'fields'],
'fleetmgmt_attr_type_custom' => ['name' => 'fleetmgmt_attr_type_custom', 'type' => 'bool', 'internal' => 'custom'],
'fleetmgmt_attr_type_pattern' => ['name' => 'fleetmgmt_attr_type_pattern', 'type' => 'string', 'internal' => 'validationPattern'],
'fleetmgmt_attr_type_required' => ['name' => 'fleetmgmt_attr_type_required', 'type' => 'bool', 'internal' => 'isRequired'],
'equipmgmt_attr_type_id' => ['name' => 'equipmgmt_attr_type_id', 'type' => 'int', 'internal' => 'id'],
'equipmgmt_attr_type_name' => ['name' => 'equipmgmt_attr_type_name', 'type' => 'string', 'internal' => 'name', 'autocomplete' => true],
'equipmgmt_attr_type_datatype' => ['name' => 'equipmgmt_attr_type_datatype', 'type' => 'int', 'internal' => 'datatype'],
'equipmgmt_attr_type_fields' => ['name' => 'equipmgmt_attr_type_fields', 'type' => 'int', 'internal' => 'fields'],
'equipmgmt_attr_type_custom' => ['name' => 'equipmgmt_attr_type_custom', 'type' => 'bool', 'internal' => 'custom'],
'equipmgmt_attr_type_pattern' => ['name' => 'equipmgmt_attr_type_pattern', 'type' => 'string', 'internal' => 'validationPattern'],
'equipmgmt_attr_type_required' => ['name' => 'equipmgmt_attr_type_required', 'type' => 'bool', 'internal' => 'isRequired'],
];
/**
@ -54,17 +54,17 @@ final class VehicleAttributeTypeMapper extends DataMapperFactory
*/
public const HAS_MANY = [
'l11n' => [
'mapper' => VehicleAttributeTypeL11nMapper::class,
'table' => 'fleetmgmt_attr_type_l11n',
'self' => 'fleetmgmt_attr_type_l11n_type',
'mapper' => EquipmentAttributeTypeL11nMapper::class,
'table' => 'equipmgmt_attr_type_l11n',
'self' => 'equipmgmt_attr_type_l11n_type',
'column' => 'content',
'external' => null,
],
'defaults' => [
'mapper' => VehicleAttributeValueMapper::class,
'table' => 'fleetmgmt_vehicle_attr_default',
'self' => 'fleetmgmt_vehicle_attr_default_type',
'external' => 'fleetmgmt_vehicle_attr_default_value',
'mapper' => EquipmentAttributeValueMapper::class,
'table' => 'equipmgmt_equipment_attr_default',
'self' => 'equipmgmt_equipment_attr_default_type',
'external' => 'equipmgmt_equipment_attr_default_value',
],
];
@ -82,7 +82,7 @@ final class VehicleAttributeTypeMapper extends DataMapperFactory
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_attr_type';
public const TABLE = 'equipmgmt_attr_type';
/**
* Primary field name.
@ -90,5 +90,5 @@ final class VehicleAttributeTypeMapper extends DataMapperFactory
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_attr_type_id';
public const PRIMARYFIELD = 'equipmgmt_attr_type_id';
}

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
@ -12,15 +12,15 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models;
namespace Modules\EquipmentManagement\Models;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\Localization\BaseStringL11n;
/**
* Vehicle mapper class.
* Equipment mapper class.
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
@ -28,7 +28,7 @@ use phpOMS\Localization\BaseStringL11n;
* @template T of BaseStringL11n
* @extends DataMapperFactory<T>
*/
final class VehicleAttributeValueL11nMapper extends DataMapperFactory
final class EquipmentAttributeValueL11nMapper extends DataMapperFactory
{
/**
* Columns.
@ -37,10 +37,10 @@ final class VehicleAttributeValueL11nMapper extends DataMapperFactory
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_attr_value_l11n_id' => ['name' => 'fleetmgmt_attr_value_l11n_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_attr_value_l11n_title' => ['name' => 'fleetmgmt_attr_value_l11n_title', 'type' => 'string', 'internal' => 'content', 'autocomplete' => true],
'fleetmgmt_attr_value_l11n_value' => ['name' => 'fleetmgmt_attr_value_l11n_value', 'type' => 'int', 'internal' => 'ref'],
'fleetmgmt_attr_value_l11n_lang' => ['name' => 'fleetmgmt_attr_value_l11n_lang', 'type' => 'string', 'internal' => 'language'],
'equipmgmt_attr_value_l11n_id' => ['name' => 'equipmgmt_attr_value_l11n_id', 'type' => 'int', 'internal' => 'id'],
'equipmgmt_attr_value_l11n_title' => ['name' => 'equipmgmt_attr_value_l11n_title', 'type' => 'string', 'internal' => 'content', 'autocomplete' => true],
'equipmgmt_attr_value_l11n_value' => ['name' => 'equipmgmt_attr_value_l11n_value', 'type' => 'int', 'internal' => 'ref'],
'equipmgmt_attr_value_l11n_lang' => ['name' => 'equipmgmt_attr_value_l11n_lang', 'type' => 'string', 'internal' => 'language'],
];
/**
@ -49,7 +49,7 @@ final class VehicleAttributeValueL11nMapper extends DataMapperFactory
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_attr_value_l11n';
public const TABLE = 'equipmgmt_attr_value_l11n';
/**
* Primary field name.
@ -57,7 +57,7 @@ final class VehicleAttributeValueL11nMapper extends DataMapperFactory
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_attr_value_l11n_id';
public const PRIMARYFIELD = 'equipmgmt_attr_value_l11n_id';
/**
* Model to use by the mapper.

View File

@ -0,0 +1,89 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\EquipmentManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\EquipmentManagement\Models;
use Modules\Attribute\Models\AttributeValue;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/**
* Equipment mapper class.
*
* @package Modules\EquipmentManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*
* @template T of AttributeValue
* @extends DataMapperFactory<T>
*/
final class EquipmentAttributeValueMapper extends DataMapperFactory
{
/**
* Columns.
*
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0
*/
public const COLUMNS = [
'equipmgmt_attr_value_id' => ['name' => 'equipmgmt_attr_value_id', 'type' => 'int', 'internal' => 'id'],
'equipmgmt_attr_value_default' => ['name' => 'equipmgmt_attr_value_default', 'type' => 'bool', 'internal' => 'isDefault'],
'equipmgmt_attr_value_valueStr' => ['name' => 'equipmgmt_attr_value_valueStr', 'type' => 'string', 'internal' => 'valueStr'],
'equipmgmt_attr_value_valueInt' => ['name' => 'equipmgmt_attr_value_valueInt', 'type' => 'int', 'internal' => 'valueInt'],
'equipmgmt_attr_value_valueDec' => ['name' => 'equipmgmt_attr_value_valueDec', 'type' => 'float', 'internal' => 'valueDec'],
'equipmgmt_attr_value_valueDat' => ['name' => 'equipmgmt_attr_value_valueDat', 'type' => 'DateTime', 'internal' => 'valueDat'],
'equipmgmt_attr_value_unit' => ['name' => 'equipmgmt_attr_value_unit', 'type' => 'string', 'internal' => 'unit'],
'equipmgmt_attr_value_deptype' => ['name' => 'equipmgmt_attr_value_deptype', 'type' => 'int', 'internal' => 'dependingAttributeType'],
'equipmgmt_attr_value_depvalue' => ['name' => 'equipmgmt_attr_value_depvalue', 'type' => 'int', 'internal' => 'dependingAttributeValue'],
];
/**
* Has many relation.
*
* @var array<string, array{mapper:class-string, table:string, self?:?string, external?:?string, column?:string}>
* @since 1.0.0
*/
public const HAS_MANY = [
'l11n' => [
'mapper' => EquipmentAttributeValueL11nMapper::class,
'table' => 'equipmgmt_attr_value_l11n',
'self' => 'equipmgmt_attr_value_l11n_value',
'external' => null,
],
];
/**
* Model to use by the mapper.
*
* @var class-string<T>
* @since 1.0.0
*/
public const MODEL = AttributeValue::class;
/**
* Primary table.
*
* @var string
* @since 1.0.0
*/
public const TABLE = 'equipmgmt_attr_value';
/**
* Primary field name.
*
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'equipmgmt_attr_value_id';
}

114
Models/EquipmentMapper.php Normal file
View File

@ -0,0 +1,114 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\EquipmentManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\EquipmentManagement\Models;
use Modules\Media\Models\MediaMapper;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use Modules\Editor\Models\EditorDocMapper;
/**
* Mapper class.
*
* @package Modules\EquipmentManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*
* @template T of Equipment
* @extends DataMapperFactory<T>
*/
final class EquipmentMapper extends DataMapperFactory
{
/**
* Columns.
*
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0
*/
public const COLUMNS = [
'equipmgmt_equipment_id' => ['name' => 'equipmgmt_equipment_id', 'type' => 'int', 'internal' => 'id'],
'equipmgmt_equipment_name' => ['name' => 'equipmgmt_equipment_name', 'type' => 'string', 'internal' => 'name'],
'equipmgmt_equipment_status' => ['name' => 'equipmgmt_equipment_status', 'type' => 'int', 'internal' => 'status'],
'equipmgmt_equipment_info' => ['name' => 'equipmgmt_equipment_info', 'type' => 'string', 'internal' => 'info'],
'equipmgmt_equipment_unit' => ['name' => 'equipmgmt_equipment_unit', 'type' => 'int', 'internal' => 'unit'],
'equipmgmt_equipment_type' => ['name' => 'equipmgmt_equipment_type', 'type' => 'int', 'internal' => 'type'],
'equipmgmt_equipment_responsible' => ['name' => 'equipmgmt_equipment_responsible', 'type' => 'int', 'internal' => 'responsible'],
'equipmgmt_equipment_created_at' => ['name' => 'equipmgmt_equipment_created_at', 'type' => 'DateTimeImmutable', 'internal' => 'createdAt', 'readonly' => true],
];
/**
* Has many relation.
*
* @var array<string, array{mapper:class-string, table:string, self?:?string, external?:?string, column?:string}>
* @since 1.0.0
*/
public const HAS_MANY = [
'files' => [
'mapper' => MediaMapper::class,
'table' => 'equipmgmt_equipment_media',
'external' => 'equipmgmt_equipment_media_media',
'self' => 'equipmgmt_equipment_media_equipment',
],
'attributes' => [
'mapper' => EquipmentAttributeMapper::class,
'table' => 'equipmgmt_equipment_attr',
'self' => 'equipmgmt_equipment_attr_equipment',
'external' => null,
],
'notes' => [
'mapper' => EditorDocMapper::class, /* mapper of the related object */
'table' => 'equipmgmt_equipment_note', /* table of the related object, null if no relation table is used (many->1) */
'external' => 'equipmgmt_equipment_note_doc',
'self' => 'equipmgmt_equipment_note_equipment',
],
];
/**
* Has one relation.
*
* @var array<string, array{mapper:class-string, external:string, by?:string, column?:string, conditional?:bool}>
* @since 1.0.0
*/
public const OWNS_ONE = [
'type' => [
'mapper' => EquipmentTypeMapper::class,
'external' => 'equipmgmt_equipment_type',
],
];
/**
* Primary table.
*
* @var string
* @since 1.0.0
*/
public const TABLE = 'equipmgmt_equipment';
/**
* Created at.
*
* @var string
* @since 1.0.0
*/
public const CREATED_AT = 'equipmgmt_equipment_created_at';
/**
* Primary field name.
*
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'equipmgmt_equipment_id';
}

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
@ -12,19 +12,19 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models;
namespace Modules\EquipmentManagement\Models;
use phpOMS\Stdlib\Base\Enum;
/**
* Vehicle status enum.
* Equipment status enum.
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
abstract class VehicleStatus extends Enum
abstract class EquipmentStatus extends Enum
{
public const ACTIVE = 1;

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @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\EquipmentManagement\Models;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\Localization\BaseStringL11n;
@ -20,7 +20,7 @@ use phpOMS\Localization\BaseStringL11n;
/**
* mapper class.
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
@ -28,7 +28,7 @@ use phpOMS\Localization\BaseStringL11n;
* @template T of BaseStringL11n
* @extends DataMapperFactory<T>
*/
final class FuelTypeL11nMapper extends DataMapperFactory
final class EquipmentTypeL11nMapper extends DataMapperFactory
{
/**
* Columns.
@ -37,10 +37,10 @@ final class FuelTypeL11nMapper extends DataMapperFactory
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_fuel_type_l11n_id' => ['name' => 'fleetmgmt_fuel_type_l11n_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_fuel_type_l11n_title' => ['name' => 'fleetmgmt_fuel_type_l11n_title', 'type' => 'string', 'internal' => 'content', 'autocomplete' => true],
'fleetmgmt_fuel_type_l11n_type' => ['name' => 'fleetmgmt_fuel_type_l11n_type', 'type' => 'int', 'internal' => 'ref'],
'fleetmgmt_fuel_type_l11n_lang' => ['name' => 'fleetmgmt_fuel_type_l11n_lang', 'type' => 'string', 'internal' => 'language'],
'equipmgmt_equipment_type_l11n_id' => ['name' => 'equipmgmt_equipment_type_l11n_id', 'type' => 'int', 'internal' => 'id'],
'equipmgmt_equipment_type_l11n_title' => ['name' => 'equipmgmt_equipment_type_l11n_title', 'type' => 'string', 'internal' => 'content', 'autocomplete' => true],
'equipmgmt_equipment_type_l11n_type' => ['name' => 'equipmgmt_equipment_type_l11n_type', 'type' => 'int', 'internal' => 'ref'],
'equipmgmt_equipment_type_l11n_lang' => ['name' => 'equipmgmt_equipment_type_l11n_lang', 'type' => 'string', 'internal' => 'language'],
];
/**
@ -49,7 +49,7 @@ final class FuelTypeL11nMapper extends DataMapperFactory
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_fuel_type_l11n';
public const TABLE = 'equipmgmt_equipment_type_l11n';
/**
* Primary field name.
@ -57,7 +57,7 @@ final class FuelTypeL11nMapper extends DataMapperFactory
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_fuel_type_l11n_id';
public const PRIMARYFIELD = 'equipmgmt_equipment_type_l11n_id';
/**
* Model to use by the mapper.

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @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\EquipmentManagement\Models;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\Localization\BaseStringL11nType;
@ -20,7 +20,7 @@ use phpOMS\Localization\BaseStringL11nType;
/**
* Item mapper class.
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
@ -28,7 +28,7 @@ use phpOMS\Localization\BaseStringL11nType;
* @template T of BaseStringL11nType
* @extends DataMapperFactory<T>
*/
final class VehicleTypeMapper extends DataMapperFactory
final class EquipmentTypeMapper extends DataMapperFactory
{
/**
* Columns.
@ -37,8 +37,8 @@ final class VehicleTypeMapper extends DataMapperFactory
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_vehicle_type_id' => ['name' => 'fleetmgmt_vehicle_type_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_vehicle_type_name' => ['name' => 'fleetmgmt_vehicle_type_name', 'type' => 'string', 'internal' => 'title', 'autocomplete' => true],
'equipmgmt_equipment_type_id' => ['name' => 'equipmgmt_equipment_type_id', 'type' => 'int', 'internal' => 'id'],
'equipmgmt_equipment_type_name' => ['name' => 'equipmgmt_equipment_type_name', 'type' => 'string', 'internal' => 'title', 'autocomplete' => true],
];
@ -50,9 +50,9 @@ final class VehicleTypeMapper extends DataMapperFactory
*/
public const HAS_MANY = [
'l11n' => [
'mapper' => VehicleTypeL11nMapper::class,
'table' => 'fleetmgmt_vehicle_type_l11n',
'self' => 'fleetmgmt_vehicle_type_l11n_type',
'mapper' => EquipmentTypeL11nMapper::class,
'table' => 'equipmgmt_equipment_type_l11n',
'self' => 'equipmgmt_equipment_type_l11n_type',
'column' => 'content',
'external' => null,
],
@ -72,7 +72,7 @@ final class VehicleTypeMapper extends DataMapperFactory
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_vehicle_type';
public const TABLE = 'equipmgmt_equipment_type';
/**
* Primary field name.
@ -80,5 +80,5 @@ final class VehicleTypeMapper extends DataMapperFactory
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_vehicle_type_id';
public const PRIMARYFIELD = 'equipmgmt_equipment_type_id';
}

View File

@ -1,83 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\Localization\BaseStringL11nType;
/**
* Item mapper class.
*
* @package Modules\FleetManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*
* @template T of BaseStringL11nType
* @extends DataMapperFactory<T>
*/
final class FuelTypeMapper extends DataMapperFactory
{
/**
* Columns.
*
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_fuel_type_id' => ['name' => 'fleetmgmt_fuel_type_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_fuel_type_name' => ['name' => 'fleetmgmt_fuel_type_name', 'type' => 'string', 'internal' => 'title', 'autocomplete' => true],
];
/**
* Has many relation.
*
* @var array<string, array{mapper:class-string, table:string, self?:?string, external?:?string, column?:string}>
* @since 1.0.0
*/
public const HAS_MANY = [
'l11n' => [
'mapper' => FuelTypeL11nMapper::class,
'table' => 'fleetmgmt_fuel_type_l11n',
'self' => 'fleetmgmt_fuel_type_l11n_type',
'column' => 'content',
'external' => null,
],
];
/**
* Model to use by the mapper.
*
* @var class-string<T>
* @since 1.0.0
*/
public const MODEL = BaseStringL11nType::class;
/**
* Primary table.
*
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_fuel_type';
/**
* Primary field name.
*
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_fuel_type_id';
}

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @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\EquipmentManagement\Models;
use phpOMS\Localization\BaseStringL11nType;

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @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\EquipmentManagement\Models;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\Localization\BaseStringL11n;
@ -20,7 +20,7 @@ use phpOMS\Localization\BaseStringL11n;
/**
* mapper class.
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
@ -37,12 +37,12 @@ final class InspectionMapper extends DataMapperFactory
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_vehicle_inspection_id' => ['name' => 'fleetmgmt_vehicle_inspection_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_vehicle_inspection_description' => ['name' => 'fleetmgmt_vehicle_inspection_description', 'type' => 'string', 'internal' => 'description'],
'fleetmgmt_vehicle_inspection_status' => ['name' => 'fleetmgmt_vehicle_inspection_status', 'type' => 'int', 'internal' => 'status'],
'fleetmgmt_vehicle_inspection_interval' => ['name' => 'fleetmgmt_vehicle_inspection_interval', 'type' => 'int', 'internal' => 'interval'],
'fleetmgmt_vehicle_inspection_next' => ['name' => 'fleetmgmt_vehicle_inspection_next', 'type' => 'DateTime', 'internal' => 'next'],
'fleetmgmt_vehicle_inspection_type' => ['name' => 'fleetmgmt_vehicle_inspection_type', 'type' => 'int', 'internal' => 'type'],
'equipmgmt_equipment_inspection_id' => ['name' => 'equipmgmt_equipment_inspection_id', 'type' => 'int', 'internal' => 'id'],
'equipmgmt_equipment_inspection_description' => ['name' => 'equipmgmt_equipment_inspection_description', 'type' => 'string', 'internal' => 'description'],
'equipmgmt_equipment_inspection_status' => ['name' => 'equipmgmt_equipment_inspection_status', 'type' => 'int', 'internal' => 'status'],
'equipmgmt_equipment_inspection_interval' => ['name' => 'equipmgmt_equipment_inspection_interval', 'type' => 'int', 'internal' => 'interval'],
'equipmgmt_equipment_inspection_next' => ['name' => 'equipmgmt_equipment_inspection_next', 'type' => 'DateTime', 'internal' => 'next'],
'equipmgmt_equipment_inspection_type' => ['name' => 'equipmgmt_equipment_inspection_type', 'type' => 'int', 'internal' => 'type'],
];
/**
@ -54,7 +54,7 @@ final class InspectionMapper extends DataMapperFactory
public const OWNS_ONE = [
'type' => [
'mapper' => InspectionTypeMapper::class,
'external' => 'fleetmgmt_vehicle_inspection_type',
'external' => 'equipmgmt_equipment_inspection_type',
],
];
@ -64,7 +64,7 @@ final class InspectionMapper extends DataMapperFactory
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_vehicle_inspection';
public const TABLE = 'equipmgmt_equipment_inspection';
/**
* Primary field name.
@ -72,7 +72,7 @@ final class InspectionMapper extends DataMapperFactory
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_vehicle_inspection_id';
public const PRIMARYFIELD = 'equipmgmt_equipment_inspection_id';
/**
* Model to use by the mapper.

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
@ -12,14 +12,14 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models;
namespace Modules\EquipmentManagement\Models;
use phpOMS\Stdlib\Base\Enum;
/**
* Inspection status enum.
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @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\EquipmentManagement\Models;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\Localization\BaseStringL11n;
@ -20,7 +20,7 @@ use phpOMS\Localization\BaseStringL11n;
/**
* mapper class.
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
@ -37,10 +37,10 @@ final class InspectionTypeL11nMapper extends DataMapperFactory
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_inspection_type_l11n_id' => ['name' => 'fleetmgmt_inspection_type_l11n_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_inspection_type_l11n_title' => ['name' => 'fleetmgmt_inspection_type_l11n_title', 'type' => 'string', 'internal' => 'content', 'autocomplete' => true],
'fleetmgmt_inspection_type_l11n_type' => ['name' => 'fleetmgmt_inspection_type_l11n_type', 'type' => 'int', 'internal' => 'ref'],
'fleetmgmt_inspection_type_l11n_lang' => ['name' => 'fleetmgmt_inspection_type_l11n_lang', 'type' => 'string', 'internal' => 'language'],
'equipmgmt_inspection_type_l11n_id' => ['name' => 'equipmgmt_inspection_type_l11n_id', 'type' => 'int', 'internal' => 'id'],
'equipmgmt_inspection_type_l11n_title' => ['name' => 'equipmgmt_inspection_type_l11n_title', 'type' => 'string', 'internal' => 'content', 'autocomplete' => true],
'equipmgmt_inspection_type_l11n_type' => ['name' => 'equipmgmt_inspection_type_l11n_type', 'type' => 'int', 'internal' => 'ref'],
'equipmgmt_inspection_type_l11n_lang' => ['name' => 'equipmgmt_inspection_type_l11n_lang', 'type' => 'string', 'internal' => 'language'],
];
/**
@ -49,7 +49,7 @@ final class InspectionTypeL11nMapper extends DataMapperFactory
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_inspection_type_l11n';
public const TABLE = 'equipmgmt_inspection_type_l11n';
/**
* Primary field name.
@ -57,7 +57,7 @@ final class InspectionTypeL11nMapper extends DataMapperFactory
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_inspection_type_l11n_id';
public const PRIMARYFIELD = 'equipmgmt_inspection_type_l11n_id';
/**
* Model to use by the mapper.

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @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\EquipmentManagement\Models;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\Localization\BaseStringL11nType;
@ -20,7 +20,7 @@ use phpOMS\Localization\BaseStringL11nType;
/**
* Item mapper class.
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
@ -37,8 +37,8 @@ final class InspectionTypeMapper extends DataMapperFactory
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_inspection_type_id' => ['name' => 'fleetmgmt_inspection_type_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_inspection_type_name' => ['name' => 'fleetmgmt_inspection_type_name', 'type' => 'string', 'internal' => 'title', 'autocomplete' => true],
'equipmgmt_inspection_type_id' => ['name' => 'equipmgmt_inspection_type_id', 'type' => 'int', 'internal' => 'id'],
'equipmgmt_inspection_type_name' => ['name' => 'equipmgmt_inspection_type_name', 'type' => 'string', 'internal' => 'title', 'autocomplete' => true],
];
/**
@ -50,8 +50,8 @@ final class InspectionTypeMapper extends DataMapperFactory
public const HAS_MANY = [
'l11n' => [
'mapper' => InspectionTypeL11nMapper::class,
'table' => 'fleetmgmt_inspection_type_l11n',
'self' => 'fleetmgmt_inspection_type_l11n_type',
'table' => 'equipmgmt_inspection_type_l11n',
'self' => 'equipmgmt_inspection_type_l11n_type',
'column' => 'content',
'external' => null,
],
@ -71,7 +71,7 @@ final class InspectionTypeMapper extends DataMapperFactory
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_inspection_type';
public const TABLE = 'equipmgmt_inspection_type';
/**
* Primary field name.
@ -79,5 +79,5 @@ final class InspectionTypeMapper extends DataMapperFactory
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_inspection_type_id';
public const PRIMARYFIELD = 'equipmgmt_inspection_type_id';
}

View File

View File

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
@ -12,17 +12,17 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models;
namespace Modules\EquipmentManagement\Models;
/**
* Null model
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
final class NullVehicle extends Vehicle
final class NullEquipment extends Equipment
{
/**
* Constructor

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
@ -12,12 +12,12 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models;
namespace Modules\EquipmentManagement\Models;
/**
* Null model
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0

View File

@ -4,7 +4,7 @@
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
@ -12,37 +12,27 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models;
namespace Modules\EquipmentManagement\Models;
use phpOMS\Stdlib\Base\Enum;
/**
* Permision state enum.
*
* @package Modules\FleetManagement\Models
* @package Modules\EquipmentManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*/
abstract class PermissionCategory extends Enum
{
public const VEHICLE = 1;
public const EQUIPMENT = 1;
public const FUEL_TYPE = 2;
public const EQUIPMENT_TYPE = 3;
public const VEHICLE_TYPE = 3;
public const EQUIPMENT_INSPECTION_TYPE = 4;
public const VEHICLE_INSPECTION_TYPE = 4;
public const EQUIPMENT_INSPECTION = 5;
public const VEHICLE_INSPECTION = 5;
public const VEHICLE_ATTRIBUTE_TYPE = 6;
public const DRIVER = 7;
public const DRIVER_INSPECTION_TYPE = 8;
public const DRIVER_INSPECTION = 9;
public const DRIVER_ATTRIBUTE_TYPE = 10;
public const EQUIPMENT_ATTRIBUTE_TYPE = 6;
}

View File

@ -1,89 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models;
use Modules\Attribute\Models\AttributeValue;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
/**
* Vehicle mapper class.
*
* @package Modules\FleetManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*
* @template T of AttributeValue
* @extends DataMapperFactory<T>
*/
final class VehicleAttributeValueMapper extends DataMapperFactory
{
/**
* Columns.
*
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_attr_value_id' => ['name' => 'fleetmgmt_attr_value_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_attr_value_default' => ['name' => 'fleetmgmt_attr_value_default', 'type' => 'bool', 'internal' => 'isDefault'],
'fleetmgmt_attr_value_valueStr' => ['name' => 'fleetmgmt_attr_value_valueStr', 'type' => 'string', 'internal' => 'valueStr'],
'fleetmgmt_attr_value_valueInt' => ['name' => 'fleetmgmt_attr_value_valueInt', 'type' => 'int', 'internal' => 'valueInt'],
'fleetmgmt_attr_value_valueDec' => ['name' => 'fleetmgmt_attr_value_valueDec', 'type' => 'float', 'internal' => 'valueDec'],
'fleetmgmt_attr_value_valueDat' => ['name' => 'fleetmgmt_attr_value_valueDat', 'type' => 'DateTime', 'internal' => 'valueDat'],
'fleetmgmt_attr_value_unit' => ['name' => 'fleetmgmt_attr_value_unit', 'type' => 'string', 'internal' => 'unit'],
'fleetmgmt_attr_value_deptype' => ['name' => 'fleetmgmt_attr_value_deptype', 'type' => 'int', 'internal' => 'dependingAttributeType'],
'fleetmgmt_attr_value_depvalue' => ['name' => 'fleetmgmt_attr_value_depvalue', 'type' => 'int', 'internal' => 'dependingAttributeValue'],
];
/**
* Has many relation.
*
* @var array<string, array{mapper:class-string, table:string, self?:?string, external?:?string, column?:string}>
* @since 1.0.0
*/
public const HAS_MANY = [
'l11n' => [
'mapper' => VehicleAttributeValueL11nMapper::class,
'table' => 'fleetmgmt_attr_value_l11n',
'self' => 'fleetmgmt_attr_value_l11n_value',
'external' => null,
],
];
/**
* Model to use by the mapper.
*
* @var class-string<T>
* @since 1.0.0
*/
public const MODEL = AttributeValue::class;
/**
* Primary table.
*
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_attr_value';
/**
* Primary field name.
*
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_attr_value_id';
}

View File

@ -1,119 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models;
use Modules\Media\Models\MediaMapper;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use Modules\Editor\Models\EditorDocMapper;
/**
* Mapper class.
*
* @package Modules\FleetManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*
* @template T of Vehicle
* @extends DataMapperFactory<T>
*/
final class VehicleMapper extends DataMapperFactory
{
/**
* Columns.
*
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_vehicle_id' => ['name' => 'fleetmgmt_vehicle_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_vehicle_name' => ['name' => 'fleetmgmt_vehicle_name', 'type' => 'string', 'internal' => 'name'],
'fleetmgmt_vehicle_status' => ['name' => 'fleetmgmt_vehicle_status', 'type' => 'int', 'internal' => 'status'],
'fleetmgmt_vehicle_info' => ['name' => 'fleetmgmt_vehicle_info', 'type' => 'string', 'internal' => 'info'],
'fleetmgmt_vehicle_unit' => ['name' => 'fleetmgmt_vehicle_unit', 'type' => 'int', 'internal' => 'unit'],
'fleetmgmt_vehicle_type' => ['name' => 'fleetmgmt_vehicle_type', 'type' => 'int', 'internal' => 'type'],
'fleetmgmt_vehicle_fuel' => ['name' => 'fleetmgmt_vehicle_fuel', 'type' => 'int', 'internal' => 'fuelType'],
'fleetmgmt_vehicle_responsible' => ['name' => 'fleetmgmt_vehicle_responsible', 'type' => 'int', 'internal' => 'responsible'],
'fleetmgmt_vehicle_created_at' => ['name' => 'fleetmgmt_vehicle_created_at', 'type' => 'DateTimeImmutable', 'internal' => 'createdAt', 'readonly' => true],
];
/**
* Has many relation.
*
* @var array<string, array{mapper:class-string, table:string, self?:?string, external?:?string, column?:string}>
* @since 1.0.0
*/
public const HAS_MANY = [
'files' => [
'mapper' => MediaMapper::class,
'table' => 'fleetmgmt_vehicle_media',
'external' => 'fleetmgmt_vehicle_media_media',
'self' => 'fleetmgmt_vehicle_media_vehicle',
],
'attributes' => [
'mapper' => VehicleAttributeMapper::class,
'table' => 'fleetmgmt_vehicle_attr',
'self' => 'fleetmgmt_vehicle_attr_vehicle',
'external' => null,
],
'notes' => [
'mapper' => EditorDocMapper::class, /* mapper of the related object */
'table' => 'fleetmgmt_vehicle_note', /* table of the related object, null if no relation table is used (many->1) */
'external' => 'fleetmgmt_vehicle_note_doc',
'self' => 'fleetmgmt_vehicle_note_vehicle',
],
];
/**
* Has one relation.
*
* @var array<string, array{mapper:class-string, external:string, by?:string, column?:string, conditional?:bool}>
* @since 1.0.0
*/
public const OWNS_ONE = [
'type' => [
'mapper' => VehicleTypeMapper::class,
'external' => 'fleetmgmt_vehicle_type',
],
'fuelType' => [
'mapper' => FuelTypeMapper::class,
'external' => 'fleetmgmt_vehicle_fuel',
],
];
/**
* Primary table.
*
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_vehicle';
/**
* Created at.
*
* @var string
* @since 1.0.0
*/
public const CREATED_AT = 'fleetmgmt_vehicle_created_at';
/**
* Primary field name.
*
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_vehicle_id';
}

View File

@ -1,69 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\FleetManagement\Models
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use phpOMS\Localization\BaseStringL11n;
/**
* mapper class.
*
* @package Modules\FleetManagement\Models
* @license OMS License 2.0
* @link https://jingga.app
* @since 1.0.0
*
* @template T of BaseStringL11n
* @extends DataMapperFactory<T>
*/
final class VehicleTypeL11nMapper extends DataMapperFactory
{
/**
* Columns.
*
* @var array<string, array{name:string, type:string, internal:string, autocomplete?:bool, readonly?:bool, writeonly?:bool, annotations?:array}>
* @since 1.0.0
*/
public const COLUMNS = [
'fleetmgmt_vehicle_type_l11n_id' => ['name' => 'fleetmgmt_vehicle_type_l11n_id', 'type' => 'int', 'internal' => 'id'],
'fleetmgmt_vehicle_type_l11n_title' => ['name' => 'fleetmgmt_vehicle_type_l11n_title', 'type' => 'string', 'internal' => 'content', 'autocomplete' => true],
'fleetmgmt_vehicle_type_l11n_type' => ['name' => 'fleetmgmt_vehicle_type_l11n_type', 'type' => 'int', 'internal' => 'ref'],
'fleetmgmt_vehicle_type_l11n_lang' => ['name' => 'fleetmgmt_vehicle_type_l11n_lang', 'type' => 'string', 'internal' => 'language'],
];
/**
* Primary table.
*
* @var string
* @since 1.0.0
*/
public const TABLE = 'fleetmgmt_vehicle_type_l11n';
/**
* Primary field name.
*
* @var string
* @since 1.0.0
*/
public const PRIMARYFIELD = 'fleetmgmt_vehicle_type_l11n_id';
/**
* Model to use by the mapper.
*
* @var class-string<T>
* @since 1.0.0
*/
public const MODEL = BaseStringL11n::class;
}

View File

@ -1 +1 @@
# oms-FleetManagement
# oms-EquipmentManagement

View File

@ -13,12 +13,9 @@
declare(strict_types=1);
return ['Navigation' => [
'FleetManagement' => 'Fleet Management',
'Vehicles' => 'Vehicles',
'Drivers' => 'Drivers',
'EquipmentManagement' => 'Equipment Management',
'Equipments' => 'Equipments',
'Inspections' => 'Inspections',
'VehicleInspectionTypes' => 'Vehicle Inspection Types',
'DriverInspectionTypes' => 'Driver Inspection Types',
'VehicleAttributes' => 'Vehicle Attributes',
'DriverAttributes' => 'Driver Attributes',
'EquipmentInspectionTypes' => 'Equipment Inspection Types',
'EquipmentAttributes' => 'Equipment Attributes',
]];

View File

@ -12,9 +12,9 @@
*/
declare(strict_types=1);
return ['FleetManagement' => [
'Vehicle' => 'Vehicle',
'Vehicles' => 'Vehicles',
return ['EquipmentManagement' => [
'Equipment' => 'Equipment',
'Equipments' => 'Equipments',
'Status' => 'Status',
'Name' => 'Name',
'Type' => 'Type',

View File

@ -55,7 +55,7 @@ echo $this->data['nav']->render(); ?>
<?php
$count = 0;
foreach ($attributes as $key => $value) : ++$count;
$url = UriFactory::build('{/base}/fleet/vehicle/attribute/type?{?}&id=' . $value->id);
$url = UriFactory::build('{/base}/fleet/equipment/attribute/type?{?}&id=' . $value->id);
?>
<tr data-href="<?= $url; ?>">
<td><a href="<?= $url; ?>"><?= $value->id; ?></a>

View File

@ -1,318 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\ClientManagement
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
use Modules\FleetManagement\Models\NullDriver;
use Modules\FleetManagement\Models\DriverStatus;
use Modules\Media\Models\NullMedia;
use phpOMS\Uri\UriFactory;
$countryCodes = \phpOMS\Localization\ISO3166TwoEnum::getConstants();
$countries = \phpOMS\Localization\ISO3166NameEnum::getConstants();
$driverStatus = DriverStatus::getConstants();
/**
* @var \Modules\FleetManagement\Models\Driver $driver
*/
$driver = $this->data['driver'] ?? new NullDriver();
$files = $driver->files;
$driverImage = $this->data['driverImage'] ?? new NullMedia();
$attributeView = $this->data['attributeView'];
/**
* @var \phpOMS\Views\View $this
*/
echo $this->data['nav']->render();
?>
<div class="tabview tab-2">
<div class="box">
<ul class="tab-links">
<li><label for="c-tab-1"><?= $this->getHtml('Profile'); ?></label>
<li><label for="c-tab-2"><?= $this->getHtml('Attributes'); ?></label>
<li><label for="c-tab-3"><?= $this->getHtml('Files'); ?></label>
<li><label for="c-tab-4"><?= $this->getHtml('Notes'); ?></label>
<li><label for="c-tab-5"><?= $this->getHtml('Inspections'); ?></label>
<li><label for="c-tab-7"><?= $this->getHtml('Milage'); ?></label>
<li><label for="c-tab-8"><?= $this->getHtml('Costs'); ?></label>
</ul>
</div>
<div class="tab-content">
<input type="radio" id="c-tab-1" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-1' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<div class="col-xs-12 col-md-6">
<section class="portlet">
<div class="portlet-head"><?= $this->getHtml('Profile'); ?></div>
<div class="portlet-body">
<div class="form-group">
<label for="iFleetDriverProfileName"><?= $this->getHtml('Name'); ?></label>
<input type="text" id="iFleetDriverProfileName" name="name" value="<?= $this->printHtml($driver->account->name1); ?>">
</div>
<div class="form-group">
<label for="iDriverStatus"><?= $this->getHtml('Status'); ?></label>
<select id="iDriverStatus" name="driver_status">
<?php foreach ($driverStatus as $status) : ?>
<option value="<?= $status; ?>"<?= $status === $driver->status ? ' selected' : ''; ?>><?= $this->getHtml(':status' . $status); ?>
<?php endforeach; ?>
</select>
</div>
<div class="form-group">
<label for="iDriverMake"><?= $this->getHtml('Make'); ?></label>
<input type="text" id="iDriverMake" name="make" value="<?= $this->printHtml($driver->getAttribute('maker')->value->getValue()); ?>">
</div>
</div>
<div class="portlet-foot">
<?php if ($driver->id === 0) : ?>
<input id="iCreateSubmit" type="Submit" value="<?= $this->getHtml('Create', '0', '0'); ?>">
<?php else : ?>
<input id="iSaveSubmit" type="Submit" value="<?= $this->getHtml('Save', '0', '0'); ?>">
<?php endif; ?>
</div>
</section>
</div>
<div class="md-hidden col-md-6">
<section class="portlet">
<div class="portlet-body">
<img width="100%" src="<?= $driverImage->id === 0
? 'Web/Backend/img/logo_grey.png'
: UriFactory::build($driverImage->getPath()); ?>"></a>
</div>
</section>
</div>
</div>
</div>
<input type="radio" id="c-tab-2" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-2' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<?= $attributeView->render(
$driver->attributes,
$this->data['attributeTypes'] ?? [],
[],
'{/api}fleet/driver/attribute'
);
?>
</div>
</div>
<input type="radio" id="c-tab-3" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-3' ? ' checked' : ''; ?>>
<div class="tab col-simple">
<?= $this->data['media-upload']->render('driver-file', 'files', '', $driver->files); ?>
</div>
<input type="radio" id="c-tab-4" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-4' ? ' checked' : ''; ?>>
<div class="tab">
<?= $this->data['driver-notes']->render('driver-notes', '', $driver->notes); ?>
</div>
<input type="radio" id="c-tab-5" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-5' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<a class="button" href="<?= UriFactory::build('{/app}/fleet/inspection/create?driver=' . $driver->id) ?>"><?= $this->getHtml('Create', '0', '0'); ?></a>
</div>
<div class="row">
<div class="col-xs-12 col-md-6">
<section class="portlet">
<div class="portlet-head"><?= $this->getHtml('Upcoming'); ?></div>
<table id="upcomingInspections" class="default">
<thead>
<tr>
<td><?= $this->getHtml('Date'); ?>
<td class="wf-100"><?= $this->getHtml('Type'); ?>
<td><?= $this->getHtml('Responsible'); ?>
<tbody>
<tr>
<td>
<td>
<td>
</table>
</section>
</div>
<div class="col-xs-12 col-md-6">
<section class="portlet">
<div class="portlet-head"><?= $this->getHtml('History'); ?></div>
<table id="historicInspections" class="default">
<thead>
<tr>
<td><?= $this->getHtml('Date'); ?>
<td class="wf-100"><?= $this->getHtml('Type'); ?>
<td><?= $this->getHtml('Responsible'); ?>
<tbody>
<tr>
<td>
<td>
<td>
</table>
</section>
</div>
</div>
</div>
<input type="radio" id="c-tab-7" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-7' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<div class="col-xs-12 col-md-6">
<section class="portlet">
<form id="milageForm" action="<?= UriFactory::build(''); ?>" method="post"
data-ui-container="#milageTable tbody"
data-add-form="milageForm"
data-add-tpl="#milageTable tbody .oms-add-tpl-milage">
<div class="portlet-head"><?= $this->getHtml('Milage'); ?></div>
<div class="portlet-body">
<div class="form-group">
<label for="iAttributeId"><?= $this->getHtml('ID', '0', '0'); ?></label>
<input type="text" id="iAttributeId" name="id" data-tpl-text="/id" data-tpl-value="/id" disabled>
</div>
<div class="form-group">
<label for="iDriver"><?= $this->getHtml('Driver'); ?></label>
<div class="ipt-wrap">
<div class="ipt-first">
<span class="input">
<button type="button" formaction="">
<i class="fa fa-book"></i>
</button>
<input type="text" id="iDriver" name="bill_client" value="">
</span>
</div>
<?php if (0 > 0) : ?>
<div class="ipt-second">
<a class="button" href="<?= UriFactory::build('{/app}/sales/client/profile?id=' . 0); ?>"><?= $this->getHtml('Driver'); ?></a>
</div>
<?php endif; ?>
</div>
</div>
<div class="form-group">
<label for="iStartDate"><?= $this->getHtml('Start'); ?></label>
<input type="datetime-local" id="iStartDate" name="bill_invoice_date"
value="">
</div>
<div class="form-group">
<label for="iEndDate"><?= $this->getHtml('End'); ?></label>
<input type="datetime-local" id="iEndDate" name="bill_invoice_date"
value="">
</div>
<div class="form-group">
<label for="iFrom"><?= $this->getHtml('From'); ?></label>
<input type="text" id="iFrom" name="bill_invoice_date"
value="">
</div>
<div class="form-group">
<label for="iTo"><?= $this->getHtml('To'); ?></label>
<input type="text" id="iTo" name="bill_invoice_date"
value="">
</div>
<div class="form-group">
<label for="iMilage"><?= $this->getHtml('Milage'); ?></label>
<input type="number" id="iMilage" name="bill_invoice_date"
value="">
</div>
<div class="form-group">
<label for="iMilageDescription"><?= $this->getHtml('Description'); ?></label>
<pre class="textarea contenteditable" id="iMilageDescription" data-name="description" data-tpl-value="/value" contenteditable></pre>
</div>
</div>
<div class="portlet-foot">
<input id="bAttributeAdd" formmethod="put" type="submit" class="add-form" value="<?= $this->getHtml('Add', '0', '0'); ?>">
<input id="bAttributeSave" formmethod="post" type="submit" class="save-form hidden button save" value="<?= $this->getHtml('Update', '0', '0'); ?>">
<input type="submit" class="cancel-form hidden button close" value="<?= $this->getHtml('Cancel', '0', '0'); ?>">
</div>
</form>
</section>
</div>
<div class="col-xs-12 col-md-6">
<section class="portlet">
<div class="portlet-head"><?= $this->getHtml('Milage'); ?><i class="lni lni-download download btn end-xs"></i></div>
<div class="slider">
<table id="milageTable" class="default"
data-tag="form"
data-ui-element="tr"
data-add-tpl=".oms-add-tpl-milage"
data-update-form="milageForm">
<thead>
<tr>
<td>
<td><?= $this->getHtml('ID', '0', '0'); ?>
<td class="wf-100"><?= $this->getHtml('Driver'); ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
<td><?= $this->getHtml('Milage'); ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
<td><?= $this->getHtml('Start'); ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
<td><?= $this->getHtml('End'); ?><i class="sort-asc fa fa-chevron-up"></i><i class="sort-desc fa fa-chevron-down"></i>
<tbody>
<template class="oms-add-tpl-milage">
<tr data-id="" draggable="false">
<td>
<i class="fa fa-cogs btn update-form"></i>
<input id="milageTable-remove-0" type="checkbox" class="hidden">
<label for="milageTable-remove-0" class="checked-visibility-alt"><i class="fa fa-times btn form-action"></i></label>
<span class="checked-visibility">
<label for="milageTable-remove-0" class="link default"><?= $this->getHtml('Cancel', '0', '0'); ?></label>
<label for="milageTable-remove-0" class="remove-form link cancel"><?= $this->getHtml('Delete', '0', '0'); ?></label>
</span>
<td data-tpl-text="/id" data-tpl-value="/id"></td>
<td data-tpl-text="/type" data-tpl-value="/type" data-value=""></td>
<td data-tpl-text="/value" data-tpl-value="/value"></td>
<td data-tpl-text="/unit" data-tpl-value="/unit"></td>
<td data-tpl-text="/unit" data-tpl-value="/unit"></td>
</tr>
</template>
<?php $c = 0;
$milage = [];
foreach ($milage as $key => $value) : ++$c; ?>
<tr data-id="<?= $value->id; ?>">
<td>
<i class="fa fa-cogs btn update-form"></i>
<?php if (!$value->type->isRequired) : ?>
<input id="milageTable-remove-<?= $value->id; ?>" type="checkbox" class="hidden">
<label for="milageTable-remove-<?= $value->id; ?>" class="checked-visibility-alt"><i class="fa fa-times btn form-action"></i></label>
<span class="checked-visibility">
<label for="milageTable-remove-<?= $value->id; ?>" class="link default"><?= $this->getHtml('Cancel', '0', '0'); ?></label>
<label for="milageTable-remove-<?= $value->id; ?>" class="remove-form link cancel"><?= $this->getHtml('Delete', '0', '0'); ?></label>
</span>
<?php endif; ?>
<td data-tpl-text="/id" data-tpl-value="/id"><?= $value->id; ?>
<td data-tpl-text="/type" data-tpl-value="/type" data-value="<?= $value->type->id; ?>"><?= $this->printHtml($value->type->getL11n()); ?>
<td data-tpl-text="/value" data-tpl-value="/value"><?= $value->value->getValue() instanceof \DateTime ? $value->value->getValue()->format('Y-m-d') : $this->printHtml((string) $value->value->getValue()); ?>
<td data-tpl-text="/unit" data-tpl-value="/unit" data-value="<?= $value->value->unit; ?>"><?= $this->printHtml($value->value->unit); ?>
<td data-tpl-text="/unit" data-tpl-value="/unit" data-value="<?= $value->value->unit; ?>"><?= $this->printHtml($value->value->unit); ?>
<?php endforeach; ?>
<?php if ($c === 0) : ?>
<tr>
<td colspan="6" class="empty"><?= $this->getHtml('Empty', '0', '0'); ?>
<?php endif; ?>
</table>
</div>
</section>
</div>
</div>
</div>
<input type="radio" id="c-tab-8" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-8' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<div class="col-xs-12 col-md-6">
</div>
</div>
</div>
</div>
</div>

View File

@ -5,7 +5,7 @@
*
* PHP Version 8.1
*
* @package Modules\ClientManagement
* @package Modules\EquipmentManagement
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
@ -16,13 +16,13 @@ declare(strict_types=1);
use phpOMS\Uri\UriFactory;
/** @var \phpOMS\Views\View $this */
$drivers = $this->data['drivers'] ?? [];
$equipments = $this->data['equipments'] ?? [];
echo $this->data['nav']->render(); ?>
<div class="row">
<div class="col-xs-12">
<section class="portlet">
<div class="portlet-head"><?= $this->getHtml('Vehicles'); ?><i class="lni lni-download download btn end-xs"></i></div>
<div class="portlet-head"><?= $this->getHtml('Equipments'); ?><i class="lni lni-download download btn end-xs"></i></div>
<div class="slider">
<table id="iSalesClientList" class="default sticky">
<thead>
@ -79,9 +79,9 @@ echo $this->data['nav']->render(); ?>
<tbody>
<?php
$count = 0;
foreach ($drivers as $key => $value) :
foreach ($equipments as $key => $value) :
++$count;
$url = UriFactory::build('{/base}/fleet/driver/profile?{?}&id=' . $value->id);
$url = UriFactory::build('{/base}/fleet/equipment/profile?{?}&id=' . $value->id);
?>
<tr data-href="<?= $url; ?>">
<td>

View File

@ -12,22 +12,22 @@
*/
declare(strict_types=1);
use Modules\FleetManagement\Models\NullVehicle;
use Modules\FleetManagement\Models\VehicleStatus;
use Modules\EquipmentManagement\Models\NullEquipment;
use Modules\EquipmentManagement\Models\EquipmentStatus;
use Modules\Media\Models\NullMedia;
use phpOMS\Uri\UriFactory;
$countryCodes = \phpOMS\Localization\ISO3166TwoEnum::getConstants();
$countries = \phpOMS\Localization\ISO3166NameEnum::getConstants();
$vehicleStatus = VehicleStatus::getConstants();
$equipmentStatus = EquipmentStatus::getConstants();
/**
* @var \Modules\FleetManagement\Models\Vehicle $vehicle
* @var \Modules\EquipmentManagement\Models\Equipment $equipment
*/
$vehicle = $this->data['vehicle'] ?? new NullVehicle();
$files = $vehicle->files;
$vehicleImage = $this->data['vehicleImage'] ?? new NullMedia();
$vehicleTypes = $this->data['types'] ?? [];
$equipment = $this->data['equipment'] ?? new NullEquipment();
$files = $equipment->files;
$equipmentImage = $this->data['equipmentImage'] ?? new NullMedia();
$equipmentTypes = $this->data['types'] ?? [];
$attributeView = $this->data['attributeView'];
/**
@ -56,70 +56,70 @@ echo $this->data['nav']->render();
<div class="portlet-head"><?= $this->getHtml('Profile'); ?></div>
<div class="portlet-body">
<div class="form-group">
<label for="iFleetVehicleProfileName"><?= $this->getHtml('Name'); ?></label>
<input type="text" id="iFleetVehicleProfileName" name="name" value="<?= $this->printHtml($vehicle->name); ?>">
<label for="iEquipmentEquipmentProfileName"><?= $this->getHtml('Name'); ?></label>
<input type="text" id="iEquipmentEquipmentProfileName" name="name" value="<?= $this->printHtml($equipment->name); ?>">
</div>
<div class="form-group">
<label for="iVehicleDriver"><?= $this->getHtml('Driver'); ?></label>
<input type="text" id="iVehicleDriver" name="driver" value="" disabled>
<label for="iEquipmentDriver"><?= $this->getHtml('Driver'); ?></label>
<input type="text" id="iEquipmentDriver" name="driver" value="" disabled>
</div>
<div class="form-group">
<label for="iVehicleVin"><?= $this->getHtml('Vin'); ?></label>
<input type="text" id="iVehicleVin" name="vin" value="<?= $this->printHtml($vehicle->getAttribute('vin')->value->getValue()); ?>">
<label for="iEquipmentVin"><?= $this->getHtml('Vin'); ?></label>
<input type="text" id="iEquipmentVin" name="vin" value="<?= $this->printHtml($equipment->getAttribute('vin')->value->getValue()); ?>">
</div>
<div class="form-group">
<label for="iVehicleStatus"><?= $this->getHtml('Status'); ?></label>
<select id="iVehicleStatus" name="vehicle_status">
<?php foreach ($vehicleStatus as $status) : ?>
<option value="<?= $status; ?>"<?= $status === $vehicle->status ? ' selected' : ''; ?>><?= $this->getHtml(':status' . $status); ?>
<label for="iEquipmentStatus"><?= $this->getHtml('Status'); ?></label>
<select id="iEquipmentStatus" name="equipment_status">
<?php foreach ($equipmentStatus as $status) : ?>
<option value="<?= $status; ?>"<?= $status === $equipment->status ? ' selected' : ''; ?>><?= $this->getHtml(':status' . $status); ?>
<?php endforeach; ?>
</select>
</div>
<div class="form-group">
<label for="iVehicleEnd"><?= $this->getHtml('Type'); ?></label>
<select id="iVehicleEnd" name="vehicle_type">
<?php foreach ($vehicleTypes as $type) : ?>
<option value="<?= $type->id; ?>"<?= $vehicle->type->id === $type->id ? ' selected' : ''; ?>><?= $this->printHtml($type->getL11n()); ?>
<label for="iEquipmentEnd"><?= $this->getHtml('Type'); ?></label>
<select id="iEquipmentEnd" name="equipment_type">
<?php foreach ($equipmentTypes as $type) : ?>
<option value="<?= $type->id; ?>"<?= $equipment->type->id === $type->id ? ' selected' : ''; ?>><?= $this->printHtml($type->getL11n()); ?>
<?php endforeach; ?>
</select>
</div>
<div class="form-group">
<label for="iVehicleMake"><?= $this->getHtml('Make'); ?></label>
<input type="text" id="iVehicleMake" name="make" value="<?= $this->printHtml($vehicle->getAttribute('maker')->value->getValue()); ?>">
<label for="iEquipmentMake"><?= $this->getHtml('Make'); ?></label>
<input type="text" id="iEquipmentMake" name="make" value="<?= $this->printHtml($equipment->getAttribute('maker')->value->getValue()); ?>">
</div>
<div class="form-group">
<label for="iVehicleModel"><?= $this->getHtml('Model'); ?></label>
<input type="text" id="iVehicleModel" name="vehicle_model" value="<?= $this->printHtml($vehicle->getAttribute('vehicle_model')->value->getValue()); ?>">
<label for="iEquipmentModel"><?= $this->getHtml('Model'); ?></label>
<input type="text" id="iEquipmentModel" name="equipment_model" value="<?= $this->printHtml($equipment->getAttribute('equipment_model')->value->getValue()); ?>">
</div>
<div class="form-group">
<label for="iVehicleStart"><?= $this->getHtml('Start'); ?></label>
<input type="datetime-local" id="iVehicleStart" name="ownership_start" value="<?= $vehicle->getAttribute('ownership_start')->value->getValue()?->format('Y-m-d\TH:i') ?? $vehicle->createdAt->format('Y-m-d\TH:i'); ?>">
<label for="iEquipmentStart"><?= $this->getHtml('Start'); ?></label>
<input type="datetime-local" id="iEquipmentStart" name="ownership_start" value="<?= $equipment->getAttribute('ownership_start')->value->getValue()?->format('Y-m-d\TH:i') ?? $equipment->createdAt->format('Y-m-d\TH:i'); ?>">
</div>
<div class="form-group">
<label for="iVehicleEnd"><?= $this->getHtml('End'); ?></label>
<input type="datetime-local" id="iVehicleEnd" name="ownership_end" value="<?= $vehicle->getAttribute('ownership_end')->value->getValue()?->format('Y-m-d\TH:i'); ?>">
<label for="iEquipmentEnd"><?= $this->getHtml('End'); ?></label>
<input type="datetime-local" id="iEquipmentEnd" name="ownership_end" value="<?= $equipment->getAttribute('ownership_end')->value->getValue()?->format('Y-m-d\TH:i'); ?>">
</div>
<div class="form-group">
<label for="iVehiclePrice"><?= $this->getHtml('PurchasePrice'); ?></label>
<input type="number" step="0.01" id="iVehiclePrice" name="purchase_price" value="<?= $this->printHtml($vehicle->getAttribute('purchase_price')->value->getValue()); ?>">
<label for="iEquipmentPrice"><?= $this->getHtml('PurchasePrice'); ?></label>
<input type="number" step="0.01" id="iEquipmentPrice" name="purchase_price" value="<?= $this->printHtml($equipment->getAttribute('purchase_price')->value->getValue()); ?>">
</div>
<div class="form-group">
<label for="iVehiclePrice"><?= $this->getHtml('LeasingFee'); ?></label>
<input type="number" step="0.01" id="iVehiclePrice" name="leasing_fee" value="<?= $this->printHtml($vehicle->getAttribute('leasing_fee')->value->getValue()); ?>">
<label for="iEquipmentPrice"><?= $this->getHtml('LeasingFee'); ?></label>
<input type="number" step="0.01" id="iEquipmentPrice" name="leasing_fee" value="<?= $this->printHtml($equipment->getAttribute('leasing_fee')->value->getValue()); ?>">
</div>
</div>
<div class="portlet-foot">
<?php if ($vehicle->id === 0) : ?>
<?php if ($equipment->id === 0) : ?>
<input id="iCreateSubmit" type="Submit" value="<?= $this->getHtml('Create', '0', '0'); ?>">
<?php else : ?>
<input id="iSaveSubmit" type="Submit" value="<?= $this->getHtml('Save', '0', '0'); ?>">
@ -131,9 +131,9 @@ echo $this->data['nav']->render();
<div class="col-xs-12 col-md-6">
<section class="portlet">
<div class="portlet-body">
<img width="100%" src="<?= $vehicleImage->id === 0
<img width="100%" src="<?= $equipmentImage->id === 0
? 'Web/Backend/img/logo_grey.png'
: UriFactory::build($vehicleImage->getPath()); ?>"></a>
: UriFactory::build($equipmentImage->getPath()); ?>"></a>
</div>
</section>
</div>
@ -144,10 +144,10 @@ echo $this->data['nav']->render();
<div class="tab">
<div class="row">
<?= $attributeView->render(
$vehicle->attributes,
$equipment->attributes,
$this->data['attributeTypes'] ?? [],
$this->data['units'] ?? [],
'{/api}fleet/vehicle/attribute'
'{/api}fleet/equipment/attribute'
);
?>
</div>
@ -155,18 +155,18 @@ echo $this->data['nav']->render();
<input type="radio" id="c-tab-3" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-3' ? ' checked' : ''; ?>>
<div class="tab col-simple">
<?= $this->data['media-upload']->render('vehicle-file', 'files', '', $vehicle->files); ?>
<?= $this->data['media-upload']->render('equipment-file', 'files', '', $equipment->files); ?>
</div>
<input type="radio" id="c-tab-4" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-4' ? ' checked' : ''; ?>>
<div class="tab">
<?= $this->data['vehicle-notes']->render('vehicle-notes', '', $vehicle->notes); ?>
<?= $this->data['equipment-notes']->render('equipment-notes', '', $equipment->notes); ?>
</div>
<input type="radio" id="c-tab-5" name="tabular-2"<?= $this->request->uri->fragment === 'c-tab-5' ? ' checked' : ''; ?>>
<div class="tab">
<div class="row">
<a class="button" href="<?= UriFactory::build('{/app}/fleet/inspection/create?vehicle=' . $vehicle->id) ?>"><?= $this->getHtml('Create', '0', '0'); ?></a>
<a class="button" href="<?= UriFactory::build('{/app}/fleet/inspection/create?equipment=' . $equipment->id) ?>"><?= $this->getHtml('Create', '0', '0'); ?></a>
</div>
<div class="row">
<div class="col-xs-12 col-md-6">

View File

@ -1,100 +0,0 @@
<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\ClientManagement
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
use phpOMS\Uri\UriFactory;
/** @var \phpOMS\Views\View $this */
$vehicles = $this->data['vehicles'] ?? [];
echo $this->data['nav']->render(); ?>
<div class="row">
<div class="col-xs-12">
<section class="portlet">
<div class="portlet-head"><?= $this->getHtml('Vehicles'); ?><i class="lni lni-download download btn end-xs"></i></div>
<div class="slider">
<table id="iSalesClientList" class="default sticky">
<thead>
<tr>
<td>
<td><?= $this->getHtml('ID', '0', '0'); ?>
<label for="iSalesClientList-sort-1">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-1">
<i class="sort-asc fa fa-chevron-up"></i>
</label>
<label for="iSalesClientList-sort-2">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-2">
<i class="sort-desc fa fa-chevron-down"></i>
</label>
<label>
<i class="filter fa fa-filter"></i>
</label>
<td><?= $this->getHtml('Status'); ?>
<label for="iSalesClientList-sort-3">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-3">
<i class="sort-asc fa fa-chevron-up"></i>
</label>
<label for="iSalesClientList-sort-4">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-4">
<i class="sort-desc fa fa-chevron-down"></i>
</label>
<label>
<i class="filter fa fa-filter"></i>
</label>
<td class="wf-100"><?= $this->getHtml('Name'); ?>
<label for="iSalesClientList-sort-5">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-5">
<i class="sort-asc fa fa-chevron-up"></i>
</label>
<label for="iSalesClientList-sort-6">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-6">
<i class="sort-desc fa fa-chevron-down"></i>
</label>
<label>
<i class="filter fa fa-filter"></i>
</label>
<td><?= $this->getHtml('Type'); ?>
<label for="iSalesClientList-sort-7">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-7">
<i class="sort-asc fa fa-chevron-up"></i>
</label>
<label for="iSalesClientList-sort-8">
<input type="radio" name="iSalesClientList-sort" id="iSalesClientList-sort-8">
<i class="sort-desc fa fa-chevron-down"></i>
</label>
<label>
<i class="filter fa fa-filter"></i>
</label>
<tbody>
<?php
$count = 0;
foreach ($vehicles as $key => $value) :
++$count;
$url = UriFactory::build('{/base}/fleet/vehicle/profile?{?}&id=' . $value->id);
?>
<tr data-href="<?= $url; ?>">
<td>
<td data-label="<?= $this->getHtml('ID', '0', '0'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml((string) $value->id); ?></a>
<td data-label="<?= $this->getHtml('Status'); ?>"><a href="<?= $url; ?>"><?= $this->getHtml(':status' . $value->status); ?></a>
<td data-label="<?= $this->getHtml('Name'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->name); ?></a>
<td data-label="<?= $this->getHtml('Type'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->type->getL11n()); ?></a>
<?php endforeach; ?>
<?php if ($count === 0) : ?>
<tr><td colspan="8" class="empty"><?= $this->getHtml('Empty', '0', '0'); ?>
<?php endif; ?>
</table>
</div>
</section>
</div>
</div>

View File

@ -1,10 +1,10 @@
{
"name": {
"id": 1003500000,
"internal": "FleetManagement",
"external": "Fleet Management"
"id": 1008400000,
"internal": "EquipmentManagement",
"external": "Equipment Management"
},
"category": "Fleet",
"category": "Equipment",
"version": "1.0.0",
"requirements": {
"phpOMS": "1.0.0",
@ -15,7 +15,7 @@
"website": "jingga.app"
},
"description": "The buisness module.",
"directory": "FleetManagement",
"directory": "EquipmentManagement",
"dependencies": {
"Admin": "1.0.0",
"Profile": "1.0.0",
@ -29,19 +29,19 @@
"load": [
{
"pid": [
"/fleet"
"/equipment"
],
"type": 4,
"for": 0,
"from": "FleetManagement",
"file": "FleetManagement"
"from": "EquipmentManagement",
"file": "EquipmentManagement"
},
{
"pid": [
"/"
],
"type": 5,
"from": "FleetManagement",
"from": "EquipmentManagement",
"for": "Navigation",
"file": "Navigation"
}

View File

@ -12,14 +12,14 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\tests\Admin;
namespace Modules\EquipmentManagement\tests\Admin;
/**
* @internal
*/
final class AdminTest extends \PHPUnit\Framework\TestCase
{
protected const NAME = 'FleetManagement';
protected const NAME = 'EquipmentManagement';
protected const URI_LOAD = '';

View File

@ -12,7 +12,7 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\tests\Controller;
namespace Modules\EquipmentManagement\tests\Controller;
use Model\CoreSettings;
use Modules\Admin\Models\AccountPermission;
@ -30,7 +30,7 @@ use phpOMS\Router\WebRouter;
use phpOMS\Utils\TestUtils;
/**
* @testdox Modules\FleetManagement\tests\Controller\ApiControllerTest: FleetManagement api controller
* @testdox Modules\EquipmentManagement\tests\Controller\ApiControllerTest: EquipmentManagement api controller
*
* @internal
*/
@ -39,7 +39,7 @@ final class ApiControllerTest extends \PHPUnit\Framework\TestCase
protected ApplicationAbstract $app;
/**
* @var \Modules\FleetManagement\Controller\ApiController
* @var \Modules\EquipmentManagement\Controller\ApiController
*/
protected ModuleAbstract $module;
@ -83,7 +83,7 @@ final class ApiControllerTest extends \PHPUnit\Framework\TestCase
$this->app->accountManager->add($account);
$this->app->router = new WebRouter();
$this->module = $this->app->moduleManager->get('FleetManagement');
$this->module = $this->app->moduleManager->get('EquipmentManagement');
TestUtils::setMember($this->module, 'app', $this->app);
}

View File

@ -12,9 +12,9 @@
*/
declare(strict_types=1);
namespace Modules\FleetManagement\Models;
namespace Modules\EquipmentManagement\Models;
class Vehicle
class Equipment
{
public int $id = 0;
}