Add new booking handling features and improve validations

Introduced support for a `data` property in bookings, extended form handling with additional validation and input fields, and added functionality for retrieving booking counts by date and status. Improved safety seal labeling and enhanced PDF generation comments.
This commit is contained in:
Jepp9350
2025-03-27 10:53:54 +01:00
parent 91520e1b54
commit 8aee687106
9 changed files with 219 additions and 27 deletions
@@ -47,6 +47,7 @@ class book_wash_f extends form_helper_c
/**
* @inheritDoc
* @throws \Exception
*/
public function afterSubmit(): void
{
@@ -72,8 +73,13 @@ class book_wash_f extends form_helper_c
self::getSanitizedData('notes'),
'pending',
'',
'pending'
'pending',
self::getSanitizedData('wash_type'),
);
// Validate the booking actually exists
if (!$bookings_new->exists()) {
throw new \Exception('Booking could not be created');
}
// Send the booking confirmation email
$email->sendBookingConfirmationEmail(
$bookings_new->id,
@@ -105,6 +111,27 @@ class book_wash_f extends form_helper_c
self::setSubmitButtonText('Book udvendig vask');
// Set the form fields
self::defineInputFieldsAdvanced([
'department_id' => [
'description' => 'Den lokation / vaskehal, hvor vasken skal finde sted.',
'required' => true,
'placeholder' => null,
'label' => 'Vælg lokation',
'help' => 'Vælg den lokation, hvor vasken skal finde sted.',
'error' => 'Du skal vælge en afdeling.',
'validation_method' => 'validateInt',
'options' => self::getDepartmentOptions(),
],
'wash_type' => [
'description' => 'Vasketype er den type vask, der skal udføres på køretøjet. Dette kan være en indvendig vask, udvendig vask eller begge dele.',
'required' => true,
'placeholder' => null,
'label' => 'Vaskeydelser',
'help' => 'Vælg de vaskeydelser, du ønsker.',
'error' => 'Du skal vælge en vaskeydelser.',
'validation_method' => 'validateInt',
'options' => self::getWashTypes(),
'allow_multiple' => true,
],
'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,
@@ -122,12 +149,13 @@ class book_wash_f extends form_helper_c
'help' => 'Vi sender en bekræftelse til denne email adresse.',
'error' => 'Du skal indtaste en gyldig email adresse.',
'validation_method' => 'validateEmail',
'allow_auto_fill' => true,
],
'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',
'label' => 'Reference nr.',
'help' => 'Dette nummer tilføjes til din booking som reference.',
'error' => 'Du skal indtaste et gyldigt reference nummer.',
'validation_method' => 'validateString',
@@ -137,7 +165,7 @@ class book_wash_f extends form_helper_c
'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)',
'label' => 'Reg 1',
'help' => 'Dette er nummerpladen på den trækkende enhed.',
'error' => 'Du skal indtaste et gyldigt registreringsnummer.',
'validation_method' => 'validateRegistrationNumber',
@@ -146,7 +174,7 @@ class book_wash_f extends form_helper_c
'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)',
'label' => 'Reg 2',
'help' => 'Dette er nummerpladen på traileren.',
'error' => 'Du skal indtaste et gyldigt registreringsnummer.',
'validation_method' => 'validateRegistrationNumber',
@@ -172,6 +200,7 @@ class book_wash_f extends form_helper_c
'display_if_value' => true,
'required_if_display' => true,
'default' => null,
'allow_auto_fill' => true,
],
'date' => [
'description' => 'Datoen for vasken, som er den dato, hvor vasken skal finde sted.',
@@ -183,16 +212,6 @@ class book_wash_f extends form_helper_c
'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,
@@ -210,8 +229,18 @@ class book_wash_f extends form_helper_c
'error' => null,
'validation_method' => 'validateString',
'default' => '',
'allow_auto_fill' => true,
],
]);
}
private static function getWashTypes(): array
{
return [
1 => 'Udvendig sættevognstræk ( Trækker / trailer )',
2 => 'Udvendigt trailer vask',
3 => 'Indvendig trailer vask',
];
}
}
@@ -103,8 +103,8 @@ class generate_booking_wash_certificate_f extends form_helper_c
'description' => 'En sikkerhedssikring er en form for beskyttelse, der sikrer, at køretøjet ikke er blevet åbnet eller ændret efter vasken.',
'required' => false,
'placeholder' => 'Indtast sikkerhedssikring',
'label' => 'Sikkerhedssikring',
'help' => 'Dette er en sikkerhedssikring, der bruges til at sikre køretøjet.',
'label' => 'Safety Seal / PLOM',
'help' => 'Dette er et Safety Seal, der bruges til at dokumentere, at køretøjet er blevet vasket.',
'error' => 'Du skal indtaste en gyldig sikkerhedssikring.',
'validation_method' => 'validateInt',
'default' => '',
@@ -30,7 +30,7 @@ class wash_certificate extends html2pdf_template
/** Add the provider details */
$html .= self::getProviderDetails();
/** Add the regarding this document */
$html .= self::getRegardingThisDocument('DK');
//$html .= self::getRegardingThisDocument('DK');
/** Add the regarding this document in English */
$html .= self::getRegardingThisDocument('EN');
/** Add the signature */