public function getDriver($skip = 0, $limit = 300) { $drivers = array(); $delivery_zones = array(); $driverCount = array(); $count = 0; $meal_cat = ""; $date = date('Y-m-d'); $now = time(); if (Session::get('admin_market_ofc') && Session::get('admin_market_ofc') != "") { $selected_cityofc = Session::get('admin_market_ofc'); $meal_plans = FoodjetsMealPlan::select('id', 'end_time', 'start_time', "foodjets_meal_category_id")->where('market_office_id', '=', $selected_cityofc)->where(DB::raw("DATE(meal_plan_date)"), $date)->where('active', 'true')->get(); } else { $meal_plans = FoodjetsMealPlan::select('id', 'end_time', 'start_time', "foodjets_meal_category_id")->where(DB::raw("DATE(meal_plan_date)"), $date)->where('active', 'true')->get(); } $meal_plan_id = 0; $meal_category_id = 0; foreach ($meal_plans as $val) { $start_time = strtotime($date . " " . $val['start_time']); $end_time = strtotime($date . " " . $val['end_time']); if ($start_time <= $now && $end_time >= $now) { $meal_plan_id = $val['id']; $meal_category_id = $val['foodjets_meal_category_id']; } } /* $day_of_week = array("sun","mon","tue","wed","thr","fri","sat"); $today = date('w',strtotime($date)); $delivery_zones = MarketOfficeCityDeliveryZones::select('id')->where("pause_delivery_zone","false")->where("is_open_".$day_of_week[$today],"true")->get(); */ $delivery_zones = MarketOfficeCityDeliveryZones::select('id')->where("pause_delivery_zone", "false")->get(); if ($meal_plan_id > 0) { $meal_cat = FoodjetsMealCategory::where("id", $meal_category_id)->pluck("cat_name"); $todayDriverLists = TodaysDriversInventory::select(DB::raw("DISTINCT(todays_drivers_list_id) as todays_drivers_list_id"))->where("foodjets_meal_plan_id", $meal_plan_id)->get(); $driverListIds = array(); foreach ($todayDriverLists as $val) { $driverListIds[] = $val['todays_drivers_list_id']; } //print_r($driverListIds);exit; $driversIds = TodaysDriversList::select("todays_drivers_list.id", "todays_drivers_list.drivers_id", 'todays_drivers_list.market_office_city_delivery_zone_id')->whereIn("todays_drivers_list.id", $driverListIds)->get(); foreach ($driversIds as $val) { $driverInfo = Driver::select('first_name', 'last_name', 'image', 'onfleet_worker_status')->where('id', $val['drivers_id'])->first(); if ($driverInfo['image'] != "" && $driverInfo['image'] != null) { $image = Config::get('images.driver') . $driverInfo['image']; } else { $image = "/images/avatar.png"; } $val['delivery_zone_name'] = $val['market_office_city_delivery_zone_id'] == null || $val['market_office_city_delivery_zone_id'] == "" ? Session::get("current_state_database") : $val['market_office_city_delivery_zone_id']; $drivers[$val['market_office_city_delivery_zone_id']][] = array('meal_plan_id' => $meal_plan_id, 'list_id' => $val['id'], 'drivers_id' => $val['drivers_id'], 'market_office_city_delivery_zone_id' => $val['market_office_city_delivery_zone_id'], 'name' => $driverInfo['first_name'] . " " . $driverInfo['last_name'], 'image' => $image, 'driver_status' => $driverInfo['onfleet_worker_status'] == "true" ? true : false); if (empty($driverCount[$val['market_office_city_delivery_zone_id']])) { $driverCount[$val['market_office_city_delivery_zone_id']] = 0; } $driverCount[$val['market_office_city_delivery_zone_id']]++; $count++; } } return array('data' => $drivers, 'count' => $count, 'meal_cat_name' => $meal_cat, "each_driver_count" => $driverCount); }
public function getZones($market_ofc_ids) { $delivery_zones = array(); $count = 0; $zones = MarketOfficeCityDeliveryZones::select("market_office_city_delivery_zone.id", "market_office_city_delivery_zone.delivery_zone_name", "market_office_city.market_office_id")->join("market_office_city", "market_office_city.id", "=", "market_office_city_delivery_zone.market_office_city_id")->whereIn('market_office_city.market_office_id', $market_ofc_ids)->get(); foreach ($zones as $eachCT) { $divercnt = $this->getZoneDriverCount($eachCT->id, $eachCT->market_office_id); $delivery_zones[$eachCT->market_office_id][$eachCT->id] = array("id" => $eachCT->id, "zone_name" => $eachCT->delivery_zone_name, "driver_cnt" => $divercnt); $count += $divercnt; } return array("delivery_zones" => $delivery_zones, "count" => $count); }
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; }
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); }