<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Ride extends CI_Controller { public function __construct() { parent::__construct(); date_default_timezone_set("Asia/Kolkata"); $this->load->model('Ride_model'); $this->load->model('Customer_model'); if(!$this->session->userdata('logged_in')) { redirect(base_url('Login')); } } function import_ride(){ $this->load->model('Broker_model'); $this->load->model('Driver_model'); $this->load->model('Vehicle_model'); $this->load->model('Company_model'); $template['page'] = 'Ride/add_transport'; $template['menu'] = "Ride Management"; $template['sub_menu'] = "Create/Import Rides"; $template['page_desc'] = "Create/Import Ride data"; $template['page_title'] = "Create/Import Ride"; $template['trip_type'] = $this->Ride_model->getTripType(); $template['driver_data'] = $this->Driver_model->getDriver(); $template['broker_data'] = $this->Broker_model->getBroker(); $template['company_data'] = $this->Company_model->getCompany(); $template['vehicle_data'] = $this->Vehicle_model->getVehicle(); $template['appointment_reason'] = $this->Ride_model->getAppReason(); $this->load->view('template',$template); } function excelMapping(){ $flashMsg = array('message'=>'Something went wrong, please try again..!','class'=>'error'); if(!isset($_FILES) || empty($_FILES) || !isset($_FILES['import_file']) || empty($_FILES['import_file']) || !isset($_POST) || empty($_POST) || !isset($_POST['broker_id']) || empty($_POST['broker_id']) || !isset($_POST['company_id']) || empty($_POST['company_id'])){ $this->session->set_flashdata('message',$flashMsg); redirect(base_url('Ride/import_ride')); } $fileType = ''; $importedFile = ''; $this->load->library('upload'); $config = set_upload_all_files("assets/uploads/upload_files"); $config['file_name'] = 'importFile'.date('dmyhis').$_FILES['import_file']['name']; $this->upload->initialize($config); $fileData = explode('.',$_FILES['import_file']['name']); if($this->upload->do_upload('import_file') && !empty($fileData) && isset($fileData[1]) && !empty($fileData[1])){ $fileType = strtolower($fileData[1]); $upload_data = $this->upload->data(); $importedFile = $config['upload_path']."/".$upload_data['file_name']; } else { $this->session->set_flashdata('message',$flashMsg); redirect(base_url('Ride/import_ride')); } $importData = ''; switch($fileType){ case 'csv': $importData = $this->getImportDataCSV($importedFile,0); break; case 'xls': case 'xlsx': $importData = $this->getImportDataExcel($importedFile,0); break; } if(empty($importData) || !isset($importData['status']) || $importData['status'] == 3 || $importData['status'] == 4 || ($importData['status'] == 1 && empty($importData['headerArr']))){ $this->session->set_flashdata('message',$flashMsg); redirect(base_url('Ride/import_ride')); } if ($importData['status'] == 2){ $flashMsg['message'] = "Please Choose a vaild file..!"; $this->session->set_flashdata('message',$flashMsg); redirect(base_url('Ride/import_ride')); } $template['fileType'] = $fileType; $template['headerArr'] = $importData['headerArr']; $template['broker_id'] = $_POST['broker_id']; $template['company_id'] = $_POST['company_id']; $template['import_file'] = $importedFile; $template['page'] = 'Ride/excel_mapping'; $template['menu'] = "Excel Import Manager"; $template['sub_menu'] = "Excel Field Mapping"; $template['page_title'] = "Ride Management"; $template['page_desc'] = "Excel Field Mapping"; $this->load->view('template',$template); } function getImportDataCSV($importedFile = '', $headerRetFlag = 0, $headerOrder = array(), $data = array()){ $header = 0; $insertArr = array(); $headerArr = array(); $insertData = array(); $customerPh = array(); $retData = array('status'=>0); if($headerRetFlag == 1 && (!isset($data['broker_id']) || !isset($data['company_id']) || empty($data['broker_id']) || empty($data['company_id']))){ $retData['status'] = 0; return $retData; } if (empty($importedFile) || !file_exists($importedFile) || ($handle=fopen($importedFile, "r")) === FALSE) { $retData['status'] = 2; return $retData; } if($headerRetFlag == 1 && empty($headerOrder)){ $retData['status'] = 4; return $retData; } while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) { $colCnt = 0; $rowArr = array(); $customerId = ''; foreach($row as $col){ if($header == 0){ $col = str_replace(' ','_',$col); $col = preg_replace('/[^A-Za-z0-9\_\/]/', '', $col); $headerArr[] = $col; }else{ if(isset($headerOrder[$colCnt]) && isset($headerArr[$headerOrder[$colCnt]])){ if($headerArr[$headerOrder[$colCnt]] == 'Appointment_Date'){ $col = date('d-m-Y',strtotime($col)); } if($headerArr[$headerOrder[$colCnt]] == 'Appointment_Time'){ $last = substr($col,-2); $col = str_replace($last,":".$last,$col); $col = (!empty($col))?date('G:i',strtotime($col)):''; } $rowArr[$headerArr[$headerOrder[$colCnt]]] = $col; } else { if($headerArr[$colCnt] == 'Appointment_Date'){ $col = date('d-m-Y',strtotime($col)); } if($headerArr[$colCnt] == 'Appointment_Time'){ $last = substr($col,-2); $col = str_replace($last,":".$last,$col); $col = (!empty($col))?date('G:i',strtotime($col)):''; } $rowArr[$headerArr[$colCnt]] = $col; } $colCnt++; } } if(!empty($headerArr) && $headerRetFlag == 0){ $retData['status'] = 1; $retData['headerArr'] = $headerArr; return $retData; } if($header != 0){ if(!isset($headerOrder['0']) || !isset($headerOrder['1']) || !isset($headerOrder['2']) || !isset($headerOrder['4']) || !isset($headerOrder['5']) || !isset($headerOrder['7']) || !isset($headerOrder['8']) || !isset($headerOrder['10']) || !isset($headerOrder['11']) || !isset($headerOrder['12']) || !isset($headerOrder['13']) || !isset($headerOrder['14']) || !isset($headerOrder['22']) || !isset($headerOrder['23']) || !isset($headerOrder['28'])){ continue; } if(!in_array($row[$headerOrder['5']],$customerPh)){ $customerData = $this->Customer_model->getCustomer(array('phone' => $row[$headerOrder['5']])); if(empty($customerData)){ $custData = array( 'age'=>$row[$headerOrder['4']],'phone'=>$row[$headerOrder['5']], 'last_name'=>$row[$headerOrder['1']],'first_name'=>$row[$headerOrder['2']], 'status'=>'0' ); $customerId = $this->Customer_model->createCustomer($custData); if(empty($customerId)){ continue; } } else { $customerId = $customerData->customer_id; } $customerPh[$customerId] = $row[$headerOrder['5']]; } else { $customerId = array_search($row[$headerOrder['5']],$customerPh); } $time = '12:00'; if(!empty($row[$headerOrder['10']])){ $last = substr($row[$headerOrder['10']], -2); $time = str_replace($last,":".$last,$row[$headerOrder['10']]); $time = (!empty($time))?date('G:i',strtotime($time)):'12:00'; } $date_time = (!empty($row[8]))?date('d-m-Y',strtotime($row[$headerOrder['8']])).' '.$time:''; $tripBidStatus = (isset($headerOrder['37']) && isset($row[$headerOrder['37']]))? $row[$headerOrder['37']]:''; $insertData = array( 'broker_id' => $data['broker_id'], 'company_id' => $data['company_id'], 'customer_id' => $customerId, 'age' => $row[$headerOrder['4']], 'phone' => $row[$headerOrder['5']], 'trip_no' => $row[$headerOrder['7']], 'trip_cost' => $row[$headerOrder['22']], 'trip_type' => $row[$headerOrder['14']], 'medical_no' => $row[$headerOrder['0']], 'reason_code' => $row[$headerOrder['11']], 'trip_status' => $row[$headerOrder['12']], 'vehicle_type' => $row[$headerOrder['13']], 'patient_name' => $row[$headerOrder['2']].' '.$row[$headerOrder['1']], 'drop_location' => $row[$headerOrder['28']], 'pickup_location' => $row[$headerOrder['23']], 'trip_bid_status' => $tripBidStatus, 'data' => json_encode($rowArr) ); $insertData['appointment_time'] = strtotime($date_time); $insertArr[] = $insertData; } $header = 1; } fclose($handle); if(empty($insertArr)){ $retData['status'] = 3; } else { $retData['status'] = 1; $retData['insertData'] = $insertArr; } return $retData; } function getImportDataExcel($importedFile = '', $headerRetFlag = 0, $headerOrder = array(), $data = array()){ $header = 0; $insertArr = array(); $headerArr = array(); $insertData = array(); $customerPh = array(); $custData = array(); $retData = array('status'=>0); if($headerRetFlag == 1 && (!isset($data['broker_id']) || !isset($data['company_id']) || empty($data['broker_id']) || empty($data['company_id']))){ $retData['status'] = 0; return $retData; } if (empty($importedFile) || !file_exists($importedFile)){ $retData['status'] = 2; return $retData; } $reader = new SpreadsheetReader($importedFile); if (empty($reader) || count($reader->sheets()) < 1){ $retData['status'] = 3; return $retData; } if($headerRetFlag == 1 && empty($headerOrder)){ $retData['status'] = 4; return $retData; } for($i=0; $i < count($reader->sheets()); $i++){ $reader->ChangeSheet($i); foreach ($reader as $row){ $colCnt = 0; $rowArr = array(); $customerId = ''; foreach($row as $col){ if($header == 0){ $col = str_replace(' ','_',$col); $col = preg_replace('/[^A-Za-z0-9\_\/]/', '', $col); $headerArr[] = $col; }else{ if(isset($headerOrder[$colCnt]) && isset($headerArr[$headerOrder[$colCnt]])){ if($headerArr[$headerOrder[$colCnt]] == 'Appointment_Date'){ $col = date('d-m-Y',strtotime($col)); } if($headerArr[$headerOrder[$colCnt]] == 'Appointment_Time'){ $last = substr($col,-2); $col = str_replace($last,":".$last,$col); $col = (!empty($col))?date('G:i',strtotime($col)):''; } $rowArr[$headerArr[$headerOrder[$colCnt]]] = $col; } else { if($headerArr[$colCnt] == 'Appointment_Date'){ $col = date('d-m-Y',strtotime($col)); } if($headerArr[$colCnt] == 'Appointment_Time'){ $last = substr($col,-2); $col = str_replace($last,":".$last,$col); $col = (!empty($col))?date('G:i',strtotime($col)):''; } $rowArr[$headerArr[$colCnt]] = $col; } $colCnt++; } } if(!empty($headerArr) && $headerRetFlag == 0){ $retData['status'] = 1; $retData['headerArr'] = $headerArr; return $retData; } if($header != 0){ if(!isset($headerOrder['0']) || !isset($headerOrder['1']) || !isset($headerOrder['2']) || !isset($headerOrder['4']) || !isset($headerOrder['5']) || !isset($headerOrder['7']) || !isset($headerOrder['8']) || !isset($headerOrder['10']) || !isset($headerOrder['11']) || !isset($headerOrder['12']) || !isset($headerOrder['13']) || !isset($headerOrder['14']) || !isset($headerOrder['22']) || !isset($headerOrder['23']) || !isset($headerOrder['28'])){ continue; } if(!in_array($row[$headerOrder['5']],$customerPh)){ $customerData=$this->Customer_model->getCustomer(array('phone'=>$row[$headerOrder['5']])); if(empty($customerData)){ $custData = array('age'=>$row[$headerOrder['4']], 'phone'=>$row[$headerOrder['5']], 'last_name'=>$row[$headerOrder['1']], 'first_name'=>$row[$headerOrder['2']], 'status'=>'0'); $customerId = $this->Customer_model->createCustomer($custData); if(empty($customerId)){ continue; } } else { $customerId = $customerData->customer_id; } $customerPh[$customerId] = $row[$headerOrder['5']]; } else { $customerId = array_search($row[$headerOrder['5']],$customerPh); } $time = '12:00'; if(!empty($row[$headerOrder['10']])){ $last = substr($row[$headerOrder['10']], -2); $time = str_replace($last,":".$last,$row[$headerOrder['10']]); $time = (!empty($time))?date('G:i',strtotime($time)):'12:00'; } $date_time = (!empty($row[8]))?date('d-m-Y',strtotime($row[$headerOrder['8']])).' '.$time:''; $tripBidStatus = (isset($headerOrder['37']) && isset($row[$headerOrder['37']]))? $row[$headerOrder['37']]:''; $insertData = array( 'broker_id' => $data['broker_id'], 'company_id' => $data['company_id'], 'customer_id' => $customerId, 'age' => $row[$headerOrder['4']], 'phone' => $row[$headerOrder['5']], 'trip_no' => $row[$headerOrder['7']], 'trip_cost' => $row[$headerOrder['22']], 'trip_type' => $row[$headerOrder['14']], 'medical_no' => $row[$headerOrder['0']], 'reason_code' => $row[$headerOrder['11']], 'trip_status' => $row[$headerOrder['12']], 'vehicle_type' => $row[$headerOrder['13']], 'patient_name' => $row[$headerOrder['2']].' '.$row[$headerOrder['1']], 'drop_location' => $row[$headerOrder['28']], 'pickup_location' => $row[$headerOrder['23']], 'trip_bid_status' => $tripBidStatus, 'data' => json_encode($rowArr) ); $insertData['appointment_time'] = strtotime($date_time); $insertArr[] = $insertData; } $header = 1; } } if(empty($insertArr)){ $retData['status'] = 3; } else { $retData['status'] = 1; $retData['insertData'] = $insertArr; } return $retData; } function import(){ $flashMsg = array('message'=>'Something went wrong, please try again..!','class'=>'error'); if(!isset($_POST) || empty($_POST) || !isset($_POST['broker_id']) || empty($_POST['broker_id']) || !isset($_POST['file_type']) || empty($_POST['file_type']) || !isset($_POST['company_id']) || empty($_POST['company_id']) || !isset($_POST['import_file']) || empty($_POST['import_file']) || !isset($_POST['header_order']) || empty($_POST['header_order'])){ $this->session->set_flashdata('message',$flashMsg); redirect(base_url('Ride/import_ride')); } $data = array('broker_id'=>$_POST['broker_id'],'company_id'=>$_POST['company_id']); switch($_POST['file_type']){ case 'csv': $respStatus = $this->getImportDataCSV($_POST['import_file'],1,$_POST['header_order'],$data); break; case 'xls': case 'xlsx': $respStatus = $this->getImportDataExcel($_POST['import_file'],1,$_POST['header_order'],$data); break; } if(!empty($respStatus) && isset($respStatus['status']) && $respStatus['status'] != ''){ if($respStatus['status'] == 1){ $status = $this->Ride_model->uploadRides($respStatus['insertData']); if($status){ $flashMsg['class'] = "success"; $flashMsg['message'] = "Upload Scuccessfull"; $this->session->set_flashdata('message',$flashMsg); unlink($_POST['import_file']); } else { $respStatus['status'] = '3'; } unset($respStatus['insertData']); } } else { $respStatus['status'] = '0'; } echo json_encode($respStatus);exit; } function create_ride(){ $flashMsg = array('message'=>'Something went wrong, please try again..!','class'=>'error'); if(!isset($_POST) || empty($_POST)){ $this->session->set_flashdata('message',$flashMsg); redirect(base_url('Ride/import_ride')); } if($err == 0 && (!isset($_POST['medical_no']) || empty($_POST['medical_no']))){ $err = 1; $errMsg = 'Medical Number'; }else if($err == 0 && (!isset($_POST['age']) || empty($_POST['age']))){ $err = 1; $errMsg = 'Age'; }else if($err == 0 && (!isset($_POST['appointment_date']) || empty($_POST['appointment_date']))){ $err = 1; $errMsg = 'Appointment date'; }else if($err == 0 && (!isset($_POST['trip_cost']) || empty($_POST['trip_cost']))){ $err = 1; $errMsg = 'Trip Cost'; }else if($err == 0 && (!isset($_POST['vehicle_type']) || empty($_POST['vehicle_type']))){ $err = 1; $errMsg = 'Vechile Type'; }else if($err == 0 && (!isset($_POST['first_name']) || empty($_POST['first_name']))){ $err = 1; $errMsg = 'Name'; }else if($err == 0 && (!isset($_POST['phone']) || empty($_POST['phone']))){ $err = 1; $errMsg = 'Phone Number'; }else if($err == 0 && (!isset($_POST['appointment_time']) || empty($_POST['appointment_time']))){ $err = 1; $errMsg = 'Appointment Time'; }else if($err == 0 && (!isset($_POST['pickup_location']) || empty($_POST['pickup_location']))){ $err = 1; $errMsg = 'Pickup Location'; }else if($err == 0 && (!isset($_POST['trip_type']) || empty($_POST['trip_type']))){ $err = 1; $errMsg = 'Trip Type'; }else if($err == 0 && (!isset($_POST['last_name']) || empty($_POST['last_name']))){ $err = 1; $errMsg = 'Name'; }else if($err == 0 && (!isset($_POST['reason_code']) || empty($_POST['reason_code']))){ $err = 1; $errMsg = 'Reason'; }else if($err == 0 && (!isset($_POST['drop_location']) || empty($_POST['drop_location']))){ $err = 1; $errMsg = 'Drop Location'; } if(!isset($_POST['driver_id']) || empty($_POST['driver_id'])){ unset($_POST['driver_id']); } if($err == 1){ $flashMsg['message'] = $errMsg." is mandatory"; $this->session->set_flashdata('message',$flashMsg); redirect(base_url('Ride/import_ride')); } $data['Medicaid_Number'] = $_POST['medical_no']; $data['Members_First_Name'] = $_POST['first_name']; $data['Members_Last_Name'] = $_POST['last_name']; $data['Members_Age'] = $_POST['age']; $data['Drop_Location'] = $_POST['drop_location']; $data['Pickup_Location'] = $_POST['pickup_location']; $data["Appointment_Date"] = (!empty($_POST['appointment_date']))?date('d-m-y',strtotime($_POST['appointment_date'])):''; $data["Appointment_Time"] = (!empty($_POST['appointment_time']))?date('G:i',strtotime($_POST['appointment_time'])):''; $data['Vehicle_Type'] = $_POST['vehicle_type']; $data['Trip_Type'] = $_POST['trip_type']; $data['Trip_Cost'] = $_POST['trip_cost']; $data['Trip_Reason_Code'] = $_POST['reason_code']; $data['Pregnant_Flag'] = (isset($_POST['pregnant_flag']))?1:0; $data['Attendant_Flag'] = (isset($_POST['attendant_flag']))?1:0; $data['Wheelchair_Flag'] = (isset($_POST['wheelchair_flag']))?1:0; $data['Crutches_/_Walker_/_Cane_Flag'] = (isset($_POST['c_w_c_flag']))?1:0; $data['Members_Date_of_Birth'] = $data['Members_Phone_Number'] = $data['Members_Alt_Phone'] = $data['Trip_Number'] = $data['Pickup_Zip_Code'] = $data['Trip_Status'] = $data['Pickup_City'] = $data['Number_of_Car_Seats_Required'] = $data['Number_of_Additional_Passengers'] = $data['Copay'] = $data['Additional_Passengers_With_Appointments'] = $data['Trip_Mileage'] = $data['Delivery_City'] = $data['Pickup_State'] = $data['Delivery_Zip_Code'] = $data['Delivery_Name'] = $data['Trip_Status_Date'] = $data['Delivery_State'] = $data['Appointment_Day_of_Week'] = $data['Delivery_Phone_Number'] = $data['Special_Needs'] = $data['Inst_\/_Directions'] = $data['Return_Time'] = $data['Trip_Bid_Status'] = $data['Date_Trip_Bid_Status_Was_Changed'] = $data['Confirmation_Number'] = ''; $_POST['patient_name'] = $_POST['first_name'].' '.$_POST['last_name']; $date_time = (!empty($_POST['appointment_date']))?$_POST['appointment_date']:''; $date_time .= (!empty($_POST['appointment_time']))?' '.$_POST['appointment_time']:''; $_POST['appointment_time'] = strtotime($date_time); unset($_POST['first_name']); unset($_POST['last_name']); unset($_POST['c_w_c_flag']); unset($_POST['pregnant_flag']); unset($_POST['attendant_flag']); unset($_POST['wheelchair_flag']); unset($_POST['appointment_date']); $_POST['data'] = json_encode($data); $status = $this->Ride_model->create_ride($_POST); if($status){ $flashMsg['class'] = "success"; $flashMsg['message'] = "Upload Scuccessfull"; $this->session->set_flashdata('message',$flashMsg); redirect(base_url('Ride/view_rides')); } $this->session->set_flashdata('message',$flashMsg); redirect(base_url('Ride/import_ride')); } function view_rides(){ $this->load->model('Broker_model'); $template['page'] = 'Ride/view_rides'; $template['menu'] = "Ride Management"; $template['sub_menu'] = "View Rides"; $template['page_desc'] = "View Rides Details"; $template['broker_id'] = (isset($_POST['broker_id']))?$_POST['broker_id']:''; $template['page_title'] = "View Rides"; $company_id = ($this->session->userdata['user_type'] != 1)?$this->session->userdata['id']:''; $template['ride_data'] = $this->Ride_model->getRideData('',$company_id,$template['broker_id']); $template['broker_data'] = $this->Broker_model->getBroker(); $this->load->view('template',$template); } function changeStatus($ride_id = '',$status = '1'){ $flashMsg = array('message'=>'Something went wrong, please try again..!','class'=>'error'); if(empty($ride_id)){ $this->session->set_flashdata('message',$flashMsg); redirect(base_url('Ride/view_rides')); } $ride_id = decode_param($ride_id); $status = $this->Ride_model->changeStatus($ride_id,$status); if(!$status){ $this->session->set_flashdata('message',$flashMsg); } redirect(base_url('Ride/view_rides')); } function view($ride_id = ''){ $flashMsg = array('message'=>'Something went wrong, please try again..!','class'=>'error'); if(empty($ride_id)){ $this->session->set_flashdata('message',$flashMsg); redirect(base_url('Ride/view_rides')); } $ride_id = decode_param($ride_id); $template['page'] = 'Ride/view'; $template['menu'] = "Ride Management"; $template['sub_menu'] = "View Ride Details"; $template['page_desc'] = "View Ride Details"; $template['page_title'] = "Ride Details"; $ride_data = $this->Ride_model->getRideData($ride_id); if(empty($ride_data) || !isset($ride_data->data) || empty($ride_data->data)){ $this->session->set_flashdata('message',$flashMsg); redirect(base_url('Ride/view_rides')); } $template['data'] = $ride_data; $template['ride_data'] = json_decode($ride_data->data,true); $this->load->view('template',$template); } function assign_driver($ride_id = ''){ $flashMsg = array('message'=>'Something went wrong, please try again..!','class'=>'error'); if(empty($ride_id) || $this->session->userdata['user_type'] == 1){ $this->session->set_flashdata('message',$flashMsg); redirect(base_url('Ride/view_rides')); } $ride_id = decode_param($ride_id); $company_id = $this->session->userdata['id']; $ride_data = $this->Ride_model->getRideData($ride_id); if(empty($ride_data->pickup_location)){ $this->session->set_flashdata('message',$flashMsg); redirect(base_url('Ride/view_rides')); } $locData = file_get_contents("https://maps.google.com/maps/api/geocode/json?address=". urlencode($ride_data->pickup_location). "&sensor=false&key=".$this->session->userdata['settings']['google_api_key']); $loc_data = json_decode($locData); if(empty($loc_data)){ $this->session->set_flashdata('message',$flashMsg); redirect(base_url('Ride/view_rides')); } $lat = $loc_data->{'results'}[0]->{'geometry'}->{'location'}->{'lat'}; $lng = $loc_data->{'results'}[0]->{'geometry'}->{'location'}->{'lng'}; if(empty($lat) || empty($lng)){ $this->session->set_flashdata('message',$flashMsg); redirect(base_url('Ride/view_rides')); } $rideArr = array('lat'=>$lat,'lng'=>$lng,'vehicle_id'=>$ride_data->vehicle_id, 'ride_id'=>$ride_data->transport_id,'status'=>$ride_data->status); $driver_list = $this->Ride_model->getNearByRiders($company_id,$rideArr); if(empty($driver_list)){ $flashMsg['message'] = 'No Driver Found'; $this->session->set_flashdata('message',$flashMsg); redirect(base_url('Ride/view_rides')); } $template['page'] = 'Ride/assign_driver'; $template['menu'] = "Ride Management"; $template['sub_menu'] = "Assign Driver"; $template['page_desc'] = "Assign Driver to ride"; $template['page_title'] = "Assign Driver"; $template['ride_id'] = $ride_id; $template['ride_data'] = $ride_data; $template['company_id'] = $company_id; $template['pickup_lat'] = $lat; $template['pickup_lng'] = $lng; $template['driver_list'] = $driver_list; $this->load->view('template',$template); } function assignRide($ride_id = '',$driver_id = '',$mode = 0){ $flashMsg = array('message'=>'Something went wrong, please try again..!','class'=>'error'); if(empty($ride_id) || empty($driver_id)){ $this->session->set_flashdata('message',$flashMsg); redirect(base_url('Ride/view_rides')); } $ride_id = decode_param($ride_id); $driver_id = decode_param($driver_id); $status = $this->Ride_model->assignRide($ride_id,$driver_id,$mode); if($status){ $flashMsg['class'] = "success"; $flashMsg['message'] = "Driver Assigned"; $this->session->set_flashdata('message',$flashMsg); redirect(base_url('Ride/view_rides')); } $this->session->set_flashdata('message',$flashMsg); redirect(base_url('Ride/assign_driver/'.encode_param($ride_id))); } function changeSchuduleStatus(){ ini_set("memory_limit", "-1"); set_time_limit(0); if(!isset($_POST) || empty($_POST) || !isset($_POST['transport_id']) || empty($_POST['transport_id']) || !isset($_POST['is_scheduled']) || $_POST['is_scheduled'] == ''){ echo json_encode($result);exit; } $ride_ids = $_POST['transport_id']; $is_scheduled = ($_POST['is_scheduled'] == 1)?0:1; $succArr = array(); if(is_array($ride_ids)){ foreach ($ride_ids AS $ride_id) { $result = $this->changeScheduler($ride_id,$is_scheduled); if($result['status'] == 1){ $succArr[] = $ride_id; } $result['succArr'] = $succArr; } } else { $result = $this->changeScheduler($ride_ids,$is_scheduled); if($result['status'] == 1){ $result['succArr'] = array($ride_ids); } } echo json_encode($result);exit; } function changeScheduler($ride_id,$is_scheduled = '0'){ $result = array('status'=>'0'); if(empty($ride_id)){ return $result; } $status = $this->Ride_model->changeSchuduleStatus($ride_id,$is_scheduled); if($status){ $result['status'] = 1; if($is_scheduled == 1){ $ride_data = $this->Ride_model->getRideData($ride_id); if(empty($ride_data)){ $result['status'] = 0; $status = $this->Ride_model->changeSchuduleStatus($ride_id,0); } else { $pickup_location = $ride_data->pickup_location; $appointment_time = $ride_data->appointment_time; if(empty($pickup_location) || empty($appointment_time)){ $result['status'] = 0; $status = $this->Ride_model->changeSchuduleStatus($ride_id,0); } $pickupLocData = $this->getLatLngFromLocation($pickup_location); if(empty($pickupLocData)){ $result['status'] = 0; $status = $this->Ride_model->changeSchuduleStatus($ride_id,0); } else { $status = $this->Ride_model->autoAssignDriver($ride_id,$appointment_time, array('lat'=>$pickupLocData['lat'],'lng'=>$pickupLocData['lng'])); if(!$status){ $result['status'] = 0; $status = $this->Ride_model->changeSchuduleStatus($ride_id,0); } } } } } return $result; } function getLatLngFromLocation($location = ''){ if(empty($location)) return 0; $locData = file_get_contents("https://maps.google.com/maps/api/geocode/json?address=". urlencode($location). "&sensor=false&key=".$this->session->userdata['settings']['google_api_key']); if(empty($locData)) return 0; $loc_data = json_decode($locData); if(empty($loc_data) || !isset($loc_data->status) || $loc_data->status != 'OK') return 0; $locArr['lat'] = $loc_data->{'results'}[0]->{'geometry'}->{'location'}->{'lat'}; $locArr['lng'] = $loc_data->{'results'}[0]->{'geometry'}->{'location'}->{'lng'}; if(empty($locArr['lat']) || empty($locArr['lng'])) return 0; return $locArr; } function scheduled_rides(){ if($this->session->userdata['user_type'] == 1){ redirect(base_url()); } $this->load->model('Broker_model'); $template['page'] = 'Ride/scheduled_rides'; $template['page_title'] = "Scheduled Rides"; $template['page_desc'] = "View Scheduled Ride"; $template['menu'] = "Ride Management"; $template['sub_menu'] = "View Scheduled Rides"; $condArr = array(); if(isset($_POST) && isset($_POST['search_date']) && !empty($_POST['search_date'])){ $srtDateTime = strtotime($_POST['search_date']); $endDateTime = strtotime($_POST['search_date'].' 23:59'); $condArr[] = " AND (TD.appointment_time>'$srtDateTime' AND TD.appointment_time<'$endDateTime') "; } $company_id = ($this->session->userdata['user_type'] != 1)?$this->session->userdata['id']:''; $template['ride_data'] = $this->Ride_model->getRideData('',$company_id,'',1,$condArr); $this->load->view('template',$template); } } ?>