Files
api/services/nginx/app/routes/guestRoute.php
T

98 lines
4.1 KiB
PHP

<?php
namespace routes;
use classes\authentication;
use classes\recaptcha;
use classes\virkdata;
use objects\department_lanes_o;
use objects\departments_o;
use objects\logs_o;
use objects\tokens_o;
use objects\users_o;
use traits\route_t;
class guestRoute
{
use route_t;
public function run(): void
{
$this->post('/guest/validation/customer-number', function () {
// Get the post data
global $response;
self::requireParameters(['customer_number']);
// Validate the customer number
$customer_number = (int)$this->getParameter('customer_number');
self::requireType($customer_number, $this->type_int());
self::requireMinValue($customer_number, 1);
self::requireMaxValue($customer_number, 999999999);
$customer_number = (int)$this->getParameter('customer_number');
// Check if the customer number exists
$doesCustomerExist = (new users_o())->getUserByCustomerNumber($customer_number)->exists();
// Return the result
$response->success(['exists' => $doesCustomerExist, 'customer_number' => $customer_number]);
});
$this->get('/cvr/search', function () {
global $response;
//self::requirePermission('cvr_search'); // TODO: Remove this
self::requireParameters(['query']);
$query = self::getParameter('query');
if (strlen($query) < 2) {
$response->error('Query must be at least 2 characters long', 400);
}
$virkdata = new virkdata();
$result = $virkdata->searchCompanies($query);
$response->success($result, 200);
}, [
'cvr_search' => 'Search CVR numbers'
]);
$this->get('/guest/departments', function () {
global $response;
$departments = (new departments_o());
// Check if the department lane status is requested to be included
$include_lane_status = false;
if (self::isParametersSet(['include_lanes']) && self::getParameter('include_lanes')) {
$include_lane_status = true;
}
$response->success($departments->listObjectsWithPaginationIfSet(function ($department_array) use ($departments, $include_lane_status) {
$additional_data = [];
// If including lane status, fetch it
if ($include_lane_status) {
$department = $departments->select((int)$department_array['id']);
// Include the status of self-serve in the department (disabled, when staffed hours)
$additional_data['self_serve_enabled'] = (bool)$department->getSelfServeEnabled();
$additional_data['lanes'] = array_map(
/**
* @param department_lanes_o $lane
* @return array
*/
function (department_lanes_o $lane) {
return [
'id' => (int)$lane->id,
'name' => (string)$lane->name->value(),
'status' => (string)$lane->getLaneStatus()->name,
'products' => $lane->getSelfServeLaneProducts(),
'machine_available' => !empty($lane->relay_machine_id->value())
];
}, $department->getLanes());
}
// Only return id and name
return [
'id' => $department_array['id'],
'name' => $department_array['name'],
'longitude' => $department_array['longitude'],
'latitude' => $department_array['latitude'],
'address' => $department_array['description'],
...$additional_data
];
},
$departments->forceRestrictFilters([
'visible' => 1, // Only show visible departments, this is to prevent showing internal system departments to the end-user.
])), 200);
});
}
}