From cc788ea6d42ced7b2c639d5bf16ca7b26ce59a7f Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Tue, 12 May 2026 09:35:15 +0530 Subject: [PATCH] Added duration logic and validations in vehicle controller --- app/Http/Controllers/VehicleController.php | 54 ++++++++++++++++------ 1 file changed, 41 insertions(+), 13 deletions(-) diff --git a/app/Http/Controllers/VehicleController.php b/app/Http/Controllers/VehicleController.php index 3004ce4..b09b1d1 100644 --- a/app/Http/Controllers/VehicleController.php +++ b/app/Http/Controllers/VehicleController.php @@ -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, -- 2.49.1