Remove unused form and enhance wash certificate handling

The `book_interior_wash_f` form was removed due to redundancy. Added functionality to handle wash certificate generation, including safety seal and operator data, and added a new form `complete_booking_f` to finalize bookings without certificates. Adjustments were made to several related components to ensure seamless integration.
This commit is contained in:
Jepp9350
2025-04-10 12:57:29 +02:00
parent 849f1cc53e
commit c8df3230d1
10 changed files with 357 additions and 233 deletions
+8 -6
View File
@@ -12,6 +12,7 @@ use Exception;
use forms\form_helper_c;
use forms\objects\book_interior_wash_f;
use forms\objects\book_wash_f;
use forms\objects\complete_booking_f;
use forms\objects\generate_booking_wash_certificate_f;
use traits\form_t;
@@ -28,22 +29,23 @@ class form
* @var book_wash_f $book_wash The BOOK_WASH form
*/
public book_wash_f $book_wash;
/**
* The BOOK_INTERIOR_WASH form
* @var book_interior_wash_f $book_interior_wash The BOOK_INTERIOR_WASH form
*/
public book_interior_wash_f $book_interior_wash;
/**
* The GENERATE_BOOKING_CERTIFICATE form
* @var generate_booking_wash_certificate_f $generate_booking_wash_certificate The GENERATE_BOOKING_CERTIFICATE form
*/
public generate_booking_wash_certificate_f $generate_booking_wash_certificate;
/**
* The COMPLETE_BOOKING_WITHOUT_WASH_CERTIFICATE form
* @var complete_booking_f $complete_booking_without_wash_certificate The COMPLETE_BOOKING_WITHOUT_WASH_CERTIFICATE form
*/
public complete_booking_f $complete_booking_without_wash_certificate;
public function __construct()
{
$this->book_wash = new book_wash_f();
$this->book_interior_wash = new book_interior_wash_f();
$this->generate_booking_wash_certificate = new generate_booking_wash_certificate_f();
$this->complete_booking_without_wash_certificate = new complete_booking_f();
}
/**
@@ -1,196 +0,0 @@
<?php
namespace forms\objects;
use classes\email;
use forms\form_helper_c;
use objects\departments_o;
use objects\users_o;
use traits\form_t;
class book_interior_wash_f extends form_helper_c
{
use form_t;
/**
* @inheritDoc
*/
public function sanitize(): void
{
foreach ( $this->form_unsanitized_data as $key => $value ) {
// Sanitize the input TODO: Implement the sanitization logic
$this->form_unsanitized_data[$key] = $value;
}
// Set the sanitized data
$this->form_sanitized_data = $this->form_unsanitized_data;
}
/**
* @inheritDoc
*/
public function validateInput(): void
{
}
/**
* @inheritDoc
*/
public function beforeSave(): void
{
// Set the department id to the department id of the user
self::setDepartmentId(self::getSanitizedData('department_id'));
// Set the customer number to the customer number of the user
self::setCustomerNumber(self::getSanitizedData('customer_number'));
}
/**
* @inheritDoc
*/
public function afterSubmit(): void
{
$email = new email();
// Get the user from the customer number
$user = (new users_o())->getUserByCustomerNumber(self::getSanitizedData('customer_number'));
// Get the department name from the department id
$department = (new departments_o())->selectId(self::getSanitizedData('department_id'));
// Send the booking confirmation email
$email->sendBookingConfirmationEmail(
123,
$user->getCustomerName($user->customer_number->value()),
self::getCustomerNumber(),
self::getSanitizedData('contact_email'),
self::getSanitizedData('reference'),
strtoupper(self::getSanitizedData('registration_number_tractor')),
strtoupper(self::getSanitizedData('registration_number_trailer')),
self::getSanitizedData('wants_wash_certificate') ? 'Ja' : 'Nej',
self::getSanitizedData('wants_wash_certificate_email'),
self::getSanitizedData('date'),
$department->name->value(),
$department->description->value(),
self::getSanitizedData('wants_pickup') ? 'Ja' : 'Nej',
self::getSanitizedData('notes')
);
// TODO: Implement afterSubmit() method.
}
/**
* @inheritDoc
*/
public function setup(): void
{
self::setFormIdentifier('BOOK_INTERIOR_WASH');
self::setFormName('Book an interior wash');
self::setFormDescription('This form is used to book an interior wash for a vehicle.');
self::setSubmitButtonText('Book indvendig vask');
// Set the form fields
self::defineInputFieldsAdvanced([
'customer_number' => [
'description' => 'Et kunde nummer, er et unikt nummer, som er tildelt til hver kunde. Som standard er det telefonnummeret indtastet ved oprettelse af kunden.',
'required' => true,
'placeholder' => 'Indtast dit kunde nummer',
'label' => 'Kunde nummer',
'help' => 'Dit kunde nummer, som du har fået tildelt af os.',
'error' => 'Du skal indtaste et gyldigt kunde nummer.',
'validation_method' => 'validateCustomerNumber',
],
'contact_email' => [
'description' => 'Det er vigtigt at indtaste en gyldig email adresse, da vi sender en bekræftelse til denne adresse.',
'required' => true,
'placeholder' => 'Indtast din email adresse',
'label' => 'Email adresse',
'help' => 'Vi sender en bekræftelse til denne email adresse.',
'error' => 'Du skal indtaste en gyldig email adresse.',
'validation_method' => 'validateEmail',
],
'reference' => [
'description' => 'Det er muligt at indtaste et reference nummer, hvis det er relevant for dig. Dette nummer kan være nyttigt til at identificere din booking.',
'required' => false,
'placeholder' => 'Indtast et reference nummer (hvis relevant)',
'label' => 'Reference nummer',
'help' => 'Dette nummer tilføjes til din booking som reference.',
'error' => 'Du skal indtaste et gyldigt reference nummer.',
'validation_method' => 'validateString',
'default' => '',
],
'registration_number_tractor' => [
'description' => 'Nummerpladen på den trækkende enhed, som er det køretøj, der trækker traileren.',
'required' => true,
'placeholder' => 'Indtast registreringsnummeret på den trækkende enhed',
'label' => 'Registreringsnummer (trækkende enhed)',
'help' => 'Dette er nummerpladen på den trækkende enhed.',
'error' => 'Du skal indtaste et gyldigt registreringsnummer.',
'validation_method' => 'validateRegistrationNumber',
],
'registration_number_trailer' => [
'description' => 'Nummerpladen på traileren, som er det køretøj, der bliver trukket af den trækkende enhed.',
'required' => true,
'placeholder' => 'Indtast registreringsnummeret på traileren',
'label' => 'Registreringsnummer (trailer)',
'help' => 'Dette er nummerpladen på traileren.',
'error' => 'Du skal indtaste et gyldigt registreringsnummer.',
'validation_method' => 'validateRegistrationNumber',
],
'wants_wash_certificate' => [
'description' => 'En vaskecertifikat er et dokument, der bekræfter, at køretøjet er blevet vasket og rengjort.',
'required' => false,
'label' => 'Ønsker vaskecertifikat',
'help' => 'Hvis du ønsker et vaskecertifikat, skal du markere denne boks.',
'error' => null,
'validation_method' => 'validateBoolean',
'default' => true,
],
'wants_wash_certificate_email' => [
'description' => 'Vaskecertifikatet sendes til den email adresse, der er angivet her. Det er vigtigt at indtaste en gyldig email adresse.',
'required' => false,
'placeholder' => 'Indtast email adresse til vaskecertifikat',
'label' => 'Email adresse til vaskecertifikat',
'help' => 'Vaskecertifikatet sendes til denne email adresse.',
'error' => 'Du skal indtaste en gyldig email adresse.',
'validation_method' => 'validateEmail',
'display_if' => 'wants_wash_certificate',
'display_if_value' => true,
'required_if_display' => true,
'default' => null,
],
'date' => [
'description' => 'Datoen for vasken, som er den dato, hvor vasken skal finde sted.',
'required' => true,
'placeholder' => null,
'label' => 'Dato',
'help' => 'Hvornår skal vasken finde sted?',
'error' => 'Du skal indtaste en gyldig dato.',
'validation_method' => 'validateDate',
'default' => date('Y-m-d'),
],
'department_id' => [
'description' => 'Den afdeling / vaskehal, hvor vasken skal finde sted.',
'required' => true,
'placeholder' => null,
'label' => 'Afdeling',
'help' => 'Vælg den afdeling, hvor vasken skal finde sted.',
'error' => 'Du skal vælge en afdeling.',
'validation_method' => 'validateInt',
'options' => self::getDepartmentOptions(),
],
'wants_pickup' => [
'description' => 'Pickup er en service, hvor vi henter køretøjet og bringer det tilbage efter vasken.',
'required' => false,
'label' => 'Ønsker afhentning',
'help' => 'Hvis du ønsker afhentning af køretøjet, skal du markere denne boks.',
'error' => null,
'validation_method' => 'validateBoolean',
],
'notes' => [
'description' => 'Dette er et felt, hvor du kan tilføje eventuelle noter eller kommentarer, der er relevante for vasken. Som f.eks. særlige instruktioner eller ønsker.',
'required' => false,
'placeholder' => 'Indtast eventuelle noter eller kommentarer',
'label' => 'Noter',
'help' => 'Skriv her eventuelle noter eller kommentarer, der er relevante for vasken.',
'error' => null,
'validation_method' => 'validateString',
'default' => '',
],
]);
}
}
@@ -4,7 +4,7 @@ namespace forms\objects;
use classes\email;
use forms\form_helper_c;
use objects\bookings_new_o;
use objects\bookings_o;
use objects\departments_o;
use objects\users_o;
use traits\form_t;
@@ -57,32 +57,44 @@ class book_wash_f extends form_helper_c
// Get the department name from the department id
$department = (new departments_o())->selectId(self::getSanitizedData('department_id'));
// Get the bookings_new object
$bookings_new = new bookings_new_o();
$bookings = new bookings_o();
print_r(
self::getSanitizedData('wash_type')
);
// Check if the wash type contains the interior wash
$wants_wash_certificate = (bool)self::getSanitizedData('wants_wash_certificate');
if (in_array(3, self::getSanitizedData('wash_type'))) {
if ($wants_wash_certificate) {
$wash_certificate_email = self::getSanitizedData('wants_wash_certificate_email');
} else {
$wash_certificate_email = '';
}
}
// Create a new booking
$bookings_new->add(
$bookings->add(
self::getCustomerNumber(),
self::getFormIdentifier(),
self::getSanitizedData('contact_email'),
self::getSanitizedData('reference'),
strtoupper(self::getSanitizedData('registration_number_tractor')),
strtoupper(self::getSanitizedData('registration_number_trailer')),
self::getSanitizedData('wants_wash_certificate') ? self::getSanitizedData('wants_wash_certificate_email') : '',
$wash_certificate_email ?? '',
self::getSanitizedData('date'),
$department->id,
(bool)self::getSanitizedData('wants_pickup'),
self::getSanitizedData('notes'),
'pending',
$wants_wash_certificate ? 'pending' : 'cancelled',
'',
'pending',
self::getSanitizedData('wash_type'),
);
// Validate the booking actually exists
if (!$bookings_new->exists()) {
if (!$bookings->exists()) {
throw new \Exception('Booking could not be created');
}
// Send the booking confirmation email
$email->sendBookingConfirmationEmail(
$bookings_new->id,
$bookings->id,
$user->getCustomerName($user->customer_number->value()),
self::getCustomerNumber(),
self::getSanitizedData('contact_email'),
@@ -0,0 +1,103 @@
<?php
namespace forms\objects;
use forms\form_helper_c;
use objects\bookings_o;
use traits\form_t;
class complete_booking_f extends form_helper_c
{
use form_t;
/**
* @inheritDoc
*/
public function sanitize(): void
{
foreach ( $this->form_unsanitized_data as $key => $value ) {
// Sanitize the input TODO: Implement the sanitization logic
$this->form_unsanitized_data[$key] = $value;
}
// Set the sanitized data
$this->form_sanitized_data = $this->form_unsanitized_data;
}
/**
* @inheritDoc
*/
public function validateInput(): void
{
}
/**
* @inheritDoc
*/
public function beforeSave(): void
{
// Get the booking from the booking id
$bookings = new bookings_o();
$bookings->select(self::getSanitizedData('booking_id'));
// Check if the user has access to the booking
self::restrictAccessDepartment($bookings->department->value());
// Check if the user has access to issue wash certificates
self::requirePermission(
'issue_wash_certificates',
'User does not have access to issue wash certificates',
);
// Set the department id to the department id of the user
self::setDepartmentId($bookings->department->value());
// Set the customer number to the customer number of the user
self::setCustomerNumber($bookings->customer_number->value());
// Check if the booking is cancelled
switch ($bookings->status->value()) {
case 'cancelled':
throw new \Exception('Booking is cancelled');
break;
case 'completed':
throw new \Exception('Booking is completed');
break;
case 'pending':
break;
default:
throw new \Exception('Booking status is unknown, expected cancelled, completed or pending');
break;
}
// Generate the wash certificate
$bookings->completeWashWithoutWashCertificate(
$bookings->id,
);
}
/**
* @inheritDoc
*/
public function afterSubmit(): void
{
// TODO: Implement afterSubmit() method.
}
/**
* @inheritDoc
*/
public function setup(): void
{
self::setFormIdentifier('COMPLETE_BOOKING_WITHOUT_WASH_CERTIFICATE');
self::setFormName('Bekræft vask');
self::setFormDescription('Bekræft vask af booking');
self::setSubmitButtonText('Bekræft vask');
// Set the form fields
self::defineInputFieldsAdvanced([
'booking_id' => [
'description' => 'Booking ID er det unikke ID for den booking, du vil oprette et vaskecertifikat til.',
'required' => true,
'placeholder' => 'Indtast booking ID',
'label' => 'Booking ID',
'help' => 'Dette er det unikke ID for den booking, du vil oprette et vaskecertifikat til.',
'error' => 'Du skal indtaste et gyldigt booking ID.',
'validation_method' => 'validateBookingId',
],
]);
}
}
@@ -3,7 +3,7 @@
namespace forms\objects;
use forms\form_helper_c;
use objects\bookings_new_o;
use objects\bookings_o;
use traits\form_t;
class generate_booking_wash_certificate_f extends form_helper_c
@@ -37,21 +37,21 @@ class generate_booking_wash_certificate_f extends form_helper_c
public function beforeSave(): void
{
// Get the booking from the booking id
$bookings_new = new bookings_new_o();
$bookings_new->select(self::getSanitizedData('booking_id'));
$bookings = new bookings_o();
$bookings->select(self::getSanitizedData('booking_id'));
// Check if the user has access to the booking
self::restrictAccessDepartment($bookings_new->department->value());
self::restrictAccessDepartment($bookings->department->value());
// Check if the user has access to issue wash certificates
self::requirePermission(
'issue_wash_certificates',
'User does not have access to issue wash certificates',
);
// Set the department id to the department id of the user
self::setDepartmentId($bookings_new->department->value());
self::setDepartmentId($bookings->department->value());
// Set the customer number to the customer number of the user
self::setCustomerNumber($bookings_new->customer_number->value());
self::setCustomerNumber($bookings->customer_number->value());
// Check if the booking is cancelled
switch ($bookings_new->status->value()) {
switch ($bookings->status->value()) {
case 'cancelled':
throw new \Exception('Booking is cancelled');
break;
@@ -64,11 +64,24 @@ class generate_booking_wash_certificate_f extends form_helper_c
throw new \Exception('Booking status is unknown, expected cancelled, completed or pending');
break;
}
try {
$safety_seal = (int)self::getSanitizedData('safety_seal');
} catch (\Exception $e) {
$safety_seal = null;
}
try {
$operator = (string)self::getSanitizedData('operator');
} catch (\Exception $e) {
$operator = null;
}
// Generate the wash certificate
$bookings_new->generateWashCertificate(
self::getSanitizedData('safety_seal'),
self::getSanitizedData('operator'),
$bookings->generateWashCertificate(
$safety_seal,
$operator,
);
// Mark the booking as completed
$bookings->status->set('completed');
$bookings->washCertificateStatus->set('completed');
}
/**
@@ -110,11 +123,11 @@ class generate_booking_wash_certificate_f extends form_helper_c
'default' => '',
],
'operator' => [
'description' => 'En operatør er en person, der arbejder med køretøjet.',
'description' => 'Operatøren er den person, der har vasket køretøjet. Dette felt er valgfrit.',
'required' => false,
'placeholder' => 'Indtast operatør',
'label' => 'Operatør',
'help' => 'Dette er en operatør, der arbejder med køretøjet.',
'label' => 'Vognvasker',
'help' => 'Dette er navnet på den person, der har vasket køretøjet.',
'error' => 'Du skal indtaste en gyldig operatør.',
'validation_method' => 'validateString',
'default' => '',
@@ -38,23 +38,23 @@ class wash_certificate extends html2pdf_template
/** Add the signature */
//$html .= self::getSignature();
$html .= self::setDocumentFields(
'123',
self::getKey('booking_number') ?: '-',
self::getKey('time') . ' ' . self::getKey('date'),
self::getKey('carried_out_by'),
self::getKey('seal_number'),
self::getKey('carried_out_by') ?: '-',
self::getKey('seal_number') ?: '-',
);
$html .= self::setDocumentRegistrationNumberFields(
self::getKey('reg_1'),
self::getKey('reg_2'),
self::getKey('reg_1') ?: '-',
self::getKey('reg_2') ?: '-',
);
$html .= self::setDocumentCustomerSupplierFields(
[
self::getKey('customer_name'),
self::getKey('customer_address'),
self::getKey('customer_name') ?: '-',
self::getKey('customer_address') ?: '-',
],
[
self::getKey('department_name'),
self::getKey('department_address'),
self::getKey('department_name') ?: '-',
self::getKey('department_address') ?: '-',
],
);
$html .= self::setSignatureField(
+91
View File
@@ -4,6 +4,7 @@ namespace objects;
use classes\db;
use classes\object_property;
use classes\pdf_generator;
use classes\response;
use classes\slack;
use classes\wash_certificate_store;
@@ -28,6 +29,7 @@ class bookings_o extends db
public object_property $notes;
public object_property $washCertificateStatus;
public object_property $washCertificateUrl;
public object_property $wash_certificate_pdf;
public object_property $status;
public object_property $data;
@@ -98,6 +100,7 @@ class bookings_o extends db
$this->notes = new object_property($this->table, $this->id, 'notes', 'string', true);
$this->washCertificateStatus = new object_property($this->table, $this->id, 'washCertificateStatus', 'string', true);
$this->washCertificateUrl = new object_property($this->table, $this->id, 'washCertificateUrl', 'string', true);
$this->wash_certificate_pdf = new object_property($this->table, $this->id, 'wash_certificate_pdf', 'string', true);
$this->status = new object_property($this->table, $this->id, 'status', 'string', true);
$this->data = new object_property($this->table, $this->id, 'data', 'string', true);
}
@@ -343,6 +346,93 @@ class bookings_o extends db
$db->query($sql);
}
/**
* Generate a wash certificate
* @param int|null $safety_seal The safety seal number
* @param string|null $operator The operator name
* @throws Exception If the object is not selected
* @throws Exception If the booking already has a wash certificate
*/
public function generateWashCertificate(int|null $safety_seal = null, string|null $operator = null): void
{
self::requireSelected();
// Check if the booking already has a wash certificate
if ($this->hasWashCertificate()) {
throw new Exception('Booking already has a wash certificate');
}
// Generate the wash certificate
// Get the department from the booking
$department = (new departments_o())->select((int)$this->department->value());
if (!$department->exists()) {
throw new Exception('Department not found');
}
// Get the branding from the department
$branding = (new branding_o())->select((int)$department->branding->value());
if (!$branding->exists()) {
throw new Exception('Branding not found');
}
// Get the customer from the booking
$customer = (new users_o())->getUserByCustomerNumber((int)$this->customer_number->value());
$department_array = $department->asArray();
$customer_array = $customer->asArray();
$booking_array = self::asArray();
$department_array['branding'] = $branding->asArray();
//print_r($department_array);
//print_r($customer_array);
//print_r($booking_array);
$pdf_generator = new pdf_generator();
$pdf_generator->add_html($pdf_generator->templates->getTemplate('wash_certificate')
->setCompany([
'name' => 'Truck Wash',
'address' => 'Letland Allé 2',
'zip' => 2630,
'city' => 'Taastrup',
'phone_prefix' => 45,
'phone' => 43717886,
'email' => 'cph@truckwash.dk',
'website' => 'www.truckwash.dk',
'images' => [
'logo' => '/truckwash-banner-png.png',
'banner' => '/truckwash-banner-png.png',
'signature' => '/truckwash-underskrift.png',
],
])
->addData([
'booking_number' => $this->id,
'seal_number' => ($safety_seal ?? null),
'reg_1' => $booking_array['regNrTraekker'],
'reg_2' => $booking_array['regNrTrailer'],
'date' => date('d-m-Y'),
'time' => date('H:i'),
'carried_out_by' => ($operator ?? null),
'department_id' => $department->id,
'department_name' => $department_array['branding']['name'] ?: $department_array['name'],
'department_address' => $department_array['branding']['address'] ?: $department_array['description'],
'customer_name' => $customer->getCustomerName($customer_array['customer_number']),
'customer_address' => $customer->getCustomerEcocomicData($customer_array['customer_number'])->economic_customer->address ?: '-',
'type' => $booking_array['wash_type'],
])
->getHtml()
);
$pdf_path = $pdf_generator->generate_pdf();
// Set the PDF in the booking
$this->wash_certificate_pdf->set($pdf_path);
}
/**
* Check if the booking has a wash certificate
* @throws Exception If the object is not selected
*/
public function hasWashCertificate(): bool
{
self::requireSelected();
// Check if the booking has a wash certificate
if ($this->wash_certificate_pdf->value() !== null) {
return true;
}
return false;
}
/**
* @throws Exception If the object is not selected
*/
@@ -364,6 +454,7 @@ class bookings_o extends db
'notes' => $this->notes->value(),
'washCertificateStatus' => $this->washCertificateStatus->value(),
'washCertificateUrl' => $this->washCertificateUrl->value(),
'wash_certificate_pdf' => $this->wash_certificate_pdf->value(),
'status' => $this->status->value(),
'data' => $this->data->value() ? json_decode($this->data->value(), true) : null,
];
@@ -3,6 +3,7 @@
namespace routes;
use classes\authentication;
use classes\pdf_store;
use classes\response;
use classes\wash_certificate_store;
use objects\bookings_o;
@@ -273,6 +274,67 @@ class bookingsRoute
]
);
$this->get('/bookings/download_pdf', function () {
// Require the user to be logged in
global /** @var response $response */
$response;
// Check if the user has access to the department
$this->requirePermission('download_own_wash_certificate');
// Get the user object
$user = (new authentication())->get_user();
// Check if the request was successful
if (!$user->exists()) {
$response->error('User not found', 400);
}
self::requireParameters(['id']);
$id = (int)$this->getParameter('id');
self::requireType(
$id,
self::type_int()
);
self::requireMinValue($id, 1);
self::requireSameLength(
$id,
self::getParameter('id'),
);
// Make sure the user is allowed to download the wash certificate
if (!$user->hasAccessToBooking($id)) {
$response->error('You are not allowed to download this wash certificate', 400);
}
$bookings = (new bookings_o())->select((int)$id);
if (!$bookings->exists()) {
$response->error('Booking not found', 404);
}
// Check if the booking has a wash certificate
if (!empty($bookings->wash_certificate_pdf->value())) {
// The booking has a wash certificate, so we can proceed
$pdf_storage = new pdf_store();
// Check if the wash certificate exists.
if (!$pdf_storage->doesObjectExist($bookings->wash_certificate_pdf->value())) {
$response->error('Wash certificate not found, but it should exist', 500);
}
// Generate the download link
$response->success(
["link" => $pdf_storage->getPresignedUrl($bookings->wash_certificate_pdf->value())]
);
} else {
// Check if the certificate is stored in the other bucket
$wash_certificate_storage = new wash_certificate_store();
// Check if the wash certificate exists.
if (!$wash_certificate_storage->washCertificateExists($bookings->id)) {
$response->error('No wash certificate found for this booking', 404);
}
// Generate the download link
$response->success(
["link" => $wash_certificate_storage->getWashCertificateDownload($bookings->id)]
);
}
},
[
'download_own_wash_certificate' => 'Download the wash certificate for a booking'
]
);
$this->post('/admin/bookings/delete', function () {
// Require the user to be logged in
global /** @var response $response */
@@ -24,6 +24,31 @@ class pdfGeneratorRoute
global $response;
//self::requirePermission('modules_pdf_generator_test');
if (true) {
// Check if the required parameters are present
self::requireParameters([
'id',
]);
$id = (int)self::getParameter('id');
self::requireType($id, self::type_int());
self::requireMinValue($id, 1);
// Check if the operator is set
if (self::isParametersSet(['operator'])) {
self::requireParameters([
'operator',
]);
$operator = self::getParameter('operator');
self::requireType($operator, self::type_string());
self::requireMinLength('operator', 1);
}
// Check if the safety seal / plom number is set
if (self::isParametersSet(['safety_seal'])) {
self::requireParameters([
'safety_seal',
]);
$safety_seal = (int)self::getParameter('safety_seal');
self::requireType($safety_seal, self::type_int());
self::requireMinValue($safety_seal, 1);
}
//(new logs_o())->add('orderInvoices', 'global', 1, $user->id, 'LIST_COLLECTED_INVOICES', 'User accessed the list of collected order invoices');
// Get the booking from its ID
$id = 434;
@@ -68,12 +93,13 @@ class pdfGeneratorRoute
],
])
->addData([
'seal_number' => 123456,
'booking_number' => $booking->id,
'seal_number' => ($safety_seal ?? null),
'reg_1' => $booking_array['regNrTraekker'],
'reg_2' => $booking_array['regNrTrailer'],
'date' => $booking_array['date'],
'time' => date('H:i'),
'carried_out_by' => 'John Doe',
'carried_out_by' => ($operator ?? null),
'department_id' => $department->id,
'department_name' => $department_array['branding']['name'] ?: $department_array['name'],
'department_address' => $department_array['branding']['address'] ?: $department_array['description'],
@@ -84,6 +110,8 @@ class pdfGeneratorRoute
->getHtml()
);
$pdf_path = $pdf_generator->generate_pdf();
// Set the PDF in the booking
$booking->wash_certificate_pdf->set($pdf_path);
$response->success([
'pdf_path' => $pdf_path,
'message' => 'PDF generated successfully',
+9
View File
@@ -48,6 +48,15 @@ trait route_t
return true;
}
public function requireSameLength(mixed $arg1, mixed $arg2): bool
{
global $response;
if (strlen($arg1) !== strlen($arg2)) {
$response->error('Invalid length. Expected: ' . strlen($arg2) . ' Got: ' . strlen($arg1), 400);
}
return true;
}
/**
* Require parameter to be one of the given types
* @param mixed $value The value to check