Add routes to view and update the self-serve enabled status for departments

This commit is contained in:
Jeppe Bundgaard
2026-01-21 10:22:25 +01:00
parent 03dde04df6
commit 7c8a04ff7a
2 changed files with 90 additions and 0 deletions
@@ -5,6 +5,7 @@ namespace routes;
use classes\authentication;
use objects\categories_o;
use objects\department_categories_o;
use objects\department_variables_o;
use objects\departments_o;
use objects\logs_o;
use objects\orders_o;
@@ -221,6 +222,81 @@ class departmentsRoute
]
);
$this->get('/departments/self-serve/enabled', function () {
// Require the user to be logged in
global $response;
self::requirePermission('view_department_selfserve_enabled');
// Get the user object
$user = (new authentication())->get_user();
// Check if the request was successful
if ($user) {
// Require the department id
self::requireParameters(['id']);
self::requireType((int)self::getParameter('id'), self::type_int());
// Get the department object
$department = (new departments_o())->select(self::getParameter('id'));
// Validate the department object
if (!$department->exists()) {
// Return an error
$response->error('Department not found', 404);
}
// Get the department variable
$department_variables = (new department_variables_o())->selectDepartment($department->id);
$enabled = $department_variables->getVariable('selfserve_enabled');
// Return the status
$response->success([
'enabled' => $enabled === true
]);
} else {
// Return an error
$response->error('Invalid session', 400);
}
},
[
'view_department_selfserve_enabled' => 'View if department self-serve is enabled'
]
);
$this->put('/departments/self-serve/enabled', function () {
// Require the user to be logged in
global $response;
self::requirePermission('edit_department_selfserve_enabled');
// Get the user object
$user = (new authentication())->get_user();
// Check if the request was successful
if ($user) {
// Require the department id and enabled status
self::requireParameters(['id', 'enabled']);
self::requireType((int)self::getParameter('id'), self::type_int());
// Get the department object
$department = (new departments_o())->select(self::getParameter('id'));
// Validate the department object
if (!$department->exists()) {
// Return an error
$response->error('Department not found', 404);
}
// Set the department variable
$department_variables = (new department_variables_o())->selectDepartment($department->id);
$enabled = self::getParameter('enabled') === 'true' || self::getParameter('enabled') === true || self::getParameter('enabled') === 1 || self::getParameter('enabled') === '1';
$department_variables->set('selfserve_enabled', $enabled ? 'true' : 'false');
// Log the incident
(new logs_o())->add('departments', $department->id, 1, $user->id, 'EDIT_DEPARTMENT_SELFSERVE_ENABLED', 'Successfully edited department self-serve enabled status to ' . ($enabled ? 'true' : 'false'));
// Return a success message
$response->success(['message' => 'Department self-serve enabled status updated successfully']);
} else {
// Return an error
$response->error('Invalid session', 400);
}
},
[
'edit_department_selfserve_enabled' => 'Edit if department self-serve is enabled'
]
);
$this->post('/departments/categories', function () {
// Require the user to be logged in
global $response;
@@ -0,0 +1,14 @@
### GET /departments/self-serve/enabled
GET {{api_url}}/departments/self-serve/enabled?id=1
Accept: application/json
Authorization: Bearer {{auth_token_superuser}}
### PUT /departments/self-serve/enabled
PUT {{api_url}}/departments/self-serve/enabled?id=1&enabled=true
Accept: application/json
Authorization: Bearer {{auth_token_superuser}}
### PUT /departments/self-serve/enabled (disable)
PUT {{api_url}}/departments/self-serve/enabled?id=1&enabled=false
Accept: application/json
Authorization: Bearer {{auth_token_superuser}}