Merge pull request 'Added duration logic and validations in vehicle controller' (#587) from ranjith-dev into master
Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled

Reviewed-on: #587
This commit was merged in pull request #587.
This commit is contained in:
2026-05-12 04:05:27 +00:00

View File

@@ -72,7 +72,6 @@ class VehicleController extends Controller
$duration = $item['duration'] ?? '';
$type = $item['type'] ?? '';
// vehicle number validation
if (!$vehicleNo) {
$results[] = [
@@ -83,8 +82,7 @@ class VehicleController extends Controller
continue;
}
if (strlen($vehicleNo) < 8) {
elseif (strlen($vehicleNo) < 8) {
$results[] = [
'uuid' => $uuid,
@@ -94,9 +92,7 @@ class VehicleController extends Controller
continue;
}
// entry time validation
if (!$entryTimeRaw) {
elseif (!$entryTimeRaw) {
$results[] = [
'uuid' => $uuid,
@@ -106,9 +102,7 @@ class VehicleController extends Controller
continue;
}
// type validation
if (!$type) {
elseif (!$type) {
$results[] = [
'uuid' => $uuid,
@@ -118,16 +112,30 @@ class VehicleController extends Controller
continue;
}
elseif ($entryTimeRaw && !Carbon::hasFormat($entryTimeRaw, 'd/m/Y h:i:s A')) {
$results[] = [
'uuid' => $uuid,
'status_code' => 'ERROR',
'status_description' => "Invalid Entry time format $entryTimeRaw. Expected dd/mm/yyyy hh:mm:ss AM/PM"
];
continue;
}
else if ($exitTimeRaw && !Carbon::hasFormat($exitTimeRaw, 'd/m/Y h:i:s A')) {
// duration validation
if ($duration && !preg_match('/^\d{2}:\d{2}:\d{2}$/', $duration)) {
$results[] = [
'uuid' => $uuid,
'status_code' => 'ERROR',
'status_description' => "Invalid Exit time format $exitTimeRaw. Expected dd/mm/yyyy hh:mm:ss AM/PM"
];
continue;
}
elseif ($duration && !preg_match('/^\d{2}:\d{2}:\d{2}$/', $duration)) {
$results[] = [
'uuid' => $uuid,
'status_code' => 'ERROR',
'status_description' => "Invalid duration format $duration"
];
continue;
}
}
@@ -160,12 +168,32 @@ class VehicleController extends Controller
: null;
}
if (
empty($duration) &&
!empty($entryTime) &&
!empty($exitTime)
) {
$totalSeconds = $entryTime->diffInSeconds($exitTime);
$hours = floor($totalSeconds / 3600);
$minutes = floor(($totalSeconds % 3600) / 60);
$seconds = $totalSeconds % 60;
$duration = sprintf(
'%02d:%02d:%02d',
$hours,
$minutes,
$seconds
);
}
$record = VehicleEntry::updateOrInsert(
[
'plant_id' => $plantId,
'uuid' => $uuid
],
[
'plant_id' => $plantId,
'vehicle_number' => $vehicleNo,
'entry_time' => $entryTime,
'exit_time' => $exitTime ?? null,