This commit introduces changes to include branding information in departments. Updates were made to routes, forms, and objects to handle branding IDs and enforce validation. Additionally, a method call was added to track object changes when branding is updated.
176 lines
7.5 KiB
PHP
176 lines
7.5 KiB
PHP
<?php
|
|
|
|
namespace routes;
|
|
|
|
use classes\authentication;
|
|
use objects\branding_o;
|
|
use objects\logs_o;
|
|
use traits\route_t;
|
|
|
|
class BrandingRoute
|
|
{
|
|
use route_t;
|
|
|
|
public function run(): void
|
|
{
|
|
$this->get('/branding', function () {
|
|
|
|
// Require the user to be logged in
|
|
global $response;
|
|
$this->requirePermission('list_branding_options');
|
|
// Get the user object
|
|
$user = (new authentication())->get_user();
|
|
// Check if the request was successful
|
|
if ($user) {
|
|
// Log the incident
|
|
(new logs_o())->add('branding', 'global', 1, $user->id, 'LIST_BRANDING_OPTIONS', 'User listed branding options');
|
|
// Check the user has specified the branding id
|
|
if (self::isParametersSet(['id'])) {
|
|
// Check if the parameters are of the correct type
|
|
self::requireType((int)self::getParameter('id'), self::TYPE_INT());
|
|
self::requireMinValue((int)self::getParameter('id'), 1);
|
|
// Select the object
|
|
$branding = (new branding_o())->select(self::getParameter('id'));
|
|
// Check if the object exists
|
|
if ($branding->exists()) {
|
|
// Return the object as an array
|
|
$response->success(
|
|
(new branding_o())->select(self::getParameter('id'))->__toString()
|
|
);
|
|
} else {
|
|
// Log the incident
|
|
(new logs_o())->add('branding', 'global', 1, $user->id, 'LIST_BRANDING_OPTIONS', 'User tried to list branding options with an invalid id');
|
|
// Return an error
|
|
$response->error('Invalid id', 400);
|
|
}
|
|
}
|
|
// Return the list of departments
|
|
$response->success(
|
|
(new branding_o())
|
|
->listObjectsWithPaginationIfSet(
|
|
function ($branding) use ($user) {
|
|
// Return the object as an array
|
|
$tmp_branding = (new branding_o())->select($branding['id']);
|
|
return $tmp_branding->asArray();
|
|
}
|
|
)
|
|
);
|
|
} else {
|
|
// Log the incident
|
|
(new logs_o())->add('branding', 'global', 1, 0, 'LIST_BRANDING_OPTIONS', 'User tried to list branding options without being logged in');
|
|
// Return an error
|
|
$response->error('Invalid session', 400);
|
|
}
|
|
},
|
|
[
|
|
'list_branding_options' => 'List all product options'
|
|
]
|
|
);
|
|
|
|
$this->post('/branding', function () {
|
|
// Require the user to be logged in
|
|
global $response;
|
|
$this->requirePermission('add_branding_option');
|
|
// Get the user object
|
|
$user = (new authentication())->get_user();
|
|
// Check if the request was successful
|
|
if ($user) {
|
|
// Check if the required parameters are set
|
|
self::requireParameters(['name', 'description', 'cvr']);
|
|
// Check if the parameters are of the correct type
|
|
self::requireType(self::getParameter('name'), self::TYPE_STRING());
|
|
self::requireType(self::getParameter('description'), self::TYPE_STRING());
|
|
self::requireType(self::getParameter('cvr'), self::TYPE_INT());
|
|
// Create the object
|
|
$branding = new branding_o();
|
|
// Add the object
|
|
$branding->add(
|
|
[
|
|
'name' => self::getParameter('name'),
|
|
'description' => self::getParameter('description'),
|
|
'cvr' => self::getParameter('cvr')
|
|
]
|
|
);
|
|
// Log the incident
|
|
(new logs_o())->add('branding', 'global', 1, $user->id, 'ADD_BRANDING_OPTION', 'User added a branding option');
|
|
// Return the object
|
|
$response->success(
|
|
$branding->__toString()
|
|
);
|
|
} else {
|
|
// Log the incident
|
|
(new logs_o())->add('branding', 'global', 1, 0, 'ADD_BRANDING_OPTION', 'User tried to add a branding option without being logged in');
|
|
// Return an error
|
|
$response->error('Invalid session', 400);
|
|
}
|
|
},
|
|
[
|
|
'add_branding_option' => 'Add a branding option'
|
|
]
|
|
);
|
|
|
|
$this->put('/branding', function () {
|
|
// Require the user to be logged in
|
|
global $response;
|
|
$this->requirePermission('edit_branding_option');
|
|
// Get the user object
|
|
$user = (new authentication())->get_user();
|
|
// Check if the request was successful
|
|
if ($user) {
|
|
// Check if the required parameters are set
|
|
self::requireParameters(['id']);
|
|
// Check if the parameters are of the correct type
|
|
self::requireType(self::getParameter('id'), self::TYPE_INT());
|
|
// Create the object
|
|
$branding = new branding_o();
|
|
// Select the object
|
|
$branding->select(self::getParameter('id'));
|
|
// Check what the user wants to edit
|
|
|
|
// Option name
|
|
if (self::isParametersSet(['name'])) {
|
|
// Check if the parameters are of the correct type
|
|
self::requireType(self::getParameter('name'), self::TYPE_STRING());
|
|
// Set the name
|
|
$branding->name->set(
|
|
(string)self::getParameter('name')
|
|
);
|
|
}
|
|
// Option description
|
|
if (self::isParametersSet(['description'])) {
|
|
// Check if the parameters are of the correct type
|
|
self::requireType(self::getParameter('description'), self::TYPE_STRING());
|
|
// Set the description
|
|
$branding->description->set(
|
|
(string)self::getParameter('description')
|
|
);
|
|
}
|
|
// Option cvr
|
|
if (self::isParametersSet(['cvr'])) {
|
|
// Check if the parameters are of the correct type
|
|
self::requireType(self::getParameter('cvr'), self::TYPE_INT());
|
|
// Set the cvr value
|
|
$branding->cvr->set(
|
|
(int)self::getParameter('cvr')
|
|
);
|
|
}
|
|
|
|
// Log the incident
|
|
(new logs_o())->add('branding', 'global', 1, $user->id, 'EDIT_BRANDING_OPTION', 'User edited a branding option');
|
|
// Return the object
|
|
$response->success(
|
|
$branding->__toString()
|
|
);
|
|
} else {
|
|
// Log the incident
|
|
(new logs_o())->add('branding', 'global', 1, 0, 'EDIT_BRANDING_OPTION', 'User tried to edit a branding option without being logged in');
|
|
// Return an error
|
|
$response->error('Invalid session', 400);
|
|
}
|
|
},
|
|
[
|
|
'edit_branding_option' => 'Edit a branding option'
|
|
]
|
|
);
|
|
}
|
|
} |