From b66ebf7eebd2d1b84d6ce7c0d624fe762177e4d2 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Thu, 30 Apr 2020 07:00:25 +0000 Subject: [PATCH] Fix when no hubs are found. #392 --- config/routes/api.yaml | 5 +++ src/Controller/APIController.php | 70 +++++++++++++++++++++++++------- 2 files changed, 60 insertions(+), 15 deletions(-) diff --git a/config/routes/api.yaml b/config/routes/api.yaml index 2d9f8925..4fd7d00e 100644 --- a/config/routes/api.yaml +++ b/config/routes/api.yaml @@ -164,3 +164,8 @@ api_version_check: path: /api/version_check controller: App\Controller\APIController::versionCheck methods: [GET] + +api_schedule_option_status: + path: /api/schedule_option_status + controller: App\Controller\APIController::scheduleOptionStatus + methods: [GET] diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 35758290..908dda39 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -2687,6 +2687,42 @@ class APIController extends Controller implements LoggedController return $res->getReturnResponse(); } + public function scheduleOptionStatus(Request $req) + { + // check required parameters and api key + $required_params = []; + $em = $this->getDoctrine()->getManager(); + $res = $this->checkParamsAndKey($req, $em, $required_params); + if ($res->isError()) + return $res->getReturnResponse(); + + // TODO: end of ECQ, have this return true + $schedule_choice = true; + + // TODO: remove the time check after ECQ + // get current time + $current_time = time(); + $start_advance_order_time = strtotime('17:00'); + $end_advance_order_time = strtotime('08:00'); + //$start_advance_order_time = strtotime('08:00'); + //$end_advance_order_time = strtotime('17:00'); + + error_log(date('Y-m-d H:i:s', $current_time)); + error_log(date('Y-m-d H:i:s', $start_advance_order_time)); + error_log(date('Y-m-d H:i:s', $end_advance_order_time)); + + if (($current_time > $start_advance_order_time) && + ($current_time < $end_advance_order_time)) + $schedule_choice = false; + + $data = [ + 'display_schedule_choice' => $schedule_choice, + ]; + $res->setData($data); + + return $res->getReturnResponse(); + } + protected function findCustomerByNumber($number) { $em = $this->getDoctrine()->getManager(); @@ -2888,6 +2924,7 @@ class APIController extends Controller implements LoggedController { // get the nearest 10 hubs $hub_data = []; + $nearest_hubs_with_distance = []; $hubs = $map_tools->getClosestOpenHubs($coordinates, 10); foreach ($hubs as $hub) @@ -2899,26 +2936,29 @@ class APIController extends Controller implements LoggedController $nearest = null; $slot_found = false; // find the nearest hub - foreach ($nearest_hubs_with_distance as $nhd) + if (!empty($nearest_hubs_with_distance)) { - if (empty($nearest)) - $nearest = $nhd; - else + foreach ($nearest_hubs_with_distance as $nhd) { - if ($nhd['distance'] < $nearest['distance']) - $nearest = $nhd; + if (empty($nearest)) + $nearest = $nhd; + else + { + if ($nhd['distance'] < $nearest['distance']) + $nearest = $nhd; + } } - } - // get slots of nearest hub - if ($nearest != null) - { - $hub_slots = $this->getHubRiderSlots($nearest['hub'], $em); + // get slots of nearest hub + if ($nearest != null) + { + $hub_slots = $this->getHubRiderSlots($nearest['hub'], $em); - $hub_data = [ - 'hub' => $nearest['hub'], - 'slots' => $hub_slots, - ]; + $hub_data = [ + 'hub' => $nearest['hub'], + 'slots' => $hub_slots, + ]; + } } return $hub_data;