mirror of
https://github.com/Karaka-Management/oms-FleetManagement.git
synced 2026-01-25 11:08:41 +00:00
update
This commit is contained in:
parent
c655c739b1
commit
733386df2d
|
|
@ -140,7 +140,7 @@
|
|||
"type": 3,
|
||||
"subtype": 1,
|
||||
"name": "VehicleInspectionTypes",
|
||||
"uri": "{/base}/fleet/vehicle/inspection/type/list?{?}",
|
||||
"uri": "{/base}/fleet/inspection/type/list?{?}",
|
||||
"target": "self",
|
||||
"icon": null,
|
||||
"order": 5,
|
||||
|
|
@ -148,21 +148,6 @@
|
|||
"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,
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
|||
|
|
@ -225,7 +225,7 @@
|
|||
},
|
||||
"fleetmgmt_vehicle_inspection_interval": {
|
||||
"name": "fleetmgmt_vehicle_inspection_interval",
|
||||
"type": "TINYINT(3)",
|
||||
"type": "INT",
|
||||
"null": false
|
||||
},
|
||||
"fleetmgmt_vehicle_inspection_next": {
|
||||
|
|
@ -234,12 +234,25 @@
|
|||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"fleetmgmt_vehicle_inspection_date": {
|
||||
"name": "fleetmgmt_vehicle_inspection_date",
|
||||
"type": "DATETIME",
|
||||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"fleetmgmt_vehicle_inspection_type": {
|
||||
"name": "fleetmgmt_vehicle_inspection_type",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"foreignTable": "fleetmgmt_inspection_type",
|
||||
"foreignKey": "fleetmgmt_inspection_type_id"
|
||||
},
|
||||
"fleetmgmt_vehicle_inspection_vehicle": {
|
||||
"name": "fleetmgmt_vehicle_inspection_vehicle",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"foreignTable": "fleetmgmt_vehicle",
|
||||
"foreignKey": "fleetmgmt_vehicle_id"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -338,7 +351,7 @@
|
|||
},
|
||||
"fleetmgmt_driver_inspection_interval": {
|
||||
"name": "fleetmgmt_driver_inspection_interval",
|
||||
"type": "TINYINT(3)",
|
||||
"type": "INT",
|
||||
"null": false
|
||||
},
|
||||
"fleetmgmt_driver_inspection_next": {
|
||||
|
|
@ -347,12 +360,25 @@
|
|||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"fleetmgmt_driver_inspection_date": {
|
||||
"name": "fleetmgmt_driver_inspection_date",
|
||||
"type": "DATETIME",
|
||||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"fleetmgmt_driver_inspection_type": {
|
||||
"name": "fleetmgmt_driver_inspection_type",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"foreignTable": "fleetmgmt_driver_inspection_type",
|
||||
"foreignKey": "fleetmgmt_driver_inspection_type_id"
|
||||
},
|
||||
"fleetmgmt_driver_inspection_driver": {
|
||||
"name": "fleetmgmt_driver_inspection_driver",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"foreignTable": "fleetmgmt_driver",
|
||||
"foreignKey": "fleetmgmt_driver_id"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -957,5 +983,64 @@
|
|||
"foreignKey": "editor_doc_id"
|
||||
}
|
||||
}
|
||||
},
|
||||
"fleetmgmt_milage": {
|
||||
"name": "fleetmgmt_milage",
|
||||
"fields": {
|
||||
"fleetmgmt_milage_id": {
|
||||
"name": "fleetmgmt_milage_id",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"primary": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"fleetmgmt_milage_status": {
|
||||
"name": "fleetmgmt_milage_status",
|
||||
"type": "TINYINT(1)",
|
||||
"null": false
|
||||
},
|
||||
"fleetmgmt_milage_description": {
|
||||
"name": "fleetmgmt_milage_description",
|
||||
"type": "TEXT",
|
||||
"null": false
|
||||
},
|
||||
"fleetmgmt_milage_start": {
|
||||
"name": "fleetmgmt_milage_start",
|
||||
"type": "DATETIME",
|
||||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"fleetmgmt_milage_end": {
|
||||
"name": "fleetmgmt_milage_end",
|
||||
"type": "DATETIME",
|
||||
"null": true,
|
||||
"default": null
|
||||
},
|
||||
"fleetmgmt_milage_milage": {
|
||||
"name": "fleetmgmt_milage_milage",
|
||||
"type": "INT",
|
||||
"null": false
|
||||
},
|
||||
"fleetmgmt_milage_fuel": {
|
||||
"name": "fleetmgmt_milage_fuel",
|
||||
"type": "INT",
|
||||
"null": false
|
||||
},
|
||||
"fleetmgmt_milage_driver": {
|
||||
"name": "fleetmgmt_milage_driver",
|
||||
"type": "INT",
|
||||
"null": true,
|
||||
"default": null,
|
||||
"foreignTable": "fleetmgmt_driver",
|
||||
"foreignKey": "fleetmgmt_driver_id"
|
||||
},
|
||||
"fleetmgmt_milage_vehicle": {
|
||||
"name": "fleetmgmt_milage_vehicle",
|
||||
"type": "INT",
|
||||
"null": false,
|
||||
"foreignTable": "fleetmgmt_vehicle",
|
||||
"foreignKey": "fleetmgmt_vehicle_id"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -134,7 +134,18 @@ return [
|
|||
|
||||
'^.*/fleet/inspection/list.*$' => [
|
||||
[
|
||||
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementVehicleList',
|
||||
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementInspectionList',
|
||||
'verb' => RouteVerb::GET,
|
||||
'permission' => [
|
||||
'module' => BackendController::NAME,
|
||||
'type' => PermissionType::READ,
|
||||
'state' => PermissionCategory::VEHICLE,
|
||||
],
|
||||
],
|
||||
],
|
||||
'^.*/fleet/inspection/type/list.*$' => [
|
||||
[
|
||||
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementInspectionTypeList',
|
||||
'verb' => RouteVerb::GET,
|
||||
'permission' => [
|
||||
'module' => BackendController::NAME,
|
||||
|
|
@ -145,7 +156,7 @@ return [
|
|||
],
|
||||
'^.*/fleet/inspection/create.*$' => [
|
||||
[
|
||||
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementVehicleCreate',
|
||||
'dest' => '\Modules\FleetManagement\Controller\BackendController:viewFleetManagementInspectionCreate',
|
||||
'verb' => RouteVerb::GET,
|
||||
'permission' => [
|
||||
'module' => BackendController::NAME,
|
||||
|
|
|
|||
|
|
@ -18,8 +18,11 @@ 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\DriverInspectionMapper;
|
||||
use Modules\FleetManagement\Models\Driver\DriverMapper;
|
||||
use Modules\FleetManagement\Models\Driver\DriverStatus;
|
||||
use Modules\FleetManagement\Models\Inspection;
|
||||
use Modules\FleetManagement\Models\InspectionStatus;
|
||||
use Modules\Media\Models\CollectionMapper;
|
||||
use Modules\Media\Models\MediaMapper;
|
||||
use Modules\Media\Models\NullMedia;
|
||||
|
|
@ -29,6 +32,7 @@ use Modules\Media\Models\ReferenceMapper;
|
|||
use phpOMS\Localization\BaseStringL11n;
|
||||
use phpOMS\Localization\BaseStringL11nType;
|
||||
use phpOMS\Localization\ISO639x1Enum;
|
||||
use phpOMS\Localization\NullBaseStringL11nType;
|
||||
use phpOMS\Message\Http\RequestStatusCode;
|
||||
use phpOMS\Message\NotificationLevel;
|
||||
use phpOMS\Message\RequestAbstract;
|
||||
|
|
@ -44,6 +48,76 @@ use phpOMS\Message\ResponseAbstract;
|
|||
*/
|
||||
final class ApiDriverController extends Controller
|
||||
{
|
||||
/**
|
||||
* 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 apiInspectionCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
|
||||
{
|
||||
if (!empty($val = $this->validateInspectionCreate($request))) {
|
||||
$response->header->status = RequestStatusCode::R_400;
|
||||
$this->createInvalidCreateResponse($request, $response, $val);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/** @var \Modules\FleetManagement\Models\DriverInspection $inspection */
|
||||
$inspection = $this->createInspectionFromRequest($request);
|
||||
$this->createModel($request->header->account, $inspection, DriverInspectionMapper::class, 'inspection', $request->getOrigin());
|
||||
$this->createStandardCreateResponse($request, $response, $inspection);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to create vehicle from request.
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
*
|
||||
* @return Inspection Returns the created vehicle from the request
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function createInspectionFromRequest(RequestAbstract $request) : Inspection
|
||||
{
|
||||
$inspection = new Inspection();
|
||||
$inspection->reference = (int) $request->getData('ref');
|
||||
$inspection->description = $request->getDataString('description') ?? '';
|
||||
$inspection->status = (int) $request->getDataInt('status') ?? InspectionStatus::TODO;
|
||||
$inspection->next = $request->getDataDateTime('next') ?? null;
|
||||
$inspection->date = $request->getDataDateTime('date') ?? null;
|
||||
$inspection->interval = $request->getDataInt('interval') ?? 0;
|
||||
$inspection->type = new NullBaseStringL11nType((int) $request->getData('type'));
|
||||
|
||||
return $inspection;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate vehicle create request
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
*
|
||||
* @return array<string, bool> Returns the validation array of the request
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private function validateInspectionCreate(RequestAbstract $request) : array
|
||||
{
|
||||
$val = [];
|
||||
if (($val['ref'] = !$request->hasData('ref'))) {
|
||||
return $val;
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Api method to create a driver
|
||||
*
|
||||
|
|
@ -92,7 +166,7 @@ final class ApiDriverController extends Controller
|
|||
{
|
||||
$driver = new Driver();
|
||||
$driver->account = new NullAccount($request->getDataInt('account') ?? 1);
|
||||
$driver->status = (int) ($request->getDataInt('status') ?? DriverStatus::INACTIVE);
|
||||
$driver->status = $request->getDataInt('status') ?? DriverStatus::INACTIVE;
|
||||
|
||||
return $driver;
|
||||
}
|
||||
|
|
@ -267,7 +341,7 @@ final class ApiDriverController extends Controller
|
|||
virtualPath: $path,
|
||||
pathSettings: PathSettings::FILE_PATH,
|
||||
hasAccountRelation: false,
|
||||
readContent: (bool) ($request->getData('parse_content') ?? false)
|
||||
readContent: $request->getDataBool('parse_content') ?? false
|
||||
);
|
||||
|
||||
$collection = null;
|
||||
|
|
|
|||
|
|
@ -15,10 +15,16 @@ declare(strict_types=1);
|
|||
namespace Modules\FleetManagement\Controller;
|
||||
|
||||
use Modules\Admin\Models\NullAccount;
|
||||
use Modules\FleetManagement\Models\Driver\NullDriver;
|
||||
use Modules\FleetManagement\Models\InspectionStatus;
|
||||
use Modules\FleetManagement\Models\FuelTypeL11nMapper;
|
||||
use Modules\FleetManagement\Models\FuelTypeMapper;
|
||||
use Modules\FleetManagement\Models\Inspection;
|
||||
use Modules\FleetManagement\Models\InspectionMapper;
|
||||
use Modules\FleetManagement\Models\InspectionTypeL11nMapper;
|
||||
use Modules\FleetManagement\Models\InspectionTypeMapper;
|
||||
use Modules\FleetManagement\Models\Milage;
|
||||
use Modules\FleetManagement\Models\MilageMapper;
|
||||
use Modules\FleetManagement\Models\Vehicle;
|
||||
use Modules\FleetManagement\Models\VehicleMapper;
|
||||
use Modules\FleetManagement\Models\VehicleStatus;
|
||||
|
|
@ -49,6 +55,149 @@ use phpOMS\Message\ResponseAbstract;
|
|||
*/
|
||||
final class ApiVehicleController extends Controller
|
||||
{
|
||||
/**
|
||||
* 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 apiMilageCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
|
||||
{
|
||||
if (!empty($val = $this->validateMilageCreate($request))) {
|
||||
$response->header->status = RequestStatusCode::R_400;
|
||||
$this->createInvalidCreateResponse($request, $response, $val);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/** @var \Modules\FleetManagement\Models\Milage $milage */
|
||||
$milage = $this->createMilageFromRequest($request);
|
||||
$this->createModel($request->header->account, $milage, MilageMapper::class, 'milage', $request->getOrigin());
|
||||
$this->createStandardCreateResponse($request, $response, $milage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to create vehicle from request.
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
*
|
||||
* @return Milage Returns the created vehicle from the request
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function createMilageFromRequest(RequestAbstract $request) : Milage
|
||||
{
|
||||
$milage = new Milage();
|
||||
$milage->vehicle = (int) $request->getData('vehicle');
|
||||
$milage->driver = $request->hasData('driver') ? new NullDriver((int) $request->getData('driver')) : null;
|
||||
$milage->milage = $request->getDataInt('milage') ?? 0;
|
||||
$milage->status = $request->getDataInt('status') ?? 0;
|
||||
$milage->fuelUsage = $request->getDataInt('fuel') ?? 0;
|
||||
$milage->description = $request->getDataString('description') ?? '';
|
||||
$milage->from = $request->getDataString('from') ?? '';
|
||||
$milage->to = $request->getDataString('to') ?? '';
|
||||
$milage->start = $request->getDataDateTime('start');
|
||||
$milage->end = $request->getDataDateTime('end');
|
||||
|
||||
return $milage;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 validateMilageCreate(RequestAbstract $request) : array
|
||||
{
|
||||
$val = [];
|
||||
if (($val['vehicle'] = !$request->hasData('vehicle'))) {
|
||||
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 apiInspectionCreate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
|
||||
{
|
||||
if (!empty($val = $this->validateInspectionCreate($request))) {
|
||||
$response->header->status = RequestStatusCode::R_400;
|
||||
$this->createInvalidCreateResponse($request, $response, $val);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/** @var \Modules\FleetManagement\Models\Inspection $inspection */
|
||||
$inspection = $this->createInspectionFromRequest($request);
|
||||
$this->createModel($request->header->account, $inspection, InspectionMapper::class, 'inspection', $request->getOrigin());
|
||||
$this->createStandardCreateResponse($request, $response, $inspection);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to create vehicle from request.
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
*
|
||||
* @return Inspection Returns the created vehicle from the request
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function createInspectionFromRequest(RequestAbstract $request) : Inspection
|
||||
{
|
||||
$inspection = new Inspection();
|
||||
$inspection->reference = (int) $request->getData('ref');
|
||||
$inspection->description = $request->getDataString('description') ?? '';
|
||||
$inspection->status = (int) $request->getDataInt('status') ?? InspectionStatus::TODO;
|
||||
$inspection->next = $request->getDataDateTime('next') ?? null;
|
||||
$inspection->date = $request->getDataDateTime('date') ?? null;
|
||||
$inspection->interval = $request->getDataInt('interval') ?? 0;
|
||||
$inspection->type = new NullBaseStringL11nType((int) $request->getData('type'));
|
||||
|
||||
return $inspection;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate vehicle create request
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
*
|
||||
* @return array<string, bool> Returns the validation array of the request
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private function validateInspectionCreate(RequestAbstract $request) : array
|
||||
{
|
||||
$val = [];
|
||||
if (($val['ref'] = !$request->hasData('ref'))) {
|
||||
return $val;
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Api method to create a vehicle
|
||||
*
|
||||
|
|
@ -372,7 +521,7 @@ final class ApiVehicleController extends Controller
|
|||
$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->status = $request->getDataInt('status') ?? VehicleStatus::INACTIVE;
|
||||
$vehicle->unit = $request->getDataInt('unit') ?? $this->app->unitId;
|
||||
|
||||
return $vehicle;
|
||||
|
|
@ -549,7 +698,7 @@ final class ApiVehicleController extends Controller
|
|||
virtualPath: $path,
|
||||
pathSettings: PathSettings::FILE_PATH,
|
||||
hasAccountRelation: false,
|
||||
readContent: (bool) ($request->getData('parse_content') ?? false)
|
||||
readContent: $request->getDataBool('parse_content') ?? false
|
||||
);
|
||||
|
||||
$collection = null;
|
||||
|
|
@ -853,7 +1002,7 @@ final class ApiVehicleController extends Controller
|
|||
}
|
||||
|
||||
/**
|
||||
* Api method to update note
|
||||
* Api method to update Note
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
|
|
@ -865,17 +1014,28 @@ final class ApiVehicleController extends Controller
|
|||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function apiNoteEdit(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
|
||||
public function apiNoteUpdate(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
|
||||
{
|
||||
$this->app->moduleManager->get('Editor', 'Api')->apiEditorUpdate($request, $response, $data);
|
||||
// @todo: check permissions
|
||||
$this->app->moduleManager->get('Editor', 'Api')->apiEditorDocUpdate($request, $response, $data);
|
||||
}
|
||||
|
||||
if ($response->header->status !== RequestStatusCode::R_200) {
|
||||
return;
|
||||
}
|
||||
|
||||
$responseData = $response->get($request->uri->__toString());
|
||||
if (!\is_array($responseData)) {
|
||||
return;
|
||||
}
|
||||
/**
|
||||
* Api method to delete Note
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param mixed $data Generic data
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function apiNoteDelete(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : void
|
||||
{
|
||||
// @todo: check permissions
|
||||
$this->app->moduleManager->get('Editor', 'Api')->apiEditorDocDelete($request, $response, $data);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,8 +16,10 @@ namespace Modules\FleetManagement\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\InspectionMapper;
|
||||
use Modules\FleetManagement\Models\Attribute\VehicleAttributeTypeL11nMapper;
|
||||
use Modules\FleetManagement\Models\Attribute\VehicleAttributeTypeMapper;
|
||||
use Modules\FleetManagement\Models\Driver\DriverMapper;
|
||||
use Modules\FleetManagement\Models\VehicleMapper;
|
||||
use Modules\FleetManagement\Models\VehicleTypeMapper;
|
||||
use Modules\Media\Models\MediaMapper;
|
||||
|
|
@ -129,6 +131,34 @@ final class BackendController extends Controller
|
|||
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 viewFleetManagementInspectionList(RequestAbstract $request, ResponseAbstract $response, mixed $data = null) : RenderableInterface
|
||||
{
|
||||
$view = new View($this->app->l11nManager, $request, $response);
|
||||
|
||||
$view->setTemplate('/Modules/FleetManagement/Theme/Backend/inspection-list');
|
||||
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1003502001, $request, $response);
|
||||
|
||||
$list = InspectionMapper::getAll()
|
||||
->sort('id', 'DESC')
|
||||
->execute();
|
||||
|
||||
$view->data['inspectionss'] = $list;
|
||||
|
||||
return $view;
|
||||
}
|
||||
|
||||
/**
|
||||
* Routing end-point for application behaviour.
|
||||
*
|
||||
|
|
@ -236,6 +266,15 @@ final class BackendController extends Controller
|
|||
|
||||
$view->data['vehicle'] = $vehicle;
|
||||
|
||||
$inspections = InspectionMapper::getAll()
|
||||
->with('type')
|
||||
->with('type/l11n')
|
||||
->where('reference', $vehicle->id)
|
||||
->where('type/l11n/language', $response->header->l11n->language)
|
||||
->execute();
|
||||
|
||||
$view->data['inspections'] = $inspections;
|
||||
|
||||
$query = new Builder($this->app->dbPool->get());
|
||||
$results = $query->selectAs(VehicleMapper::HAS_MANY['files']['external'], 'file')
|
||||
->from(VehicleMapper::TABLE)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -14,8 +14,8 @@ declare(strict_types=1);
|
|||
|
||||
namespace Modules\FleetManagement\Models\Driver;
|
||||
|
||||
use Modules\FleetManagement\Models\Inspection;
|
||||
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
|
||||
use phpOMS\Localization\BaseStringL11n;
|
||||
|
||||
/**
|
||||
* mapper class.
|
||||
|
|
@ -25,7 +25,7 @@ use phpOMS\Localization\BaseStringL11n;
|
|||
* @link https://jingga.app
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @template T of DriverInspection
|
||||
* @template T of Inspection
|
||||
* @extends DataMapperFactory<T>
|
||||
*/
|
||||
final class DriverInspectionMapper extends DataMapperFactory
|
||||
|
|
@ -38,10 +38,12 @@ final class DriverInspectionMapper extends DataMapperFactory
|
|||
*/
|
||||
public const COLUMNS = [
|
||||
'fleetmgmt_driver_inspection_id' => ['name' => 'fleetmgmt_driver_inspection_id', 'type' => 'int', 'internal' => 'id'],
|
||||
'fleetmgmt_driver_inspection_driver' => ['name' => 'fleetmgmt_driver_inspection_driver', 'type' => 'int', 'internal' => 'reference'],
|
||||
'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_date' => ['name' => 'fleetmgmt_driver_inspection_date', 'type' => 'DateTime', 'internal' => 'date'],
|
||||
'fleetmgmt_driver_inspection_type' => ['name' => 'fleetmgmt_driver_inspection_type', 'type' => 'int', 'internal' => 'type'],
|
||||
];
|
||||
|
||||
|
|
@ -80,5 +82,5 @@ final class DriverInspectionMapper extends DataMapperFactory
|
|||
* @var class-string<T>
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public const MODEL = DriverInspection::class;
|
||||
public const MODEL = Inspection::class;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -18,6 +18,7 @@ use Modules\Admin\Models\AccountMapper;
|
|||
use Modules\Media\Models\MediaMapper;
|
||||
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
|
||||
use Modules\Editor\Models\EditorDocMapper;
|
||||
use Modules\FleetManagement\Models\Attribute\DriverAttributeMapper;
|
||||
|
||||
/**
|
||||
* Mapper class.
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ declare(strict_types=1);
|
|||
|
||||
namespace Modules\FleetManagement\Models;
|
||||
|
||||
use Modules\Admin\Models\Account;
|
||||
use phpOMS\Localization\BaseStringL11nType;
|
||||
|
||||
/**
|
||||
|
|
@ -38,14 +39,25 @@ class Inspection implements \JsonSerializable
|
|||
// Alternatively define default interval from inspection type?
|
||||
public ?\DateTime $next = null;
|
||||
|
||||
public ?\DateTime $date = null;
|
||||
|
||||
/**
|
||||
* Inspectio interval in months
|
||||
* Inspection duration in hours
|
||||
*/
|
||||
public int $duration = 0;
|
||||
|
||||
/**
|
||||
* Inspection interval in months
|
||||
*
|
||||
* @var int
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public int $interval = 0;
|
||||
|
||||
public int $reference = 0;
|
||||
|
||||
public ?Account $responsible = null;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ use phpOMS\Localization\BaseStringL11n;
|
|||
* @link https://jingga.app
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @template T of BaseStringL11n
|
||||
* @template T of Inspection
|
||||
* @extends DataMapperFactory<T>
|
||||
*/
|
||||
final class InspectionMapper extends DataMapperFactory
|
||||
|
|
@ -38,10 +38,12 @@ final class InspectionMapper extends DataMapperFactory
|
|||
*/
|
||||
public const COLUMNS = [
|
||||
'fleetmgmt_vehicle_inspection_id' => ['name' => 'fleetmgmt_vehicle_inspection_id', 'type' => 'int', 'internal' => 'id'],
|
||||
'fleetmgmt_vehicle_inspection_vehicle' => ['name' => 'fleetmgmt_vehicle_inspection_vehicle', 'type' => 'int', 'internal' => 'reference'],
|
||||
'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_date' => ['name' => 'fleetmgmt_vehicle_inspection_date', 'type' => 'DateTime', 'internal' => 'date'],
|
||||
'fleetmgmt_vehicle_inspection_type' => ['name' => 'fleetmgmt_vehicle_inspection_type', 'type' => 'int', 'internal' => 'type'],
|
||||
];
|
||||
|
||||
|
|
|
|||
75
Models/Milage.php
Normal file
75
Models/Milage.php
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
<?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\FleetManagement\Models\Driver\Driver;
|
||||
|
||||
/**
|
||||
* Milage class.
|
||||
*
|
||||
* @package Modules\Attribute\Models
|
||||
* @license OMS License 2.0
|
||||
* @link https://jingga.app
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class Milage implements \JsonSerializable
|
||||
{
|
||||
public int $id = 0;
|
||||
|
||||
public int $vehicle = 0;
|
||||
public ?Driver $driver = null;
|
||||
|
||||
public ?\DateTime $start = null;
|
||||
public ?\DateTime $end = null;
|
||||
|
||||
public string $from = '';
|
||||
public string $to = '';
|
||||
|
||||
/**
|
||||
* Milage in km
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public int $milage = 0;
|
||||
|
||||
/**
|
||||
* Fuel usage in l
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public int $fuelUsage = 0;
|
||||
|
||||
public string $description = '';
|
||||
|
||||
public int $status = 0;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function toArray() : array
|
||||
{
|
||||
return [
|
||||
'id' => $this->id,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function jsonSerialize() : mixed
|
||||
{
|
||||
return $this->toArray();
|
||||
}
|
||||
}
|
||||
91
Models/MilageMapper.php
Normal file
91
Models/MilageMapper.php
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
<?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\FleetManagement\Models\Driver\DriverMapper;
|
||||
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
|
||||
|
||||
/**
|
||||
* mapper class.
|
||||
*
|
||||
* @package Modules\FleetManagement\Models
|
||||
* @license OMS License 2.0
|
||||
* @link https://jingga.app
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @template T of Milage
|
||||
* @extends DataMapperFactory<T>
|
||||
*/
|
||||
final class MilageMapper 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_milage_id' => ['name' => 'fleetmgmt_milage_id', 'type' => 'int', 'internal' => 'id'],
|
||||
'fleetmgmt_milage_description' => ['name' => 'fleetmgmt_milage_description', 'type' => 'string', 'internal' => 'description'],
|
||||
'fleetmgmt_milage_status' => ['name' => 'fleetmgmt_milage_status', 'type' => 'int', 'internal' => 'status'],
|
||||
'fleetmgmt_milage_driver' => ['name' => 'fleetmgmt_milage_driver', 'type' => 'int', 'internal' => 'driver'],
|
||||
'fleetmgmt_milage_vehicle' => ['name' => 'fleetmgmt_milage_vehicle', 'type' => 'int', 'internal' => 'vehicle'],
|
||||
'fleetmgmt_milage_start' => ['name' => 'fleetmgmt_milage_start', 'type' => 'DateTime', 'internal' => 'start'],
|
||||
'fleetmgmt_milage_end' => ['name' => 'fleetmgmt_milage_end', 'type' => 'DateTime', 'internal' => 'end'],
|
||||
'fleetmgmt_milage_milage' => ['name' => 'fleetmgmt_milage_milage', 'type' => 'int', 'internal' => 'milage'],
|
||||
'fleetmgmt_milage_fuel' => ['name' => 'fleetmgmt_milage_fuel', 'type' => 'int', 'internal' => 'fuelUsage'],
|
||||
];
|
||||
|
||||
/**
|
||||
* 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 = [
|
||||
'driver' => [
|
||||
'mapper' => DriverMapper::class,
|
||||
'external' => 'fleetmgmt_milage_driver',
|
||||
],
|
||||
'vehicle' => [
|
||||
'mapper' => VehicleMapper::class,
|
||||
'external' => 'fleetmgmt_milage_vehicle',
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
* Primary table.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public const TABLE = 'fleetmgmt_milage';
|
||||
|
||||
/**
|
||||
* Primary field name.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public const PRIMARYFIELD = 'fleetmgmt_milage_id';
|
||||
|
||||
/**
|
||||
* Model to use by the mapper.
|
||||
*
|
||||
* @var class-string<T>
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public const MODEL = Milage::class;
|
||||
}
|
||||
|
|
@ -22,7 +22,7 @@ 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('Drivers'); ?><i class="lni lni-download download btn end-xs"></i></div>
|
||||
<div class="slider">
|
||||
<table id="iSalesClientList" class="default sticky">
|
||||
<thead>
|
||||
|
|
|
|||
|
|
@ -179,10 +179,12 @@ echo $this->data['nav']->render();
|
|||
<td class="wf-100"><?= $this->getHtml('Type'); ?>
|
||||
<td><?= $this->getHtml('Responsible'); ?>
|
||||
<tbody>
|
||||
<?php foreach ($this->data['inspections'] as $inspection) : ?>
|
||||
<tr>
|
||||
<td><?= $inspection->next?->format('Y-m-d H:i') ?>
|
||||
<td><?= $this->printHtml($inspection->type->getL11n()); ?>
|
||||
<td>
|
||||
<td>
|
||||
<td>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
</section>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -71,14 +71,12 @@ final class Autoloader
|
|||
*
|
||||
* @return void
|
||||
*
|
||||
* @throws AutoloadException Throws this exception if the class to autoload doesn't exist. This could also be related to a wrong namespace/file path correlation.
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public static function defaultAutoloader(string $class) : void
|
||||
{
|
||||
$class = \ltrim($class, '\\');
|
||||
$class = \str_replace(['_', '\\'], '/', $class);
|
||||
$class = \strtr($class, '_\\', '//');
|
||||
|
||||
foreach (self::$paths as $path) {
|
||||
$file = $path . $class . '.php';
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user