protected function driverAndLocationInfo($input) { $response['delivery_zone'] = array(); //getting the driver information based on current meal plan $driverHelper = new DriverHelper(); $drivers = $driverHelper->getDriver(); //getting all the delivery zone in a market office $market_city_ids_arr = array(); $market_city_ids = MarketOfficeCity::select('id')->where('market_office_id', '=', Session::get('admin_market_ofc'))->get(); foreach ($market_city_ids as $eachCT) { if ($eachCT->id) { array_push($market_city_ids_arr, $eachCT->id); } } if (isset($market_city_ids_arr) && is_array($market_city_ids_arr) && count($market_city_ids_arr) > 0) { $delivery_zone = MarketOfficeCityDeliveryZones::select("id", "delivery_zone_name")->whereIn('market_office_city_id', $market_city_ids_arr)->get(); $key = 1; foreach ($delivery_zone as $val) { $response['delivery_zone'][$val["id"]] = $val; if (empty($drivers['data'][$val["id"]])) { $drivers['data'][$val["id"]] = array(); } if (empty($drivers['each_driver_count'][$val["id"]])) { $drivers['each_driver_count'][$val["id"]] = 0; } } } $response['data'] = $drivers['data']; $response['count'] = $drivers['count']; $response['meal_cat_name'] = $drivers['meal_cat_name']; $response['each_driver_count'] = $drivers['each_driver_count']; return $response; }
public function getMarketOfficeCity($zone_id) { $mrkt_office = MarketOfficeCity::select('market_office_city.market_office_id')->leftJoin('market_office_city_delivery_zone', 'market_office_city_delivery_zone.market_office_city_id', '=', 'market_office_city.id')->where('market_office_city_delivery_zone.id', '=', $zone_id)->first(); if (!empty($mrkt_office) && $mrkt_office->market_office_id != '') { $market_office_id = $mrkt_office->market_office_id; } else { $market_office_id = NULL; } return $market_office_id; }
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); }