This commit is contained in:
Dennis Eichhorn 2023-06-09 17:36:44 +00:00
commit f3ff7eec1f
5 changed files with 70 additions and 5 deletions

View File

@ -548,8 +548,8 @@
"primary": true,
"autoincrement": true
},
"fleetmgmt_vehicle_note_item": {
"name": "fleetmgmt_vehicle_note_item",
"fleetmgmt_vehicle_note_vehicle": {
"name": "fleetmgmt_vehicle_note_vehicle",
"type": "INT",
"null": false,
"foreignTable": "fleetmgmt_vehicle",

View File

@ -1323,4 +1323,62 @@ final class ApiController extends Controller
return [];
}
/**
* Api method to create item files
*
* @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['vehicle_note_create'] = new FormValidation($val);
$response->header->status = RequestStatusCode::R_400;
return;
}
$request->setData('virtualpath', '/Modules/FleetManagement/Items/' . $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, VehicleMapper::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 [];
}
}

View File

@ -187,6 +187,7 @@ final class BackendController extends Controller
$view->setTemplate('/Modules/FleetManagement/Theme/Backend/vehicle-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()
->with('attributes')
->with('attributes/type')

View File

@ -44,8 +44,6 @@ class Vehicle implements \JsonSerializable
public array $milage = [];
public array $notes = [];
public int $unit = 0;
public ?int $responsible = null;
@ -76,7 +74,8 @@ class Vehicle implements \JsonSerializable
{
return $this->toArray();
}
use \Modules\Media\Models\MediaListTrait;
use \Modules\Editor\Models\EditorDocListTrait;
use \Modules\Attribute\Models\AttributeHolderTrait;
}

View File

@ -16,6 +16,7 @@ namespace Modules\FleetManagement\Models;
use Modules\Media\Models\MediaMapper;
use phpOMS\DataStorage\Database\Mapper\DataMapperFactory;
use Modules\Editor\Models\EditorDocMapper;
/**
* Mapper class.
@ -67,6 +68,12 @@ final class VehicleMapper extends DataMapperFactory
'self' => 'fleetmgmt_vehicle_attr_item',
'external' => null,
],
'notes' => [
'mapper' => EditorDocMapper::class, /* mapper of the related object */
'table' => 'bizexpenses_expense_note', /* table of the related object, null if no relation table is used (many->1) */
'external' => 'bizexpenses_expense_note_doc',
'self' => 'bizexpenses_expense_note_expense',
],
];
/**