Implement Lane Status Audit and Comprehensive Self-Serve API Enhancements
- Introduced `machine_status_audit` in self-serve lanes for tracking changes. - Added new methods to handle audit data including `setLaneStatusAudit` and `getMachineStatusAudit`. - Enhanced API tests to include legacy Redis constant checks and validated comprehensive self-serve invoice creation. - Updated department lanes to reflect audit logs in their responses.
This commit is contained in:
@@ -83,6 +83,13 @@ class moduleSelfServeRoute
|
||||
$lane->setLaneStatus($target_status);
|
||||
|
||||
$user = (new authentication())->get_user();
|
||||
$machine_status_audit = [
|
||||
'modified_at' => date(DATE_ATOM),
|
||||
'modified_by_user_id' => $user ? (int)$user->id : null,
|
||||
'modified_by_name' => $this->machineStatusAuditUserName($user),
|
||||
];
|
||||
$lane->setLaneStatusAudit($machine_status_audit);
|
||||
|
||||
(new logs_o())->add(
|
||||
'selfserve',
|
||||
'global',
|
||||
@@ -97,6 +104,10 @@ class moduleSelfServeRoute
|
||||
'id' => $lane->id,
|
||||
'status' => $status,
|
||||
'machine_status_enabled' => department_lanes_o::isOperationalStatusName($status),
|
||||
'machine_status_audit' => $machine_status_audit,
|
||||
'machine_status_modified_at' => $machine_status_audit['modified_at'],
|
||||
'machine_status_modified_by' => $machine_status_audit['modified_by_name'],
|
||||
'machine_status_modified_by_user_id' => $machine_status_audit['modified_by_user_id'],
|
||||
'lane' => $department_lane->asArray(),
|
||||
]);
|
||||
},
|
||||
@@ -1601,6 +1612,33 @@ class moduleSelfServeRoute
|
||||
return $toggle_after;
|
||||
}
|
||||
|
||||
private function machineStatusAuditUserName(?object $user): ?string
|
||||
{
|
||||
if (!$user) {
|
||||
return null;
|
||||
}
|
||||
|
||||
foreach (['display_name', 'email'] as $property) {
|
||||
if (!isset($user->{$property}) || !is_object($user->{$property}) || !method_exists($user->{$property}, 'value')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$value = trim((string)$user->{$property}->value());
|
||||
if ($value !== '' && strtolower($value) !== 'unnamed') {
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($user->customer_number) && is_object($user->customer_number) && method_exists($user->customer_number, 'value')) {
|
||||
$customer_number = (int)$user->customer_number->value();
|
||||
if ($customer_number > 0) {
|
||||
return 'Kunde ' . $customer_number;
|
||||
}
|
||||
}
|
||||
|
||||
return isset($user->id) ? 'Bruger #' . (int)$user->id : null;
|
||||
}
|
||||
|
||||
private function requestedBoolean(string $parameter, bool $default = false): bool
|
||||
{
|
||||
if (!self::isParametersSet([$parameter])) {
|
||||
|
||||
Reference in New Issue
Block a user