diff --git a/src/Controller/CAPI/RiderController.php b/src/Controller/CAPI/RiderController.php index db327b3c..1a5a56a1 100644 --- a/src/Controller/CAPI/RiderController.php +++ b/src/Controller/CAPI/RiderController.php @@ -712,6 +712,50 @@ class RiderController extends APIController public function hubArrive(Request $req, EntityManagerInterface $em) { + $required_params = []; + $missing = $this->checkMissingParameters($req, $required_params); + if (count($missing) > 0) + { + $params = implode(', ', $missing); + return new APIResponse(false, 'Missing parameter(s): ' . $params); + } + + // get capi user to link to rider api user + $capi_user_id = $this->getUser()->getID(); + + // check if capi user already has a rider api user + $rapi_session = $em->getRepository(RiderAPISession::class)->findOneBy(['capi_user_id' => $capi_user_id]); + + // are we logged in? + if (!$rapi_session->hasRider()) + return new APIResponse(false, 'No logged in rider.'); + + $rider = $rapi_session->getRider(); + + // get rider's current job order + $jo = $rider->getCurrentJobOrder(); + + // set delivery status + $jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE_HUB); + + $timestamp_event = new JOEvent(); + $timestamp_event->setDateHappen(new DateTime()) + ->setTypeID(JOEventType::RIDER_ARRIVE_HUB) + ->setJobOrder($jo) + ->setRider($rider); + + $em->persist($timestamp_event); + + // tag rider as available + $rider->setAvailable(true); + + // set rider's current job order to null + $rider->setCurrentJobOrder(); + + $em->flush(); + + $data = []; + return new APIResponse(true, 'Rider arrive at hub.', $data); } public function payment(Request $req, EntityManagerInterface $em, JobOrderHandlerInterface $jo_handler, @@ -844,8 +888,122 @@ class RiderController extends APIController return new APIResponse(true, 'Job order paid and fulfilled.', $data); } + public function postHubArrive(Request $req, EntityManagerInterface $em) + { + $required_params = []; + $missing = $this->checkMissingParameters($req, $required_params); + if (count($missing) > 0) + { + $params = implode(', ', $missing); + return new APIResponse(false, 'Missing parameter(s): ' . $params); + } + + // get capi user to link to rider api user + $capi_user_id = $this->getUser()->getID(); + + // check if capi user already has a rider api user + $rapi_session = $em->getRepository(RiderAPISession::class)->findOneBy(['capi_user_id' => $capi_user_id]); + + // are we logged in? + if (!$rapi_session->hasRider()) + return new APIResponse(false, 'No logged in rider.'); + + $rider = $rapi_session->getRider(); + + // get rider's current job order + $jo = $rider->getCurrentJobOrder(); + + // set delivery status + $jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE_HUB_POST_JO); + + // create time stamp event for JO event + $event = new JOEvent(); + $event->setDateHappen(new DateTime()) + ->setTypeID(JOEventType::RIDER_ARRIVE_HUB_POST_JO) + ->setJobOrder($jo) + ->setRider($rider); + + $em->persist($event); + $em->flush(); + + $data = []; + return new APIResponse(true, 'Rider arrive hub post jo.', $data); + + } + + public function postHubDepart(Request $req, EntityManagerInterface $em) + { + $required_params = []; + $missing = $this->checkMissingParameters($req, $required_params); + if (count($missing) > 0) + { + $params = implode(', ', $missing); + return new APIResponse(false, 'Missing parameter(s): ' . $params); + } + + // get capi user to link to rider api user + $capi_user_id = $this->getUser()->getID(); + + // check if capi user already has a rider api user + $rapi_session = $em->getRepository(RiderAPISession::class)->findOneBy(['capi_user_id' => $capi_user_id]); + + // are we logged in? + if (!$rapi_session->hasRider()) + return new APIResponse(false, 'No logged in rider.'); + + $rider = $rapi_session->getRider(); + + // get rider's current job order + $jo = $rider->getCurrentJobOrder(); + + // set delivery status + $jo->setDeliveryStatus(DeliveryStatus::RIDER_DEPART_HUB_POST_JO); + + // create time stamp event for JO event + $event = new JOEvent(); + $event->setDateHappen(new DateTime()) + ->setTypeID(JOEventType::RIDER_DEPART_HUB_POST_JO) + ->setJobOrder($jo) + ->setRider($rider); + + $em->persist($event); + $em->flush(); + + $data = []; + return new APIResponse(true, 'Rider depart hub post jo.', $data); + } + public function available(Request $req, EntityManagerInterface $em) { + $required_params = []; + $missing = $this->checkMissingParameters($req, $required_params); + if (count($missing) > 0) + { + $params = implode(', ', $missing); + return new APIResponse(false, 'Missing parameter(s): ' . $params); + } + + // get capi user to link to rider api user + $capi_user_id = $this->getUser()->getID(); + + // check if capi user already has a rider api user + $rapi_session = $em->getRepository(RiderAPISession::class)->findOneBy(['capi_user_id' => $capi_user_id]); + + // are we logged in? + if (!$rapi_session->hasRider()) + return new APIResponse(false, 'No logged in rider.'); + + $rider = $rapi_session->getRider(); + + $rider->setAvailable(true); + + // set rider's current job order to null + $rider->setCurrentJobOrder(); + + $em->flush(); + + $data = []; + return new APIResponse(true, 'Rider available.', $data); } public function getPromos(Request $req, EntityManagerInterface $em) @@ -860,14 +1018,6 @@ class RiderController extends APIController { } - public function postHubArrive(Request $req, EntityManagerInterface $em) - { - } - - public function postHubDepart(Request $req, EntityManagerInterface $em) - { - } - protected function checkMissingParameters(Request $req, $params = []) { $missing = [];