Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
 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;
 }
Exemplo n.º 4
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);
 }