<?php class Ride_model extends CI_Model { public function _consruct(){ parent::_construct(); } function getAppReason(){ $reason = $this->db->get_where('appointment_reason', array('status'=>'1')); if(!empty($reason)){ return $reason->result(); } return; } function getTripType(){ $tripType = $this->db->get_where('trip_type', array('status'=>'1')); if(!empty($tripType)){ return $tripType->result(); } return; } function uploadRides($insertArr = array()){ if(empty($insertArr)){ return 0; } $status = $this->db->insert_batch('transport_details',$insertArr); return ($status)?1:0; } function create_ride($data = array()){ if(empty($data)){ return 0; } $status = $this->db->insert('transport_details',$data); return ($status)?1:0; } function getRideData($ride_id = '',$company_id = ''){ $cond = (!empty($ride_id))?" AND TD.transport_id = '$ride_id'":""; $cond .= (!empty($company_id))?" AND TD.company_id = '$company_id'":""; $sql = "SELECT TD.*,BK.broker_name,AR.reason,VH.vehicle_id,VH.vehicle_type,TT.trip_type,TS.trip_status FROM transport_details AS TD LEFT JOIN brokers AS BK ON (TD.broker_id = BK.broker_id) LEFT JOIN vehicles AS VH ON (VH.vehicle_id = TD.vehicle_type) LEFT JOIN trip_type AS TT ON (TT.trip_id = TD.trip_type) LEFT JOIN trip_status AS TS ON (TS.trip_status_id = TD.trip_status) LEFT JOIN appointment_reason AS AR ON (AR.reason_id = TD.reason_code) WHERE TD.status != '2' ".$cond." ORDER BY TD.transport_id DESC"; $ride_data = $this->db->query($sql); if(empty($ride_data)){ return; } return (!empty($ride_id))?$ride_data->row():$ride_data->result(); } function changeStatus($ride_id = '', $status = '0'){ if(empty($ride_id)){ return 0; } $status = $this->db->update('transport_details',array('status'=>$status), array('transport_id'=>$ride_id)); return $status; } function getNearByRiders($company_id = '',$ride_data = array()){ if(empty($company_id) || empty($ride_data)){ return 0; } $sql = "SELECT DRV.*,3956*2*ASIN(SQRT(POWER(SIN((".$ride_data['lat']."-DRV.lat_driver)*pi()/180/2), 2)+COS(".$ride_data['lat']."*pi()/180)*COS(DRV.lat_driver*pi()/180)* POWER(SIN((".$ride_data['lng']."-DRV.lng_driver)*pi()/180/2),2))) AS distance FROM drivers AS DRV LEFT JOIN ride_status AS RS ON (RS.ride_id = '".$ride_data['ride_id']."' AND RS.driver_id <> DRV.driver_id) WHERE DRV.status = '1' AND DRV.company_id = '$company_id' AND DRV.vehicle_id = '".$ride_data['vehicle_id']."' AND DRV.lat_driver IS NOT NULL AND DRV.lng_driver IS NOT NULL GROUP BY DRV.driver_id ORDER BY distance ASC"; $data = $this->db->query($sql); if(empty($data)){ return 0; } return $data->result_array(); } function assignRide($ride_id = '',$driver_id = '',$mode = '0'){ if(empty($ride_id) || empty($driver_id)){ return 0; } if($mode == 0){ $status = $this->db->insert('ride_status',array('ride_id'=>$ride_id,'driver_id'=>$driver_id,'status'=>'0')); if($status){ $status = $this->db->update('transport_details',array('assigned_driver'=>$driver_id,'status'=>'3'),array('transport_id'=>$ride_id,'status'=>'1')); if(!$status){ $this->db->delete('ride_status',array('ride_id'=>$ride_id,'driver_id'=>$driver_id)); } } } else { $status = $this->db->update('transport_details',array('assigned_driver'=>$driver_id,'status'=>'8'),array('transport_id'=>$ride_id)); } return ($status)?1:0; } } ?>