| Server IP : 37.9.174.138 / Your IP : 216.73.216.117 Web Server : Apache System : Linux vps6.backend.sk 6.12.100+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.100-1 (2026-07-30) x86_64 User : ftpuser ( 1001) PHP Version : 8.4.24 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/html/backend-accounting.sk/app/modules/logbook/api/ |
Upload File : |
<?php
namespace modules\logbook\api;
use modules\logbook\code\Event;
use modules\logbook\code\LogbookRequestContactEmailResolver;
use modules\logbook\code\LogbookRequestService;
use modules\logbook\code\LogbookRequestTypeRegistry;
use modules\logbook\code\LogbookUser;
/**
* Authenticated endpoints for sending client data requests (non-customers only).
*/
class Requests extends \app\classes\ApiClass {
/** @var LogbookUser */
private $user;
/** @var LogbookRequestService */
private $requestService;
public function __construct() {
parent::__construct();
$this->user = LogbookUser::getLoggedUser();
$this->requestService = new LogbookRequestService();
}
/**
* @includeInDoc false
* @requestMethod "POST"
* @RequiredPostParameters ["id"]
* @VerifyPermissions []
*/
public function getVehicleRequestFormData() {
$this->requestService->assertCanSendRequests();
$company = $this->user->getCompany((int) $this->urlReader->getUrlParam(5));
$vehicle = $company->getVehicle((int) $this->urlReader->getPost('id'));
$handler = LogbookRequestTypeRegistry::vehicle();
$vehicleModel = trim((string) $vehicle->_get('model'));
if ($vehicleModel === '') {
$vehicleModel = trim((string) $vehicle->_get('name'));
}
$this->restApi->ajaxResponse([
'vehicle_id' => (int) $vehicle->_get('id'),
'vehicle_label' => $vehicleModel,
'default_email' => LogbookRequestContactEmailResolver::resolveForVehicle($vehicle, $company),
'available_fields' => $handler->getAvailableFieldsForVehicle($vehicle),
'previous_requests' => $this->requestService->getVehicleRequestHistory($vehicle),
]);
}
/**
* @includeInDoc false
* @requestMethod "POST"
* @RequiredPostParameters ["id", "client_email"]
* @VerifyPermissions []
*/
public function sendVehicleRequest() {
$this->requestService->assertCanSendRequests();
$company = $this->user->getCompany((int) $this->urlReader->getUrlParam(5));
$vehicle = $company->getVehicle((int) $this->urlReader->getPost('id'));
$clientEmail = trim((string) $this->urlReader->getPost('client_email'));
$requestedFields = $this->urlReader->getPost('requested_fields');
if (!is_array($requestedFields)) {
$requestedFields = [];
}
try {
$this->requestService->createAndSendVehicleRequest(
$this->user,
$company,
$vehicle,
$clientEmail,
$requestedFields
);
} catch (\InvalidArgumentException $ex) {
throw new \Exception($ex->getMessage(), \app\constants\HttpReponseCodes::HTTP_BAD_REQUEST, $ex);
}
$this->restApi->ajaxResponse([
'title' => $this->translator->_get('Žiadosť bola odoslaná'),
'text' => $this->translator->_get('Klientovi bol odoslaný e-mail s odkazom na doplnenie údajov.'),
]);
}
/**
* @includeInDoc false
* @requestMethod "POST"
* @RequiredPostParameters ["id"]
* @VerifyPermissions []
*/
public function getEventRequestFormData() {
$this->requestService->assertCanSendRequests();
$company = $this->user->getCompany((int) $this->urlReader->getUrlParam(5));
$eventId = (int) $this->urlReader->getPost('id');
$event = new Event($eventId);
$vehicle = $company->getVehicle($event->getVehicle()->_get('id'));
$event = $vehicle->getEvent($eventId);
$handler = LogbookRequestTypeRegistry::event();
$this->requestService->assertEventSupportsClientRequest($event);
$this->restApi->ajaxResponse([
'event_id' => (int) $event->_get('id'),
'event_label' => $handler->buildRequestName($event, $vehicle),
'default_email' => LogbookRequestContactEmailResolver::resolveForVehicle($vehicle, $company),
'available_fields' => $handler->getAvailableFieldsForEvent($event),
'previous_requests' => $this->requestService->getEventRequestHistory($event),
]);
}
/**
* @includeInDoc false
* @requestMethod "POST"
* @RequiredPostParameters ["id", "client_email"]
* @VerifyPermissions []
*/
public function sendEventRequest() {
$this->requestService->assertCanSendRequests();
$company = $this->user->getCompany((int) $this->urlReader->getUrlParam(5));
$eventId = (int) $this->urlReader->getPost('id');
$event = new Event($eventId);
$vehicle = $company->getVehicle($event->getVehicle()->_get('id'));
$event = $vehicle->getEvent($eventId);
$clientEmail = trim((string) $this->urlReader->getPost('client_email'));
$requestedFields = $this->urlReader->getPost('requested_fields');
if (!is_array($requestedFields)) {
$requestedFields = [];
}
try {
$this->requestService->createAndSendEventRequest(
$this->user,
$company,
$vehicle,
$event,
$clientEmail,
$requestedFields
);
} catch (\InvalidArgumentException $ex) {
throw new \Exception($ex->getMessage(), \app\constants\HttpReponseCodes::HTTP_BAD_REQUEST, $ex);
}
$this->restApi->ajaxResponse([
'title' => $this->translator->_get('Žiadosť bola odoslaná'),
'text' => $this->translator->_get('Klientovi bol odoslaný e-mail s odkazom na doplnenie údajov.'),
]);
}
}