Add branding feature with form, route, and object implementations
Introduced a new branding functionality, including a `branding_o` object, `create_branding_f` form, and associated routes in `BrandingRoute`. Refactored the forms directory for better organization and added support for branding in departments. Extended validation, object handling, and response handling to accommodate this new feature.
This commit is contained in:
+2
-1
@@ -1,8 +1,9 @@
|
||||
<?php
|
||||
|
||||
namespace forms;
|
||||
namespace forms\objects;
|
||||
|
||||
use classes\email;
|
||||
use forms\form_helper_c;
|
||||
use objects\departments_o;
|
||||
use objects\users_o;
|
||||
use traits\form_t;
|
||||
+2
-1
@@ -1,8 +1,9 @@
|
||||
<?php
|
||||
|
||||
namespace forms;
|
||||
namespace forms\objects;
|
||||
|
||||
use classes\email;
|
||||
use forms\form_helper_c;
|
||||
use objects\bookings_new_o;
|
||||
use objects\departments_o;
|
||||
use objects\users_o;
|
||||
@@ -0,0 +1,132 @@
|
||||
<?php
|
||||
|
||||
namespace forms\objects;
|
||||
|
||||
use Exception;
|
||||
use forms\form_helper_c;
|
||||
use objects\branding_o;
|
||||
use objects\departments_o;
|
||||
use traits\form_t;
|
||||
|
||||
class create_branding_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
|
||||
{
|
||||
// Check if the user has access to the booking
|
||||
self::restrictAccessDepartment(
|
||||
self::getSanitizedData('department_id'),
|
||||
);
|
||||
|
||||
self::setDepartmentId(
|
||||
self::getSanitizedData('department_id'),
|
||||
);
|
||||
// Check if the user has access to add branding options
|
||||
self::requirePermission(
|
||||
'add_branding_option',
|
||||
'User does not have access to add branding option',
|
||||
);
|
||||
// Check if the user has access to add branding options
|
||||
$department = (new departments_o())->select(self::getDepartmentId());
|
||||
if ($department->branding->value() !== null) {
|
||||
throw new Exception('Branding already exists for this department');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* @throws Exception If the creation of the branding object fails
|
||||
*/
|
||||
public function afterSubmit(): void
|
||||
{
|
||||
// Add the branding object
|
||||
$branding = new branding_o();
|
||||
$branding->add(
|
||||
[
|
||||
'name' => (string)self::getSanitizedData('name'),
|
||||
'description' => (string)self::getSanitizedData('description'),
|
||||
'cvr' => (int)self::getSanitizedData('cvr'),
|
||||
],
|
||||
);
|
||||
// Set the departments branding id to the newly created branding id
|
||||
$department = (new departments_o())->select(self::getDepartmentId());
|
||||
$department->branding->set((int)$branding->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function setup(): void
|
||||
{
|
||||
self::setFormIdentifier('CREATE_BRANDING');
|
||||
self::setFormName('Opret brand');
|
||||
self::setFormDescription('Du kan oprette et unikt brand til afdelingen.');
|
||||
self::setSubmitButtonText('Opret brand');
|
||||
// Set the form fields
|
||||
self::defineInputFieldsAdvanced([
|
||||
'department_id' => [
|
||||
'description' => 'Vælg den afdeling, som brandet skal tilknyttes.',
|
||||
'required' => true,
|
||||
'placeholder' => 'Vælg afdeling',
|
||||
'label' => 'Afdeling',
|
||||
'help' => 'Dette er afdelingen, som brandet skal tilknyttes.',
|
||||
'error' => 'Du skal vælge en afdeling.',
|
||||
'validation_method' => 'validateDepartmentId',
|
||||
],
|
||||
'name' => [
|
||||
'description' => 'Dette navn bruges til at identificere brandet. Det ville være bedst at vælge et navn, der er let at huske og relaterer til brandet.',
|
||||
'required' => true,
|
||||
'placeholder' => 'Indtast brand navn',
|
||||
'label' => 'Brand navn',
|
||||
'help' => 'Dette er brand navnet, der bruges til at identificere brandet.',
|
||||
'error' => 'Du skal indtaste et gyldigt brand navn.',
|
||||
'validation_method' => 'validateString',
|
||||
],
|
||||
'description' => [
|
||||
'description' => 'En beskrivelse af brandet, der forklarer, hvad det handler om. Dette kan være nyttigt for andre brugere.',
|
||||
'required' => true,
|
||||
'placeholder' => 'Indtast brand beskrivelse',
|
||||
'label' => 'Brand beskrivelse',
|
||||
'help' => 'Dette er brand beskrivelsen, der bruges til at forklare brandet.',
|
||||
'error' => 'Du skal indtaste en gyldig brand beskrivelse.',
|
||||
'validation_method' => 'validateString',
|
||||
'default' => '',
|
||||
],
|
||||
'cvr' => [
|
||||
'description' => 'CVR nummeret er et unikt identifikationsnummer for virksomheder i Danmark. Det er vigtigt at indtaste det korrekte CVR nummer, da det bruges til at identificere brandet.',
|
||||
'required' => true,
|
||||
'placeholder' => 'Indtast brand CVR nummer',
|
||||
'label' => 'Brand CVR nummer',
|
||||
'help' => 'Dette er brand CVR nummeret, der bruges til at identificere brandet.',
|
||||
'error' => 'Du skal indtaste et gyldigt brand CVR nummer.',
|
||||
'validation_method' => 'validateInt',
|
||||
],
|
||||
]);
|
||||
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -1,7 +1,8 @@
|
||||
<?php
|
||||
|
||||
namespace forms;
|
||||
namespace forms\objects;
|
||||
|
||||
use forms\form_helper_c;
|
||||
use objects\bookings_new_o;
|
||||
use traits\form_t;
|
||||
|
||||
Reference in New Issue
Block a user