diff --git a/src/Controller/CAPI/RiderAppController.php b/src/Controller/CAPI/RiderAppController.php index 20719535..27d7c7de 100644 --- a/src/Controller/CAPI/RiderAppController.php +++ b/src/Controller/CAPI/RiderAppController.php @@ -733,9 +733,14 @@ class RiderAppController extends APIController $em->persist($timestamp_event); + // NOTE: need to discuss at what point do we set rider to available + // is it when rider arrives at home hub? Or only when rider + // clicks Available on app? // tag rider as available $rider->setAvailable(true); + // NOTE: we set current job order to null when rider becomes + // available // set rider's current job order to null $rider->setCurrentJobOrder(); @@ -976,6 +981,26 @@ class RiderAppController extends APIController $rider->setAvailable(true); + // create timestamp event when rider set to available via app + $event = new JOEvent(); + $event->setDateHappen(new DateTime()) + ->setTypeID(JOEventType::RIDER_AVAILABLE) + ->setRider($rider); + + // get rider's current job order + $jo = $rider->getCurrentJobOrder(); + + // check if jo is null + if ($jo != null) + { + // set delivery status + $jo->setDeliveryStatus(DeliveryStatus::RIDER_AVAILABLE); + + // set event's jo + $event->setJobOrder($jo); + } + + $em->persist($event); $em->flush(); $data = []; diff --git a/src/Controller/ReportController.php b/src/Controller/ReportController.php index 51a874de..de19f55a 100644 --- a/src/Controller/ReportController.php +++ b/src/Controller/ReportController.php @@ -854,6 +854,9 @@ class ReportController extends Controller 'Date and Time Rider Arrived Hub', 'Date Rider Arrived Hub', 'Time Rider Arrived Hub', + 'Date and Time Rider is Available', + 'Date Rider is Available', + 'Time Rider is Available', 'Created vs Arrival', 'Customer Latitude', 'Customer Longitude', @@ -915,7 +918,8 @@ class ReportController extends Controller $data = array_merge($hub_events, $blanks, $assign_events, $blanks, $accept_events, $blanks, $depart_hub_events, $blanks, $arrive_hub_prejo_events, $blanks, $depart_hub_prejo_events, $blanks, $arrive_events, $blanks, $start_events, $blanks, - $end_events, $blanks, $arrive_hub_postjo_events, $blanks, $depart_hub_postjo_events, $blanks, $arrive_hub_events); + $end_events, $blanks, $arrive_hub_postjo_events, $blanks, $depart_hub_postjo_events, $blanks, $arrive_hub_events, + $blanks, $available_events); $resp = new StreamedResponse(); $resp->setCallback(function() use ($data) { @@ -2004,6 +2008,23 @@ class ReportController extends Controller } } + // find date and time when rider is available + $datetime_rider_available = ''; + $date_rider_available = ''; + $time_rider_available = ''; + $rider_available_event_type = JOEventType::RIDER_AVAILABLE; + $rider_available_events = $em->getRepository(JOEvent::class)->findBy(['job_order' => $jo, 'type_id'=> $rider_available_event_type], ['date_happen' => 'DESC']); + if ($rider_available_events != null) + { + foreach ($rider_available_events as $rider_available_event) + { + $datetime_rider_available = $rider_available_event->getDateHappen()->format('d-M-Y H:i'); + $date_rider_available = $rider_available_event->getDateHappen()->format('d-M-Y'); + $time_rider_available = $rider_available_event->getDateHappen()->format('H:i'); + } + } + + // compute time difference between jo creation and rider arrival $time_diff_create_arrive = ''; if ($dt_rider_arrive != null) @@ -2169,6 +2190,9 @@ class ReportController extends Controller $datetime_rider_arrive_hub, $date_rider_arrive_hub, $time_rider_arrive_hub, + $datetime_rider_available, + $date_rider_available, + $time_rider_available, $time_diff_create_arrive, $coord_lat, $coord_long, diff --git a/src/Ramcar/DeliveryStatus.php b/src/Ramcar/DeliveryStatus.php index b4d06871..b5007bc5 100644 --- a/src/Ramcar/DeliveryStatus.php +++ b/src/Ramcar/DeliveryStatus.php @@ -19,6 +19,7 @@ class DeliveryStatus extends NameValue const RIDER_ARRIVE_HUB = 'rider_arrive_hub'; const CANCELLED = 'cancelled'; const FULFILLED = 'fulfilled'; + const RIDER_AVAILABLE = 'rider_available'; const COLLECTION = [ 'rider_assign' => 'Assigned Rider', @@ -36,6 +37,7 @@ class DeliveryStatus extends NameValue 'rider_arrive_hub' => 'Rider Arrive Hub', 'cancelled' => 'Cancelled', 'fulfilled' => 'Fulfilled', + 'rider_available' => 'Rider Available', ]; } diff --git a/src/Ramcar/JOEventType.php b/src/Ramcar/JOEventType.php index 3413f660..e722847c 100644 --- a/src/Ramcar/JOEventType.php +++ b/src/Ramcar/JOEventType.php @@ -22,6 +22,7 @@ class JOEventType extends NameValue const RIDER_ARRIVE_HUB_POST_JO = 'rider_arrive_hub_post_jo'; const RIDER_DEPART_HUB_POST_JO = 'rider_depart_hub_post_jo'; const RIDER_ARRIVE_HUB = 'rider_arrive_hub'; + const RIDER_AVAILABLE = 'rider_available'; const COLLECTION = [ 'create' => 'Created', @@ -42,5 +43,6 @@ class JOEventType extends NameValue 'rider_arrive_hub_post_jo' => 'Rider Arrive Hub Post JO', 'rider_depart_hub_post_jo' => 'Rider Depart Hub Post JO', 'rider_arrive_hub' => 'Rider Arrive Hub', + 'rider_available' => 'Rider Available', ]; }