<?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;
 	}
 }
?>