Exemplo n.º 1
0
 protected function getMarketOfficeZonesDrivers()
 {
     $marketOfficeHelper = new MarketOfficeHelper();
     $market_office = $marketOfficeHelper->getMarketOffice();
     $delivery_zones = $marketOfficeHelper->getZones($market_office['market_ofc_ids']);
     $zones = $delivery_zones['delivery_zones'];
     foreach ($market_office['market_ofc'] as $key => $val) {
         if (!empty($zones[$key])) {
             $market_office['market_ofc'][$key]['zones'] = $zones[$key];
         } else {
             $market_office['market_ofc'][$key]['zones'] = array();
         }
     }
     return array("market_ofc" => $market_office['market_ofc'], 'total_driver_cnt' => $delivery_zones['count']);
 }
Exemplo n.º 2
0
 protected function zoneCntInMrkt($market_office_id)
 {
     $zoneCnt = 0;
     $zoneDetails = array();
     $marketOfcCityIdCnt = MarketOfficeCity::where('market_office_id', $market_office_id)->count();
     if ($marketOfcCityIdCnt > 0) {
         $marketOfcCityIds = MarketOfficeCity::select('id')->where('market_office_id', $market_office_id)->get()->toArray();
         if (count($marketOfcCityIds) > 0) {
             $zoneCnt = MarketOfficeCityDeliveryZones::whereIn('market_office_city_id', $marketOfcCityIds)->count();
             if ($zoneCnt > 0) {
                 $zoneDetails = MarketOfficeCityDeliveryZones::select('id', 'delivery_zone_name', 'wait_time_ratio', 'wait_time_override')->whereIn('market_office_city_id', $marketOfcCityIds)->get();
                 $marketOfficeHelper = new MarketOfficeHelper();
                 $ApiRedis = new ApiRedis();
                 $db = $this->redisDb;
                 foreach ($zoneDetails as $k => $v) {
                     $zoneDetails[$k]['driver_cnt'] = $marketOfficeHelper->getZoneDriverCount($v->id, $market_office_id);
                     $count = $ApiRedis->getOrderCountQueue($v->id, $db);
                     $zoneDetails[$k]['unassigned_orders'] = $count['unassigned'];
                     $zoneDetails[$k]['assigned_orders'] = $count['assigned'];
                     $zoneDetails[$k]['total_orders'] = $zoneDetails[$k]['assigned_orders'] + $zoneDetails[$k]['unassigned_orders'];
                     $wait_time_override = $v->wait_time_override;
                     $wait_time_ratio = $v->wait_time_ratio;
                     if (isset($wait_time_override) && $wait_time_override == 'true') {
                         $wait_time_ratio = $wait_time_override;
                     } else {
                         if ($zoneDetails[$k]['total_orders'] > 0 && $zoneDetails[$k]['driver_cnt'] > 0) {
                             $wait_time_ratio = round($zoneDetails[$k]['total_orders'] / $zoneDetails[$k]['driver_cnt']);
                         } else {
                             $wait_time_ratio = 0;
                         }
                     }
                     if ($wait_time_ratio >= 0 && $wait_time_ratio <= 1.9) {
                         $avgDeliveryTimeMsg = "10-20 Minutes";
                     } else {
                         if ($wait_time_ratio >= 2 && $wait_time_ratio <= 2.9) {
                             $avgDeliveryTimeMsg = "20-30 Minutes";
                         } else {
                             if ($wait_time_ratio >= 3 && $wait_time_ratio <= 3.9) {
                                 $avgDeliveryTimeMsg = "30-40 Minutes";
                             } else {
                                 if ($wait_time_ratio >= 4 && $wait_time_ratio <= 4.9) {
                                     $avgDeliveryTimeMsg = "40-50 Minutes";
                                 } else {
                                     if ($wait_time_ratio == 5) {
                                         $avgDeliveryTimeMsg = "50-60 Minutes";
                                     } else {
                                         if ($wait_time_ratio > 5) {
                                             $avgDeliveryTimeMsg = "1 Hour";
                                         } else {
                                             $avgDeliveryTimeMsg = "1 Hour";
                                         }
                                     }
                                 }
                             }
                         }
                     }
                     $zoneDetails[$k]['cur_delivery_time'] = $avgDeliveryTimeMsg;
                     unset($avgDeliveryTimeMsg);
                 }
                 //unset($driverHelper);
             }
         }
     }
     return array('zone_cnt' => $zoneCnt, 'zone_details' => $zoneDetails);
 }