<?php 

class Webservice_model extends CI_Model {
	
	public function _consruct(){
		parent::_construct();
//		date_default_timezone_set("Asia/Kolkata");
 	}
/*.........................Patient Model....................................*/

//..................auth token checking for patient

	function check_auth_token($authtoken){
		$query = $this->db->get_where('tbl_authtoken',array('authtoken'=>$authtoken));
	//	echo $this->db->last_query();exit();
		if($query->num_rows() > 0){
			return true;
		}
		else{
			return false;
		}
	}

//..................auth token checking for doctor

	function check_auth_token_doctor($authtoken){
		$query = $this->db->get_where('tbl_authtoken_doctors',array('authtoken'=>$authtoken));
		if($query->num_rows() > 0){
			return true;
		}
		else{
			return false;
		}
	}
 //........................ user(Patient) registration

	function registration($data,$type) {
		$data['is_registration_completed'] = 1;
		if($type == 'user'){
			$data['name'] = encrypt_data($data['name']);
			$data['rg'] = encrypt_data($data['rg']);
			$data['gender'] = encrypt_data($data['gender']);
			$data['weight'] = encrypt_data($data['weight']);
			$data['height'] = encrypt_data($data['height']);
			$data['blood_group'] = encrypt_data($data['blood_group']);
			$data['zip_code'] = encrypt_data($data['zip_code']);
			$data['street_address'] = encrypt_data($data['street_address']);
			$data['locality'] = encrypt_data($data['locality']);
			$data['number'] = encrypt_data($data['number']);
			$data['landmark'] = encrypt_data($data['landmark']);
			if($this->db->insert('tbl_registration', $data)){
				$insertid = $this->db->insert_id();
				$this->db->query("update tbl_registration set dob = AES_ENCRYPT(".$data['dob'].",'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA')where id = ".$insertid);

				$query = $this->db->get_where("tbl_registration",array("id"=>$insertid))->row_array(); 
				$this->db->select("CAST(AES_DECRYPT(`dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dob");
				$this->db->where('id',$insertid);
				$query_date = $this->db->get('tbl_registration')->row();

				unset($query['dob']);
				$query['dob'] = $query_date->dob;
				$query['name'] = decrypt_data($query['name']);
				$query['rg'] = decrypt_data($query['rg']);
				$query['gender'] = decrypt_data($query['gender']);
				$query['weight'] = decrypt_data($query['weight']);
				$query['height'] = decrypt_data($query['height']);
				$query['blood_group'] = decrypt_data($query['blood_group']);
				$query['zip_code'] = decrypt_data($query['zip_code']);
				$query['street_address'] = decrypt_data($query['street_address']);
				$query['locality'] = decrypt_data($query['locality']);
				$query['number'] = decrypt_data($query['number']);
				$query['landmark'] = decrypt_data($query['landmark']);
				$return_array = array('status'=>'success','userdata'=>$query);
			}
			else{
				$return_array = array('status'=>'fail');
			}
		}else{
			//$data['name'] = encrypt_data($data['name']);
			$data['about'] = encrypt_data($data['about']);
			//$data['price'] = encrypt_data($data['price']);		
			$data['gender'] = encrypt_data($data['gender']);
			//$data['domiciliary_status'] = encrypt_data($data['domiciliary_status']);
			$data['rg'] = encrypt_data($data['rg']);
			$data['crm'] = encrypt_data($data['crm']);
			$data['cep'] = encrypt_data($data['cep']);
			$data['street_address'] = encrypt_data($data['street_address']);
			$data['locality'] = encrypt_data($data['locality']);
			$data['number'] = encrypt_data($data['number']);
			$data['complement'] = encrypt_data($data['complement']);
			if($this->db->insert('tbl_doctors', $data)){
				$insertid = $this->db->insert_id();
				$this->db->query("update tbl_doctors set dob = AES_ENCRYPT(".$data['dob'].",'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA')where id = ".$insertid);
				
				$this->db->insert('tbl_clinic_doctors',array('doctor_id'=>$insertid,'clinic_id'=> 0));	
				$this->db->insert('tbl_consultation',array('doctor_id'=>$insertid,'clinic_id'=> 0,'date'=>'""','date_secondary'=>'""','active_schedule'=> 0));
				
				$this->db->select('tbl_specialization.id as specialization_id,tbl_specialization.specialization_name,tbl_doctors.*');
				$this->db->join('tbl_specialization','tbl_specialization.id = tbl_doctors.	specialization');
				$query = $this->db->get_where("tbl_doctors",array("tbl_doctors.id"=>$insertid));

				$this->db->select("CAST(AES_DECRYPT(`dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dob");
				$this->db->where('id',$insertid);
				$query_date = $this->db->get('tbl_doctors')->row(); 

				$query = $query->row_array();

				unset($query['dob']);
				$query['dob'] = $query_date->dob;
				//$query['name'] = decrypt_data($query['name']);
				$query['about'] = decrypt_data($query['about']);
				//$query['price'] = decrypt_data($query['price']);
				$query['gender'] = decrypt_data($query['gender']);
				//$query['domiciliary_status'] = decrypt_data($query['domiciliary_status']);
				$query['rg'] = decrypt_data($query['rg']);
				$query['crm'] = decrypt_data($query['crm']);
				$query['cep'] = decrypt_data($query['cep']);
				$query['street_address'] = decrypt_data($query['street_address']);
				$query['locality'] = decrypt_data($query['locality']);
				$query['number'] = decrypt_data($query['number']);
				$query['complement'] = decrypt_data($query['complement']);


				$return_array = array('status'=>'success','userdata'=>$query);
			}
			else{
				$return_array = array('status'=>'fail');
			}
		}
			return $return_array;
	}

//..........................insert users bystanders details

	function insert_bystander_registration($new,$result){
		$new['patient_id'] = $result['userdata']['id'];
		if($this->db->insert('tbl_patient_dependent',$new)){
			return true;
		}
	}

//.......................insert bystanders pics of patient

	function updatePicbystander($data,$id){
		$this->db->update('tbl_patient_dependent', $data, array('patient_id' => $id));
		return $this->db->get_where('tbl_patient_dependent',array('patient_id'=>$id))->row();
	}

 //.................check whether username or email exist or not for both


	function dataExist($data,$type){
//print_r($data);print_r($type);
		if(isset($data['username']) && strlen($data['username'])){
 			if($type == 'user'){
				$query_uname = $this->db->get_where("tbl_registration",array("username"=>$data['username'])); 
 			}else{
 				$query_uname = $this->db->get_where("tbl_doctors",array("username"=>$data['username'])); 
 			}
			
		}
		if(isset($data['email']) && strlen($data['email'])){
			if($type == 'user'){
				$query_email = $this->db->get_where("tbl_registration",array("email"=>$data['email']));
			}else{
				$query_email = $this->db->get_where("tbl_doctors",array("email"=>$data['email']));
			}
			
		}
		if(isset($query_uname) && ($query_uname->num_rows() > 0))
		{
			if($query_uname->num_rows() > 0){

				if(isset($query_email)){

					if($query_email->num_rows() > 0){

						$return_array = array('message'=>'username and email are already exist','status'=>'fail');
					}
					else{

						$return_array = array('message'=>'username already exist','status'=>'fail');
					}
				}

				else{

					$return_array = array('message'=>'username already exist','status'=>'fail');
				}
			}
			else{
				$return_array = array('message'=>'success','status'=>'success');
			}
		}
		else if(isset($query_email)){

			if($query_email->num_rows() > 0){

				$return_array = array('message'=>'email already exist','status'=>'fail');
			}
			else{

				$return_array = array('message'=>'success','status'=>'success');
			}
		}else if(isset($query_uname)){
			if($query_uname->num_rows() > 0){

				$return_array = array('message'=>'username already exist','status'=>'fail');
			}
			else{

				$return_array = array('message'=>'success','status'=>'success');
			}
		}
		else{
			$return_array = array('message'=>'fail','status'=>'fail');
		}
		return $return_array;
	}

 //....................set Patient authtoken in database


	function authtoken_registration($authtoken,$userid){
		$data = array('authtoken'=>$authtoken,'userid'=>$userid);
		if($this->db->insert('tbl_authtoken', $data)){
			return true;
		}
		else{
			return false;
		}
	}

 //....................check fb uid exist for doctor

	function is_this_uid_exit_doctor($data){
		$query = $this->db->get_where('tbl_doctors',array('uid'=>$data['uid']))->row();
		//echo $this->db->last_query();
		//echo"<pre>";print_r($query);echo"</pre>";exit();
		if($query){
			if($query->email == $data['email']){	
				$return_array = $this->update_doctor_registration_data($data,$query);
       		}else{
       			$type = 'doctor';
       			$email_verify = $this->dataExist($data,$type);
       			if($email_verify['status'] == 'success'){
       				$return_array = $this->update_doctor_registration_data($data,$query);
       			}else{
       				$return_array = $email_verify;
       			}
       		}
		}else{
			$return_array = array('status'=>'failed');
		}
		return $return_array;
	}

 //....................check fb uid exist for patient

	function is_this_uid_exit_patient($data){
		$query = $this->db->get_where('tbl_registration',array('uid'=>$data['uid'],'access_token'=>$data['access_token']))->row();
		//echo"<pre>";print_r($query);echo"</pre>";exit();
		if($query){
			if($query->email == $data['email']){	
				$return_array = $this->update_patient_registration_data($data,$query);
       		}else{
       			$type = 'user';
       			$email_verify = $this->dataExist($data,$type);
       			if($email_verify['status'] == 'success'){
       				$return_array = $this->update_patient_registration_data($data,$query);
       			}else{
       				$return_array = $email_verify;
       			}
       		}
		}else{
			$return_array = array('status'=>'failed');
		}
		return $return_array;
	}

 //....................if uid exist for doctor thn update doctor registration data

	function update_doctor_registration_data($data,$query){
		//$data['password'] = md5($data['password']);
				//$data['dob'] = $data['dob'];
				
				$data['cep'] = encrypt_data($data['zip_code']);
				$data['complement'] = encrypt_data($data['landmark']);
				$data['about'] = encrypt_data($data['biodata']);
				$data['specialization'] = $data['specialization_id'];
				$data['gender'] = encrypt_data(strtoupper($data['gender']));
				$data['username'] = $data['uid'];
				$data['is_registration_completed'] = 1;
				//$data['name'] = encrypt_data($data['name']);
				//$data['price'] = encrypt_data($data['price']);
				//$data['domiciliary_status'] = encrypt_data($data['domiciliary_status']);
				$data['rg'] = encrypt_data($data['rg']);
				$data['crm'] = encrypt_data($data['crm']);
				$data['street_address'] = encrypt_data($data['street_address']);
				$data['locality'] = encrypt_data($data['locality']);
				$data['number'] = encrypt_data($data['number']);

				unset($data['zip_code']);
				unset($data['landmark']);
				unset($data['biodata']);
				unset($data['specialization_id']);

	            if($this->db->update('tbl_doctors',$data,array('uid'=>$data['uid']))){
				$this->db->query("update tbl_doctors set dob = AES_ENCRYPT(".$data['dob'].",'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA')where uid = ".$data['uid']);

				

	            	$this->db->select('tbl_doctors.*,tbl_specialization.id as specialization_id,tbl_specialization.specialization_name,tbl_authtoken_doctors.doctor_id ,tbl_authtoken_doctors.authtoken');
					$this->db->join('tbl_authtoken_doctors', 'tbl_authtoken_doctors.doctor_id = tbl_doctors.id');
					$this->db->join('tbl_specialization','tbl_specialization.id = tbl_doctors.	specialization');
					$query = $this->db->get_where("tbl_doctors",array('tbl_doctors.id'=>$query->id))->row_array();

					unset($query['dob']);

					$this->db->select("CAST(AES_DECRYPT(`dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dob");
					$this->db->where('uid',$data['uid']);
					$query_date = $this->db->get('tbl_doctors')->row(); 
					$query['dob'] = $query_date->dob;
					$query['cep'] = decrypt_data($query['zip_code']);
					$query['complement'] = decrypt_data($query['landmark']);
					$query['about'] = decrypt_data($query['biodata']);
					$query['gender'] = decrypt_data($query['gender']);
					//$query['name'] = decrypt_data($query['name']);
					//$query['price'] = decrypt_data($query['price']);
					//$query['domiciliary_status'] = decrypt_data($query['domiciliary_status']);
					$query['rg'] = decrypt_data($query['rg']);
					$query['crm'] = decrypt_data($query['crm']);
					$query['street_address'] = decrypt_data($query['street_address']);
					$query['locality'] = decrypt_data($query['locality']);
					$query['number'] = decrypt_data($query['number']);

					$return_array = array('status'=>'success','userdata'=>$query);
		            }else{
		            	$return_array = array('status'=>'failed');
		            }
					return $return_array;
	}

 //....................if uid exist for patient thn update patient registration data

	function update_patient_registration_data($data,$query){
		//$data['password'] = md5($data['password']);
		//$data['dob'] = encrypt_data($data['dob']);
		$data['username'] = $data['uid'];
		$new = array();
		$type = 'user';
		$data['is_registration_completed'] = 1;
		if(isset($data['bystander_name']) || isset($data['bystander_relation'])  || isset($data['bystander_cpf']) || isset($data['bystander_dob']) ){
			if(isset($data['bystander_name'])){	
				$new['dependent_name'] = $data['bystander_name'];
				unset($data['bystander_name']);
			}
			if(isset($data['bystander_relation'])){	
				$new['relation'] = $data['bystander_relation'];
				unset($data['bystander_relation']);
			}
			if(isset($data['bystander_cpf'])){	
				$new['cpf'] = $data['bystander_cpf'];
				unset($data['bystander_cpf']);
			}
			if(isset($data['bystander_dob'])){	
				$new['dob'] = strtotime($data['bystander_dob']);
				unset($data['bystander_dob']);
			}
			$data['gender'] = strtoupper($data['gender']);
			if($this->db->update('tbl_registration',$data,array('uid'=>$data['uid']))){
				$this->db->query("update tbl_registration set dob = AES_ENCRYPT(".$data['dob'].",'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA')where uid = ".$data['uid']);

				$this->db->select("CAST(AES_DECRYPT(`dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dob");
				$this->db->where('id',$insertid);
				$query_date = $this->db->get('tbl_registration')->row();

				$rslt = $this->db->get_where('tbl_registration',array('uid'=>$data['uid']))->row_array();
				unset($rslt['dob']);
				$rslt['dob'] = $query_date->dob;
				$result = array('status'=>'success','userdata'=>$rslt);
				$ress = 'true';
			}
			$this->insert_bystander_registration($new,$result);
		}else{
			if($this->db->update('tbl_registration',$data,array('uid'=>$data['uid']))){
				$ress = 'true';
			}
		}

        if($ress == 'true'){
        	$this->db->select("tbl_registration.*,CAST(AES_DECRYPT(`tbl_registration.dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dob_new,tbl_authtoken.userid ,tbl_authtoken.authtoken");
			$this->db->join('tbl_authtoken', 'tbl_authtoken.userid = tbl_registration.id');
			$query = $this->db->get_where("tbl_registration",array('tbl_registration.id'=>$query->id))->row_array();
			$query['name'] = decrypt_data($query['name']);
			$query['rg'] = decrypt_data($query['rg']);
			$query['dob'] = $query['dob_new'];
			unset($query['dob_new']);
			$query['gender'] = decrypt_data($query['gender']);
			$query['weight'] = decrypt_data($query['weight']);
			$query['height'] = decrypt_data($query['height']);
			$query['blood_group'] = decrypt_data($query['blood_group']);
			$query['zip_code'] = decrypt_data($query['zip_code']);
			$query['street_address'] = decrypt_data($query['street_address']);
			$query['locality'] = decrypt_data($query['locality']);
			$query['number'] = decrypt_data($query['number']);
			$query['landmark'] = decrypt_data($query['landmark']);
			$return_array = array('status'=>'success','userdata'=>$query);
            }else{
            	$return_array = array('status'=>'failed');
            }
			return $return_array;
	}

 
 //.................... update doctor fbuid

	function update_doctor_fbuid($id,$data){
		$this->db->update('tbl_doctors',array('uid'=>$data['uid'],'access_token'=>$data['access_token']),array('id'=>$id));
	}

 //.................... update patient fbuid

	function update_patient_fbuid($id,$data){
		$this->db->update('tbl_registration',array('uid'=>$data['uid'],'access_token'=>$data['access_token']),array('id'=>$id));
	}

 //....................user login

	function login($data){
		$this->db->select("tbl_registration.*,tbl_authtoken.userid ,tbl_authtoken.authtoken");
		$this->db->join('tbl_authtoken', 'tbl_authtoken.userid = tbl_registration.id', 'inner');
		$querys = $this->db->get_where("tbl_registration",array("username"=>$data['username'],"password"=>md5($data['password'])));
		$this->db->join('tbl_authtoken', 'tbl_authtoken.userid = tbl_registration.id', 'inner');
		$query_emails = $this->db->get_where("tbl_registration",array("email"=>$data['username'],"password"=>md5($data['password'])));
		if($querys->num_rows() > 0 || $query_emails->num_rows() > 0){
			if($querys->num_rows() > 0){
				$query = $querys->row_array();
				$this->db->select("CAST(AES_DECRYPT(`tbl_registration`.`dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dob_new");
				$this->db->where('id',$query['id']);
				$querydate = $this->db->get('tbl_registration')->row();
				$query['name'] = decrypt_data($query['name']);
				$query['rg'] = decrypt_data($query['rg']);
				$query['dob'] = $querydate->dob_new;
				$query['gender'] = decrypt_data($query['gender']);
				$query['weight'] = decrypt_data($query['weight']);
				$query['height'] = decrypt_data($query['height']);
				$query['blood_group'] = decrypt_data($query['blood_group']);
				$query['zip_code'] = decrypt_data($query['zip_code']);
				$query['street_address'] = decrypt_data($query['street_address']);
				$query['locality'] = decrypt_data($query['locality']);
				$query['number'] = decrypt_data($query['number']);
				$query['landmark'] = decrypt_data($query['landmark']);

				$return_array = array('status'=>'success','userdata'=>$query);
			}
			if($query_emails->num_rows() > 0){
				$query_email = $query_emails->row_array();
				$this->db->select("CAST(AES_DECRYPT(`tbl_registration`.`dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dob_new");
				$this->db->where('id',$query_email['id']);
				$querydate = $this->db->get('tbl_registration')->row();
				$query_email['name'] = decrypt_data($query_email['name']);
				$query_email['rg'] = decrypt_data($query_email['rg']);
				$query_email['dob'] = $querydate->dob_new;
				$query_email['gender'] = decrypt_data($query_email['gender']);
				$query_email['weight'] = decrypt_data($query_email['weight']);
				$query_email['height'] = decrypt_data($query_email['height']);
				$query_email['blood_group'] = decrypt_data($query_email['blood_group']);
				$query_email['zip_code'] = decrypt_data($query_email['zip_code']);
				$query_email['street_address'] = decrypt_data($query_email['street_address']);
				$query_email['locality'] = decrypt_data($query_email['locality']);
				$query_email['number'] = decrypt_data($query_email['number']);
				$query_email['landmark'] = decrypt_data($query_email['landmark']);
				$return_array = array('status'=>'success','userdata'=>$query_email);
			}

		}
		else{
			$return_array = array('status'=>'fail');
		}
		return $return_array;
	}

//get users bystanders details

	function get_patient_depend($id){
		$this->db->select('dependent_name as bystander_name,relation as bystander_relation,dob as bystander_dob,cpf as bystander_cpf,image as bystander_profile_photo');
		return $query = $this->db->get_where('tbl_patient_dependent',array('patient_id'=>$id))->result();
	}

 //....................doctor login

	function doctor_login($data){
		$this->db->select('tbl_doctors.*,tbl_specialization.id as specialization_id,tbl_specialization.specialization_name,tbl_authtoken_doctors.doctor_id ,tbl_authtoken_doctors.authtoken');
		$this->db->join('tbl_authtoken_doctors', 'tbl_authtoken_doctors.doctor_id = tbl_doctors.id');
		$this->db->join('tbl_specialization','tbl_specialization.id = tbl_doctors.	specialization');
		$query = $this->db->get_where("tbl_doctors",array("username"=>$data['username'],"password"=>md5($data['password'])))->row_array();
		//print_r($query);exit();
         if(count($query) < 0 || $query == ''){
         	$this->db->select('tbl_doctors.*,tbl_specialization.id as specialization_id,tbl_specialization.specialization_name,tbl_authtoken_doctors.doctor_id ,tbl_authtoken_doctors.authtoken');
         	$this->db->join('tbl_authtoken_doctors', 'tbl_authtoken_doctors.doctor_id = tbl_doctors.id');
			$this->db->join('tbl_specialization','tbl_specialization.id = tbl_doctors.	specialization');
			$query_email = $this->db->get_where("tbl_doctors",array("email"=>$data['username'],"password"=>md5($data['password'])))->row_array();
			if(count($query_email) < 0 || $query_email == ''){
				$return_array = array('status'=>'fail');
			}else{
				$this->db->select("CAST(AES_DECRYPT(`tbl_doctors`.`dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dob_new");
				$this->db->where('id',$query_email['id']);

				$querydate = $this->db->get('tbl_doctors')->row();
				$query_email['dob'] = $querydate->dob_new;
				$query_email['cep'] = decrypt_data($query_email['cep']);
				$query_email['complement'] = decrypt_data($query_email['complement']);
				$query_email['about'] = decrypt_data($query_email['about']);
				$query_email['gender'] = decrypt_data($query_email['gender']);
				//$query_email['name'] = decrypt_data($query_email['name']);
				//$query_email['price'] = decrypt_data($query_email['price']);
				//$query_email['domiciliary_status'] = decrypt_data($query_email['domiciliary_status']);
				$query_email['rg'] = decrypt_data($query_email['rg']);
				$query_email['crm'] = decrypt_data($query_email['crm']);
				$query_email['street_address'] = decrypt_data($query_email['street_address']);
				$query_email['locality'] = decrypt_data($query_email['locality']);
				$query_email['number'] = decrypt_data($query_email['number']);
				$return_array = array('status'=>'success','userdata'=>$query_email);
			}
         }else{
			$this->db->select("CAST(AES_DECRYPT(`tbl_doctors`.`dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dob_new");
			$this->db->where('id',$query['id']);
			$querydate = $this->db->get('tbl_doctors')->row();
			$query_email = $query;
			$query_email['dob'] = $querydate->dob_new;
			$query_email['cep'] = decrypt_data($query_email['cep']);
			$query_email['complement'] = decrypt_data($query_email['complement']);
			$query_email['about'] = decrypt_data($query_email['about']);
			$query_email['gender'] = decrypt_data($query_email['gender']);
			//$query_email['name'] = decrypt_data($query_email['name']);
			//$query_email['price'] = decrypt_data($query_email['price']);
			//$query_email['domiciliary_status'] = decrypt_data($query_email['domiciliary_status']);
			$query_email['rg'] = decrypt_data($query_email['rg']);
			$query_email['crm'] = decrypt_data($query_email['crm']);
			$query_email['street_address'] = decrypt_data($query_email['street_address']);
			$query_email['locality'] = decrypt_data($query_email['locality']);
			$query_email['number'] = decrypt_data($query_email['number']);

         	$return_array = array('status'=>'success','userdata'=>$query_email);
         }

		return $return_array;
	}

 // set patient's profile pic path into database for both

	function updatePic($data,$id,$type){
		if($type=='user'){
			$this->db->update('tbl_registration', $data, array('id' => $id));
		}else{
			$this->db->update('tbl_doctors', $data, array('id' => $id));
		}
	}
	
	public function get_updatePic_doctor($id){
		$this->db->select('profile_pic');
		$this->db->where('id',$id);
		return $this->db->get('tbl_doctors')->row();
	}


// insert fb user data to tbl_facebook_user
/*
	function fb_login($data){
		if($this->db->insert('tbl_facebook_user', array('uid'=>$data['uid'],'access_token'=>$data['access_token'])))
		{
			$return_array = array('status'=>'success');
		}
		else{
			$return_array = array('status'=>'fail');
		}

		return $return_array;
	}*/

//..................... check email exist or not for patient

	function email_exist($data){
		$query_email = $this->db->get_where("tbl_registration",array("email"=>$data));
		if($query_email->num_rows() > 0){
			$return_array = array('status'=>'exist');
		}
		else{
			$return_array = array('status'=>'not exist');
		}
		return $return_array;
	}

//..................... check email exist or not for doctor

	function email_exist_doctor($data){
		$query_email = $this->db->get_where("tbl_doctors",array("email"=>$data));
		if($query_email->num_rows() > 0){
			$return_array = array('status'=>'exist');
		}
		else{
			$return_array = array('status'=>'not exist');
		}
		return $return_array;
	}

//..................... check uid exist for doctor

	function is_uid_exist($data){
		$query_uid = $this->db->get_where("tbl_doctors",array("uid"=>$data));
		if($query_uid->num_rows() > 0){
			$return_array = array('status'=>'exist');
		}
		else{
			$return_array = array('status'=>'not exist');
		}
		return $return_array;
	}

//..................... check uid exist for patient

	function is_uid_exist_patient($data){
		$query_uid = $this->db->get_where("tbl_registration",array("uid"=>$data));
		if($query_uid->num_rows() > 0){
			$return_array = array('status'=>'exist');
		}
		else{
			$return_array = array('status'=>'not exist');
		}
		return $return_array;
	}

//.............. Get User(Patient) data based on email

	function get_userdata($data){
		$this->db->select("tbl_registration.*,CAST(AES_DECRYPT(`tbl_registration.dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dob_new,tbl_authtoken.userid ,tbl_authtoken.authtoken");
		$this->db->join('tbl_authtoken', 'tbl_authtoken.userid = tbl_registration.id', 'inner');
		$query_userdatas = $this->db->get_where("tbl_registration",array("email"=>$data));
		if($query_userdatas->num_rows() > 0){
			$query_userdata = $query_userdatas->row_array();
			$query_userdata['name'] = decrypt_data($query_userdata['name']);
			$query_userdata['rg'] = decrypt_data($query_userdata['rg']);
			$query_userdata['dob'] = $query_userdata['dob_new'];
			unset($query_userdata['dob_new']);
			$query_userdata['gender'] = decrypt_data($query_userdata['gender']);
			$query_userdata['weight'] = decrypt_data($query_userdata['weight']);
			$query_userdata['height'] = decrypt_data($query_userdata['height']);
			$query_userdata['blood_group'] = decrypt_data($query_userdata['blood_group']);
			$query_userdata['zip_code'] = decrypt_data($query_userdata['zip_code']);
			$query_userdata['street_address'] = decrypt_data($query_userdata['street_address']);
			$query_userdata['locality'] = decrypt_data($query_userdata['locality']);
			$query_userdata['number'] = decrypt_data($query_userdata['number']);
			$query_userdata['landmark'] = decrypt_data($query_userdata['landmark']);
			$return_array = array('status'=>'success','userdata'=>$query_userdata);
		}
		else{
			$return_array = array('status'=>'fail');
		}
		return $return_array;
	}

//.............. Get doctor data based on email

	function get_userdata_doctor($data){
		$this->db->select('tbl_doctors.*,tbl_authtoken_doctors.doctor_id ,tbl_authtoken_doctors.authtoken,tbl_specialization.id as specialization_id,tbl_specialization.specialization_name');
		$this->db->join('tbl_authtoken_doctors', 'tbl_authtoken_doctors.doctor_id = tbl_doctors.id', 'inner');
		$this->db->join('tbl_specialization','tbl_specialization.id = tbl_doctors.	specialization');
		$query_userdata = $this->db->get_where("tbl_doctors",array("email"=>$data));
		if($query_userdata->num_rows() > 0){



			$doc_result = $query_userdata->row_array();
			$this->db->select("CAST(AES_DECRYPT(`tbl_doctors`.`dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dob_new");
			$this->db->where('id',$doc_result ['id']);
			$querydate = $this->db->get('tbl_doctors')->row();
			$query = $doc_result;
			$query['dob'] = $query_date->dob_new;
			$query['cep'] = decrypt_data($query['zip_code']);
			$query['complement'] = decrypt_data($query['landmark']);
			$query['about'] = decrypt_data($query['biodata']);
			$query['gender'] = decrypt_data($query['gender']);
			//$query['name'] = decrypt_data($query['name']);
			//$query['price'] = decrypt_data($query['price']);
			//$query['domiciliary_status'] = decrypt_data($query['domiciliary_status']);
			$query['rg'] = decrypt_data($query['rg']);
			$query['crm'] = decrypt_data($query['crm']);
			$query['street_address'] = decrypt_data($query['street_address']);
			$query['locality'] = decrypt_data($query['locality']);
			$query['number'] = decrypt_data($query['number']);

			$return_array = array('status'=>'success','userdata'=>$query);
		}
		else{
			$return_array = array('status'=>'fail');
		}
		return $return_array;
	}

//.............. Get doctor data based on uid

	function get_userdata_doctor_by_uid($data){
		$this->db->select('tbl_doctors.*,tbl_authtoken_doctors.doctor_id ,tbl_authtoken_doctors.authtoken,tbl_specialization.id as specialization_id,tbl_specialization.specialization_name');
		$this->db->join('tbl_authtoken_doctors', 'tbl_authtoken_doctors.doctor_id = tbl_doctors.id', 'left');
		$this->db->join('tbl_specialization','tbl_specialization.id = tbl_doctors.	specialization','left');
		$query_userdata = $this->db->get_where("tbl_doctors",array("uid"=>$data));
		if($query_userdata->num_rows() > 0){
			$query = $query_userdata->row_array();
			$this->db->select("CAST(AES_DECRYPT(`tbl_doctors`.`dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dob_new");
			$this->db->where('id',$query['id']);
			$querydate = $this->db->get('tbl_doctors')->row();

			$query['dob'] = $query_date->dob_new;
			$query['cep'] = decrypt_data($query['zip_code']);
			$query['complement'] = decrypt_data($query['landmark']);
			$query['about'] = decrypt_data($query['biodata']);
			$query['gender'] = decrypt_data($query['gender']);
			//$query['name'] = decrypt_data($query['name']);
			//$query['price'] = decrypt_data($query['price']);
			//$query['domiciliary_status'] = decrypt_data($query['domiciliary_status']);
			$query['rg'] = decrypt_data($query['rg']);
			$query['crm'] = decrypt_data($query['crm']);
			$query['street_address'] = decrypt_data($query['street_address']);
			$query['locality'] = decrypt_data($query['locality']);
			$query['number'] = decrypt_data($query['number']);

			$return_array = array('status'=>'success','userdata'=>$query);
		}
		else{
			$return_array = array('status'=>'fail');
		}
		return $return_array;
	}

//.............. Get User(Patient) data based on uid

	function get_userdata_patient_by_uid($data){
		$this->db->select("tbl_registration.*,CAST(AES_DECRYPT(`tbl_registration.dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dob_new,tbl_authtoken.userid ,tbl_authtoken.authtoken");
		$this->db->join('tbl_authtoken', 'tbl_authtoken.userid = tbl_registration.id', 'left');
		$query_userdatas = $this->db->get_where("tbl_registration",array("uid"=>$data));
		if($query_userdatas->num_rows() > 0){
			$query_userdata = $query_userdatas->row_array();
			$query_userdata['name'] = decrypt_data($query_userdata['name']);
			$query_userdata['rg'] = decrypt_data($query_userdata['rg']);
			$query_userdata['dob'] = $query_userdata['dob_new'];
			unset($query_userdata['dob_new']);
			$query_userdata['gender'] = decrypt_data($query_userdata['gender']);
			$query_userdata['weight'] = decrypt_data($query_userdata['weight']);
			$query_userdata['height'] = decrypt_data($query_userdata['height']);
			$query_userdata['blood_group'] = decrypt_data($query_userdata['blood_group']);
			$query_userdata['zip_code'] = decrypt_data($query_userdata['zip_code']);
			$query_userdata['street_address'] = decrypt_data($query_userdata['street_address']);
			$query_userdata['locality'] = decrypt_data($query_userdata['locality']);
			$query_userdata['number'] = decrypt_data($query_userdata['number']);
			$query_userdata['landmark'] = decrypt_data($query_userdata['landmark']);
			$return_array = array('status'=>'success','userdata'=>$query_userdata);
		}
		else{
			$return_array = array('status'=>'fail');
		}
		//echo $this->db->last_query();exit();
		return $return_array;
	}

//.............. Insert uid for doctor

	public function insert_uid_doctor($data){

		$data['is_registration_completed'] = 0;
        $data['name'] = encrypt_data($data['name']);
		$data['about'] = encrypt_data($data['about']);
		//$data['price'] = encrypt_data($data['price']);		
		$data['gender'] = encrypt_data($data['gender']);
		//$data['domiciliary_status'] = encrypt_data($data['domiciliary_status']);
		$data['rg'] = encrypt_data($data['rg']);
		$data['crm'] = encrypt_data($data['crm']);
		$data['cep'] = encrypt_data($data['cep']);
		$data['street_address'] = encrypt_data($data['street_address']);
		$data['locality'] = encrypt_data($data['locality']);
		$data['number'] = encrypt_data($data['number']);
		$data['complement'] = encrypt_data($data['complement']);

		$this->db->insert('tbl_doctors',$data);

		$insertid = $this->db->insert_id();
		$this->db->query("update tbl_doctors set dob = AES_ENCRYPT(".$data['dob'].",'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA')where id = ".$insertid);

		$this->db->select('tbl_doctors.*');

		$query_userdata = $this->db->get_where("tbl_doctors",array("id"=>$insertid));
		if($query_userdata->num_rows() > 0){
		    $query = $query_userdata->row_array();
			$this->db->select("CAST(AES_DECRYPT(`dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dob");
				$this->db->where('id',$insertid);
				$query_date = $this->db->get('tbl_doctors')->row(); 

				unset($query['dob']);
				$query['dob'] = $query_date->dob;
				//$query['name'] = decrypt_data($query['name']);
				$query['about'] = decrypt_data($query['about']);
				$query['price'] = decrypt_data($query['price']);
				$query['gender'] = decrypt_data($query['gender']);
				$query['domiciliary_status'] = decrypt_data($query['domiciliary_status']);
				$query['rg'] = decrypt_data($query['rg']);
				$query['crm'] = decrypt_data($query['crm']);
				$query['cep'] = decrypt_data($query['cep']);
				$query['street_address'] = decrypt_data($query['street_address']);
				$query['locality'] = decrypt_data($query['locality']);
				$query['number'] = decrypt_data($query['number']);
				$query['complement'] = decrypt_data($query['complement']);
			

			    $return_array = array('status'=>'success','userdata'=>$query);
		}
		else{
			$return_array = array('status'=>'fail');
		}
		return $return_array;
		
	}

//.............. Insert uid for patient

	public function insert_uid_patient($data){
		$data['is_registration_completed'] = 0;
		$this->db->insert('tbl_registration',$data);
		$insertid = $this->db->insert_id();
		$this->db->select("tbl_registration.*,CAST(AES_DECRYPT(`tbl_registration.dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dob_new");
		$query_userdatas = $this->db->get_where("tbl_registration",array("id"=>$insertid));
		if($query_userdatas->num_rows() > 0){
			$query_userdata = $query_userdatas->row_array();
			$query_userdata['name'] = decrypt_data($query_userdata['name']);
			$query_userdata['rg'] = decrypt_data($query_userdata['rg']);
			$query_userdata['dob'] = $query_userdata['dob_new'];
			unset($query_userdata['dob_new']);
			$query_userdata['gender'] = decrypt_data($query_userdata['gender']);
			$query_userdata['weight'] = decrypt_data($query_userdata['weight']);
			$query_userdata['height'] = decrypt_data($query_userdata['height']);
			$query_userdata['blood_group'] = decrypt_data($query_userdata['blood_group']);
			$query_userdata['zip_code'] = decrypt_data($query_userdata['zip_code']);
			$query_userdata['street_address'] = decrypt_data($query_userdata['street_address']);
			$query_userdata['locality'] = decrypt_data($query_userdata['locality']);
			$query_userdata['number'] = decrypt_data($query_userdata['number']);
			$query_userdata['landmark'] = decrypt_data($query_userdata['landmark']);
			$return_array = array('status'=>'success','userdata'=>$query_userdata);
		}
		else{
			$return_array = array('status'=>'fail');
		}
		return $return_array;
		
	}



//set fb login data

	/*function set_fbdata($data,$authToken){

		if($this->db->insert('tbl_registration',array('name'=>$data['name'],'email'=>$data['email'],'gender'=>$data['gender'],'profile_photo'=>$data['profile_photo']))){
				$insertid = $this->db->insert_id();
				$set_authtoken = $this->authtoken_registration($authToken,$insertid);
				if($set_authtoken){

					if($this->db->insert('tbl_facebook_user',array('uid'=>$insertid,'fb_uid'=>$data['uid'],'access_token'=>$data['access_token'],'social_provider'=>'FACEBOOK'))){
						$this->db->join('tbl_authtoken', 'tbl_authtoken.userid = tbl_registration.id', 'inner');
						$query = $this->db->get_where("tbl_registration",array('tbl_registration.id'=>$insertid));
						$return_array = array('status'=>'success','userdata'=>$query->row_array());
					}
					else{
						$return_array = array('status'=>'fail');
					}
				}
		}
		return $return_array;
	}*/

//..................... delete patient and doctor based on id

	function delete_registration($uid,$type){
		if($type == 'user'){
		  if($this->db->where_in('id', $uid)->delete('tbl_registration')){
		  }
		}else{
			 if($this->db->where_in('id', $uid)->delete('tbl_doctors')){
		  }
		}
	}

//..................... delete patient bystander registration based on id

	function delete_patient_registration($uid){
		$this->db->where('patient_id',$uid);
		$this->db->delete('tbl_patient_dependent');
		return true;
	}

//................... get userdata using authtoken


	function get_auth_token($authtoken){
		
		$this->db->join('tbl_registration', 'tbl_authtoken.userid = tbl_registration.id', 'inner');
		$query = $this->db->get_where("tbl_authtoken",array("authtoken"=>$authtoken));
		if ($query->num_rows() > 0) {

			$return_array = array('status'=>'success','userdata'=>$query->row_array());
		}
		else{
			$return_array = array('status'=>'fail');
		}
		return $return_array;
	}

//.....................get home details

	function get_home_details($id){
		$res = array();
		$res['doctor_count'] = $this->db->count_all('tbl_doctors');
		$res['clinic_count'] = $this->db->count_all('tbl_clinic');
		$res['booking_count'] = $this->db->count_all('tbl_booking');
		$res['charity_count'] = $this->db->count_all('tbl_charity');
		$this->db->select('count(id) as count');
		//$query = $this->db->get_where('tbl_patient_notification',array('patient_id'=>$id))->result();
		$query = $this->notification_list_unread_count($id);
		$res['notification_count'] = $query->count;
		return $res;
	}
//................... patient location update

	function location_update($data,$headers){
		$query = $this->db->get_where("tbl_authtoken",array("authtoken"=>$headers['Auth']));

		if ($query->num_rows() > 0) {
			$userid = $query->row_array();
			$sql = $this->db->insert_string('tbl_user_location', array("userid"=>$userid['userid'],"location_name"=>$data['location_name'],"location_latitude"=>$data['location_latitude'],"location_longitude"=>$data['location_longitude'])) . ' ON DUPLICATE KEY UPDATE userid = ' .$userid['userid'].',location_name ='.'"' .$data['location_name'].'"'.',location_latitude='.$data['location_latitude'].',location_longitude='.$data['location_longitude'];
			if($this->db->query($sql)){
			
				$return_array = array('status'=>'success');
			}
			else{

				$return_array = array('status'=>'fail');
			}
		}
		return $return_array;
	}

//...................... update fcm token using authtoken for user

	function update_fcm_token($data,$authtoken){
		if($this->db->update('tbl_authtoken', $data, array('authtoken' => $authtoken))){

			$return_array = array('status'=>'success');

		}
		else{
			$return_array = array('status'=>'fail');
		}

		return $return_array;

	}

//...................... update fcm token using authtoken for doctor

	function update_fcm_token_doctor($data,$authtoken){
		if($this->db->update('tbl_authtoken_doctors', $data, array('authtoken' => $authtoken))){

			$return_array = array('status'=>'success');

		}
		else{
			$return_array = array('status'=>'fail');
		}

		return $return_array;

	}

//................ get closest location details of doctors from user location


	function get_closest_location($lat,$lng){	

		$this->db->select("tbl_clinic.street_address as location_name,tbl_clinic.location_lattitude as location_lattitude,tbl_clinic.location_longitude as location_longitude,ROUND(( 6371 * acos( cos( radians({$lat}) ) * cos( radians( `tbl_clinic`.`location_lattitude` ) ) * cos( radians( `tbl_clinic`.`location_longitude` ) - radians({$lng}) ) + sin( radians({$lat}) ) * sin( radians( `tbl_clinic`.`location_lattitude` ) ) ) )) AS distance");
		$this->db->from("tbl_clinic");
		$this->db->join("tbl_clinic_doctors","tbl_clinic.id = tbl_clinic_doctors.clinic_id","INNER");
		$this->db->join("tbl_doctors","tbl_clinic_doctors.doctor_id = tbl_doctors.id","INNER",false);
		$this->db->having('distance <= 10');
		$this->db->order_by("distance", "asc");
		$results = $this->db->get();
        return $results->result_array();
	}

// ...............get location details of  user or patient

	function get_location($authtoken){

		$query = $this->db->get_where("tbl_authtoken",array("authtoken"=>$authtoken));
		if ($query->num_rows() > 0) {
			$uid = $query->row_array();
			$query_location = $this->db->get_where("tbl_user_location",array("userid"=>$uid['userid']));
			if($query_location->num_rows() > 0){
				$return_array = array('status'=>'success','data'=>$query_location->row_array());
			}
			else{
				$return_array = array('status'=>'fail');
			}
		}
		else{
			$return_array = array('status'=>'fail');
		}
		return $return_array;
	}


//........................ get doctor specialisations


	function get_doctor_specialisation(){
		$this->db->select("DISTINCT(tbl_specialization.specialization_name),tbl_specialization.id as specialization_id");
		$this->db->group_by('tbl_specialization.specialization_name');
		$query = $this->db->get_where("tbl_specialization");
		if ($query->num_rows() > 0) {
			$return_array = array('status'=>'success','data'=>$query->result_array());
		}
		else{
			$return_array = array('status'=>'fail');
		}
		return $return_array;
	}

//........................ get doctor specialisations

	function get_specialisation(){
		$this->db->select("DISTINCT(tbl_specialization.specialization_name) as name,tbl_specialization.id");
		//$this->db->group_by('tbl_specialization.specialization_name');
		$query = $this->db->get_where("tbl_specialization");
		if ($query->num_rows() > 0) {
			$return_array = array('status'=>'success','data'=>array('specializations'=>$query->result_array()));
		}
		else{
			$return_array = array('status'=>'fail');
		}
		return $return_array;
	}

//................. get doctor profile


	function get_doctor_profile($doctorid){
		$this->db->select('tbl_doctors.*,
							tbl_specialization.specialization_name,
							tbl_specialization.sub_name,
							tbl_clinic.street_address as location_name,
							tbl_clinic.location_lattitude,tbl_clinic.location_longitude,
							COUNT(DISTINCT(tbl_review.review_id)) as reviewcount,
							GROUP_CONCAT(DISTINCT(tbl_doctors_photos.photo_url) SEPARATOR ",") as photos
						');
		$this->db->join('tbl_clinic_doctors', 'tbl_clinic_doctors.doctor_id = tbl_doctors.id','INNER');
		$this->db->join('tbl_clinic', 'tbl_clinic.id = tbl_clinic_doctors.clinic_id','INNER');
		$this->db->join('tbl_doctors_photos', 'tbl_doctors_photos.doctor_id = tbl_doctors.id','LEFT');
		$this->db->join('tbl_specialization', 'tbl_specialization.id = tbl_doctors.specialization','LEFT');
		$this->db->join('tbl_review', 'tbl_review.doctor_id = tbl_doctors.id','LEFT');		
		$query = $this->db->get_where("tbl_doctors",array("tbl_doctors.id"=>$doctorid));
		
		if($query->num_rows() > 0 && !is_null($query->row_array()['id'])){
			
			$query = $query->row_array();
			$this->db->select("CAST(AES_DECRYPT(`tbl_doctors`.`dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dob_new");
			$this->db->where('id',$query['id']);
			$querydate = $this->db->get('tbl_doctors')->row();
			$query['dob'] = $querydate->dob_new;
			$query['cep'] = decrypt_data($query['cep']);
			$query['complement'] = decrypt_data($query['complement']);
			$query['about'] = decrypt_data($query['about']);
			$query['gender'] = decrypt_data($query['gender']);
			//$query['name'] = decrypt_data($query['name']);
			//$query['price'] = decrypt_data($query['price']);
			//$query['domiciliary_status'] = decrypt_data($query['domiciliary_status']);
			$query['rg'] = decrypt_data($query['rg']);
			$query['crm'] = decrypt_data($query['crm']);
			$query['street_address'] = decrypt_data($query['street_address']);
			$query['locality'] = decrypt_data($query['locality']);
			$query['number'] = decrypt_data($query['number']);

			$return_array = array('status'=>'success','data'=>$query);
		}
		else{
			$return_array = array('status'=>'fail');
		}
		return $return_array;
	}

// .................fetch all reviews of a particular doctor

	function review_list($id,$start,$per_page){
		$this->db->join('tbl_registration','tbl_registration.id = tbl_review.reviewer_id');
		$this->db->limit($per_page,$start);
		$query = $this->db->get_where("tbl_review",array("tbl_review.doctor_id"=>$id))->result_array();
		//echo $this->db->last_query();exit();
		if(count($query)> 0){
			return $query;
		}
		else{
			return false;
		}
	}

//................ fetch all reviews of particular clinic

	function review_list_clinic($id,$start,$per_page){
		$this->db->join('tbl_registration','tbl_registration.id = tbl_review_clinic.reviewer_id');
		$this->db->limit($per_page,$start);
		$query = $this->db->get_where("tbl_review_clinic",array("tbl_review_clinic.clinic_id"=>$id))->result_array();
		if(count($query)> 0){

			return $query;
		}
		else{
			return false;
		}
	}

//..................... insert doctor booking details

	function doctor_booking($data,$patient_id){
		$query = $this->db->get_where('tbl_authtoken',array('authtoken'=>$patient_id));		
		if($query->num_rows() > 0){
			$date = strtotime(date('Y-m-d'));
			if($data['date'] < $date){
				$return_array = array('status'=>'fail','msg' =>'Please select date from future');
			}else{

				if(isset($data['promocode_id']) && strlen(trim($data['promocode_id']," ")) > 0){
					$res = $this->get_promocode_result($data);
					//echo"<pre>";print_r(count($res['data']['promo_data']));echo"</pre>";exit();
					if($res['status'] == 'success'){
						$patientid = $query->row_array();
						$return_array = $this->doctor_booking_wth_promocode($data,$res['data'],$patientid);
					}else{
						$return_array = $res;
					}
				}else{
					$patientid = $query->row_array();

					$return_array = $this->doctor_booking_wth_promocode($data,'',$patientid);
				} // promocode else closing bracket
			}
		}
		else{
			$return_array = array('status'=>'fail','msg' =>'Invalid Auth token');
		}
		return $return_array;
	}

//........................ insert doctor booking with promocode

	public function doctor_booking_wth_promocode($data,$promocode,$patientid){
		$this->db->select('accept_return,return_timeperiod');
		$this->db->where('id',$data['doctor_id']);
		$check_doctor_status = $this->db->get('tbl_doctors')->row();
		if($check_doctor_status->accept_return == '1'){
			$old_date = date('Y-m-d',$data['date']);
			$newdate = date("Y-m-d",strtotime($old_date." -".$check_doctor_status->return_timeperiod." day"));
			$new_date = strtotime($newdate);

			$this->db->where('doctor_id',$data['doctor_id']);
			$this->db->where('clinic_id',$data['clinic_id']);
			$this->db->where('patient_id',$patientid['userid']);
			$this->db->where('free_visit_status',0);
			$this->db->where('visit_type',0);
			$this->db->where('date >=',$new_date);
			$this->db->where('date <=',$data['date']);
			$this->db->order_by('id','DESC');
			$this->db->limit(1,0);
			$res = $this->db->get('tbl_booking')->row();
			//echo $this->db->last_query();exit();
			//print_r($res);exit();
			if($res){
				$visit = $res;
			}else{
				$visit = '';
			}
			$return_array = $this->get_doctor_booking_result($data,$patientid,$visit,$promocode);
		}else{
			$return_array = $this->get_doctor_booking_result($data,$patientid,'',$promocode);
		}
		return $return_array;
	}

//........................ get doctor booking result
	public function get_doctor_booking_result($data,$patientid,$res,$promocode){

		if(isset($res) && $res != ''){
			if($res->visit_type == '0'){
				$this->db->update('tbl_booking',array('free_visit_status'=>'1'),array('id'=>$res->id));
				$visit = '1';
				$is_payment_required = false;
				$payment_status = '1';
				$free_visit_status = '2';
			}else{
				$visit = '0';
				$free_visit_status = '0';
				if($data['payment_mode'] == '1'){
					$payment_status = '1';
				}else{
					$payment_status = '0';
				}
				$is_payment_required = true;
			}
		}else{
			$visit = '0';
			$is_payment_required = true;
			$free_visit_status = '0';
			if($data['payment_mode'] == '1'){
				$payment_status = '1';
			}else{
				$payment_status = '0';
			}
		}

		if(isset($promocode) && ($promocode != '')){
			$new_amnt = ($data['amount'] * $promocode['promo_data']['amount'])/100;
			$diff = $data['amount'] - $new_amnt;
			$promo_name = $promocode['promo_data']['name'];
		}else{
			$new_amnt = '';
			$diff = $data['amount'];
			$promo_name = '';
		}

		$check = $this->db->get_where('tbl_booking',array('doctor_id'=>$data['doctor_id'],'clinic_id'=>$data['clinic_id'],'date'=>$data['date'],'time'=>$data['time'],'payment_status'=>'1'));
		$this->db->select('name,profile_pic,specialization');
		$doctr_data = $this->db->get_where('tbl_doctors',array('id'=>$data['doctor_id']))->row_array();
		//print_r($doctr_data);exit();
		$special = $this->db->get_where('tbl_specialization',array('id'=>$doctr_data['specialization']))->row();
		$fcm_user = $this->db->get_where('tbl_authtoken',array('userid'=>$patientid['userid']))->row();
		$conslt_time =  date('Y-m-d h:i:s');
		$conslt_time = strtotime($conslt_time);
		$settngs = $this->db->get('settings')->row();
		$ipokefees = $settngs->ipok_fee;
		if($check->num_rows() <= 0){
				//$patientid = $query->row_array();
			//$offset=5.5*60*60;
			$date_def = date('Y-m-d',$data['date']);
			$times = explode('-', $data['time']);
			$start_time = strtotime($date_def.$times[0]);
			$end_time = strtotime($date_def.$times[1]);
			$msg = "Your booking for doctor ".$doctr_data['name']." at time ".$data['time']." is confirmed";
			$msg2 = "You have a new booking on  ".date('jS F Y',$data['date'])." at ".date('h:i A',$start_time);
			if($this->db->insert('tbl_booking',array('doctor_id'=>$data['doctor_id'],'clinic_id'=>$data['clinic_id'],'patient_id'=>$patientid['userid'],'ipok_fee'=>$ipokefees,'date'=>$data['date'],'time'=>$data['time'],'booking_status'=>'1','payment_status'=>$payment_status,'free_visit_status'=>$free_visit_status,'visit_type'=>$visit,'amount'=>$data['amount'],'promo_name'=>$promo_name,'promo_amount'=>$new_amnt,'payment_type'=>$data['payment_mode'],'total_sum'=>$diff,'time_start'=>$start_time,'time_end'=>$end_time,'requested_date'=>time()))){
				$insert_id = $this->db->insert_id();

				if($visit == '0'){
					$doctor_wallet = $this->db->get_where('tbl_wallet_details',array('doctor_id'=>$data['doctor_id']))->row();
					$ipkfee = $this->db->get('settings')->row();
					$futures = $diff - (($diff * $ipkfee->ipok_fee)/100);

					if($doctor_wallet){
						$future = $futures + (decrypt_data($doctor_wallet->future_earn));
						$total = $future + (decrypt_data($doctor_wallet->reedem_earn));
						$this->db->update('tbl_wallet_details',array('future_earn'=>encrypt_data($future),'total_earn'=>encrypt_data($total)),array('doctor_id'=>$data['doctor_id']));
					}else{
						$this->db->insert('tbl_wallet_details',array('future_earn'=>encrypt_data($futures),'total_earn'=>encrypt_data($futures),'doctor_id'=>$data['doctor_id'],'reedem_earn'=>encrypt_data('0')));
					}
				}
				
				if($payment_status == '1'){
					$this->db->insert('tbl_patient_notification',array('patient_id'=>$patientid['userid'],'type'=>'0','message'=>$msg,'time'=>$conslt_time,'booking_id'=>$insert_id,'read_status'=>'0'));
					$patient_insert_id = $this->db->insert_id();

					$new['id'] = $patient_insert_id;
					$new['type'] = "Consultation Confirmation";
					$new['booking_id'] = $insert_id;
					$new['booking_date'] = $data['date'];
					$new['doctor_id'] = $data['doctor_id'];
					$new['doctor_name'] = $doctr_data['name'];
					$new['doctor_specialization'] = $special->specialization_name;
					$new['doctor_photo'] = $doctr_data['profile_pic'];
					$new['message'] = $msg;
					$new['time'] = $conslt_time;
					$new['to'] =$fcm_user->fcm_token;
					$user_type = '1';
	                $user_push = $this->push_sent($new,$user_type);
					
					$this->db->insert('tbl_doctor_notifications',array('doctor_id'=>$data['doctor_id'],'type'=>'2','message'=>$msg2,'time'=>$conslt_time,'read_status'=>'0'));
					$doctor_insert_id = $this->db->insert_id();
					$fcm_doctor = $this->db->get_where('tbl_authtoken_doctors',array('doctor_id'=>$data['doctor_id']))->row();
					$news['id'] = $doctor_insert_id;
					$news['type'] = "New Consultation";
					$news['message'] =$msg2;
					$news['read_status'] = false;
					$news['to'] = $fcm_doctor->fcm_token;
					$doctor_type = '2';
					$doctor_push = $this->push_sent($news,$doctor_type);
				}
				$return_array = array('status'=>'success','data'=>array('booking_id'=>$insert_id,'is_waiting'=>false,'is_payment_required'=>$is_payment_required));
			}
			else{
				$return_array = array('status'=>'fail','msg' =>'insertion failed');
			}
		}
		elseif($check->num_rows() == 1){
			$date_def = date('Y-m-d',$data['date']);
			$times = explode('-', $data['time']);
			$start_time = strtotime($date_def.$times[0]);
			$end_time = strtotime($date_def.$times[1]);
			$msg = "Your booking for doctor ".$doctr_data['name']." at time ".$data['time']." is in Waiting list";
			if($this->db->insert('tbl_booking',array('doctor_id'=>$data['doctor_id'],'clinic_id'=>$data['clinic_id'],'patient_id'=>$patientid['userid'],'ipok_fee'=>$ipokefees,'date'=>$data['date'],'time'=>$data['time'],'booking_status'=>'0','payment_status'=>$payment_status,'free_visit_status'=>$free_visit_status,'visit_type'=>$visit,'amount'=>$data['amount'],'promo_name'=>$promo_name,'promo_amount'=>$new_amnt,'payment_type'=>$data['payment_mode'],'total_sum'=>$diff,'time_start'=>$start_time,'time_end'=>$end_time,'requested_date'=>time()))){
				$insert_id = $this->db->insert_id();
				if($payment_status == '1'){
					$this->db->insert('tbl_patient_notification',array('patient_id'=>$patientid['userid'],'type'=>'1','message'=>$msg,'time'=>$conslt_time,'booking_id'=>$insert_id,'read_status'=>'0'));
					$patient_insert_id = $this->db->insert_id();

					$new['id'] = $patient_insert_id;
					$new['type'] = "Waiting List";
					$new['booking_id'] = $insert_id;
					$new['booking_date'] = $data['date'];
					$new['doctor_id'] = $data['doctor_id'];
					$new['doctor_name'] = $doctr_data['name'];
					$new['doctor_specialization'] = $special->specialization_name;
					$new['doctor_photo'] = $doctr_data['profile_pic'];
					$new['message'] = $msg;
					$new['time'] = $conslt_time;
					$new['to'] =$fcm_user->fcm_token;
					$user_type = '1';
	                $user_push = $this->push_sent($new,$user_type);
				}
			$return_array = array('status'=>'failed','data' =>array('booking_id'=>$insert_id,'is_waiting'=>true,'is_payment_required'=>$is_payment_required));
		}

		}
		elseif($check->num_rows() > 1){
			$return_array = array('status'=>'fail','msg' =>'Selected Doctor not available');
		}
		return $return_array;
	}

//........................ get promocodes based on id

	public function get_promocode_result($data){
		$query = $this->db->get_where('tbl_promocode',array('id'=>$data['promocode_id']))->row();
		if($query){
			$doctors_id = explode(',',$query->doctor_id);
			if(in_array($data['doctor_id'], $doctors_id)){
				if($data['date'] >= $query->valid_from && $data['date'] <= $query->valid_to){
					$new =array();
					$new['name'] = $query->promo_name;
					$new['amount'] = $query->amount;
					$res = array('status'=>'success','data'=>array('promo_data'=>$new));
				}else{
					$res = array('status'=>'fail','msg'=>'Promocode get Expired');
				}
			}else{
				$res =array('status'=>'fail','msg'=>'Promocode is not used by this doctor');
			}
		}else{
			$res = array('status'=>'fail','msg'=>'Invalid Promocode Id');
		}
		return $res;
	}

//............................ get clinic specialisation

	function is_cpf_exist($cpf){
		$res = $this->db->get_where('tbl_cpf_number',array('cpf'=>$cpf))->row();
		if($res){
			$query = array('status'=>'error');
		}else{
			$query = array('status'=>'success');
		}
		return $query;
	}

	function get_clinic_specialisation(){
		$this->db->select("DISTINCT(tbl_specialization.specialization_name),tbl_clinic_specialization.clinic_id,tbl_specialization.id");
		$this->db->join('tbl_specialization','tbl_specialization.id = tbl_clinic_specialization.specialization_id');
		$this->db->group_by('tbl_specialization.id');
		$query = $this->db->get_where("tbl_clinic_specialization");
		if ($query->num_rows() > 0) {
			$return_array = array('status'=>'success','data'=>$query->result_array());
		}
		else{
			$return_array = array('status'=>'fail');
		}
		return $return_array;
	}

//........................ search a doctor by differnt fields

	function search_doctor_query($data,$lat,$lng){
 		$this->db->select("DISTINCT(tbl_clinic.id) as clinic_id,tbl_doctors.id as doctor_id,
 							tbl_doctors.name,
 							tbl_doctors.profile_pic AS doctor_photo,
							tbl_doctors.price,
							tbl_doctors.domiciliary_status,
							tbl_doctors.online_status as online,
							tbl_specialization.specialization_name AS specialisation,
							tbl_clinic.name as clinic_name,
							ROUND(( 6371 * acos( cos( radians({$lat}) ) * cos( radians( case when tbl_clinic_doctors.clinic_id != '0' then `tbl_clinic`.`location_lattitude` else `tbl_doctors`.`default_latitude` end as location_lattitude) ) * cos( radians( case when tbl_clinic_doctors.clinic_id != '0' then `tbl_clinic`.`location_longitude` else `tbl_doctors`.`default_longitude` end as location_longitude) - radians({$lng}) ) + sin( radians({$lat}) ) * sin( radians( case when tbl_clinic_doctors.clinic_id != '0' then `tbl_clinic`.`location_lattitude` else `tbl_doctors`.`default_latitude` end as location_lattitude ) ) ) )) AS distance
						");
		$this->db->from("tbl_doctors");

		$this->db->join('tbl_clinic_doctors', 'tbl_doctors.id = tbl_clinic_doctors.doctor_id','INNER');
		$this->db->join('tbl_clinic', 'tbl_clinic_doctors.clinic_id = tbl_clinic.id','INNER');
		$this->db->join("tbl_specialization","tbl_doctors.specialization = tbl_specialization.id","LEFT");
		
		
 		if(isset($data['query']) && strlen($data['query'])){
 			$query = $data['query'];
 			$where = 'tbl_doctors.name LIKE '."'$query%'";
 			$this->db->where($where);
			$this->db->having('distance <= 20');
 		}
 		if(isset($data['speciality']) && strlen($data['speciality'])){

 			$speciality = $data["speciality"];
 			$where = 'tbl_doctors.specialization ='. "'$speciality'";
			$this->db->where($where);
 		}
 		// if(isset($data['date']) && strlen($data['date'])){
 		// 	$this->db->join("tbl_doctor_leave","tbl_doctors.id = tbl_doctor_leave.doctor_id and tbl_clinic_doctors.clinic_id = tbl_doctor_leave.clinic_id","LEFT");
 		// 	$date = $data["date"];
 		// 	$this->db->where("(tbl_doctor_leave.start_date IS NULL or ($date<tbl_doctor_leave.start_date OR $date>tbl_doctor_leave.end_date))");
 		// 	//$new_where = "(select count(*) from tbl_doctor_leave where ($date > tbl_doctor_leave.start_date OR  $date < tbl_doctor_leave.end_date)) =". 0;
 		// 	//$this->db->where($new_where);
			// //$this->db->or_where($or_where);
 		// }
 		if(isset($data['others']) && strlen($data['others'])){
 			if($data['others'] == 'MEN' || $data['others'] == 'WOMEN'){
 				if($data['others'] == 'MEN'){
		 			$data['others'] = 'MALE';
		 		}
		 		if($data['others'] == 'WOMEN'){
		 			$data['others'] = 'FEMALE';
		 		}
		 		$others = $data['others'];
		 		$where = 'tbl_doctors.gender ='. "'$others'";
		 		$this->db->where($where);
 			}
 			if($data['others'] == 'LOWER VALUE'){
 				
		 		$where = 'tbl_doctors.price';
		 		$this->db->order_by($where,'asc');
 			}
 			if($data['others'] == 'MOST WELL ASSESSED'){
 				$inner_query = $this->db->query("SELECT doctor_id,COUNT(doctor_id) AS count FROM tbl_review GROUP BY doctor_id HAVING COUNT(doctor_id) = (SELECT MAX(mycount) AS count FROM (SELECT COUNT(doctor_id) AS mycount,doctor_id FROM tbl_review GROUP BY doctor_id) AS c)");
		
				if($inner_query->num_rows() > 0){
					$resultArray = $inner_query->result_array();
					$doctorID = $resultArray[0]['doctor_id'];
					$where = 'tbl_doctors.id ='."'$doctorID'";
					$this->db->where($where);
				}
		 	}
		 	if($data['others'] == 'DOMICILIARY ATTENDANCE'){
		 		
		 		$where = "CAST(AES_DECRYPT(tbl_doctors.domiciliary_status,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) =". 1;
		 		$this->db->where($where);
		 	}
 		}
 		if(isset($data['location_name']) && strlen($data['location_name']) && isset($data['location_latitude']) && strlen($data['location_latitude']) && isset($data['location_longitude']) && strlen($data['location_longitude'])){

 			$datalat = $data['location_latitude'];
 			$datalong = $data['location_longitude'];
 			$where = "ROUND(( 6371 * acos( cos( radians({$datalat}) ) * cos( radians( `location_lattitude` ) ) * cos( radians( `location_longitude` ) - radians({$datalong}) ) + sin( radians({$datalat}) ) * sin( radians( `location_lattitude` ) ) ) )) <=". 50;
			$this->db->where($where);
 		}
 		if(isset($data['clinic_id']) && strlen($data['clinic_id'])){
 			
 			$where = 'tbl_clinic_doctors.clinic_id';
 			$this->db->where($where,$data['clinic_id']);
 		}
 		
 		$query = $this->db->get();
		echo $this->db->last_query()."<br><br>"; 
		//print_r($this->db->last_query());die();
		if ($query->num_rows() > 0) {
			$querys = $query->result_array();
			//echo "<pre>";print_r($querys);exit();
			if(isset($data['date']) && strlen($data['date'])){
				$day = date('D',$data['date']);
				$day = strtolower($day);
				$date = $data['date'];
				$leave_query = $this->db->query("SELECT * FROM `tbl_doctor_leave` WHERE ($date >= `tbl_doctor_leave`.`start_date` AND $date <= `tbl_doctor_leave`.`end_date`)")->result();
				//echo $this->db->last_query();
				if($leave_query){
					//echo"s";
					foreach ($leave_query as $key => $value) {
						foreach ($querys as $keys => $values) {
							if(($values['doctor_id'] == $value->doctor_id ) && ($values['clinic_id'] == $value->clinic_id)){
								//echo"n".$values['clinic_id'].'-'.$values['doctor_id']."<br>";
								unset($querys[$keys]);
							}else{
								//echo"s".$values['clinic_id'].'-'.$values['doctor_id'];
								$consult = $this->db->get_where('tbl_consultation',array('clinic_id'=>$values['clinic_id'],'doctor_id'=>$values['doctor_id']))->row();
								if($consult){
									if($consult->date != '""'){
										$consult_date = json_decode($consult->date);
										foreach ($consult_date as $consult_key => $consult_value) {
											$new_array_day = array();
											$new_array_day[] = $consult_value->day;
										}
									//	print_r($new_array_day);
										if(!in_array($day, $new_array_day)){
											unset($querys[$keys]);
										}
									}else{
										unset($querys[$keys]);
									}
								}
							}
						}
					}
				}else{
					foreach ($querys as $keys => $values) {
						//echo"s".$values['clinic_id'].'-'.$values['doctor_id'];
						$consult = $this->db->get_where('tbl_consultation',array('clinic_id'=>$values['clinic_id'],'doctor_id'=>$values['doctor_id']))->row();
						if($consult){
							if($consult->date != '""'){
								$consult_date = json_decode($consult->date);
								foreach ($consult_date as $consult_key => $consult_value) {
									$new_array_day = array();
									$new_array_day[] = $consult_value->day;
								}
								//print_r($new_array_day);
								if(!in_array($day, $new_array_day)){
									unset($querys[$keys]);
								}
							}else{
								unset($querys[$keys]);
							}
						}
					}
				}
			}
			//echo"<pre>";print_r($querys);exit();
			$return_array = array('status'=>'success','data'=>$querys);
		}
		else{
			$return_array = array('status'=>'fail');
		}		
		return $return_array;		
	}

//...................search clinic based on different fields

	function search_clinic_query($data,$lat,$lng){
 		
 		
 		
		$this->db->select("tbl_clinic.id as clinic_id,
							tbl_clinic.name,
							tbl_clinic.profile_photo AS clinic_photo,
							ROUND(( 6371 * acos( cos( radians({$lat}) ) * cos( radians( `location_lattitude` ) ) * cos( radians( `location_longitude` ) - radians({$lng}) ) + sin( radians({$lat}) ) * sin( radians( `location_lattitude` ) ) ) )) AS distance,
							tbl_specialization.specialization_name as speciality_of_the_clinic
						");
		$this->db->from("tbl_clinic");

		$this->db->join("tbl_clinic_specialization","tbl_clinic.id = tbl_clinic_specialization.clinic_id","LEFT");
		$this->db->join("tbl_specialization","tbl_specialization.id = tbl_clinic_specialization.specialization_id","LEFT" );
		if(isset($data['query']) && strlen($data['query'])){
			$query = $data["query"];
 			$where = 'tbl_clinic.name LIKE '."'$query%'";
			$this->db->where($where);

 		}
 		if(isset($data['speciality']) && strlen($data['speciality'])){
 			$speciality = $data["speciality"];
 			$where = 'tbl_clinic_specialization.specialization_id ='. "'$speciality'";
			$this->db->where($where);
 		}
 		if(isset($data['location_name']) && strlen($data['location_name']) && isset($data['location_latitude']) && strlen($data['location_latitude']) && isset($data['location_longitude']) && strlen($data['location_longitude'])){

 			
 			$datalat = $data['location_latitude'];
 			$datalong = $data['location_longitude'];
 			$where = "ROUND(( 6371 * acos( cos( radians({$datalat}) ) * cos( radians( `location_lattitude` ) ) * cos( radians( `location_longitude` ) - radians({$datalong}) ) + sin( radians({$datalat}) ) * sin( radians( `location_lattitude` ) ) ) )) <=". 50;
			$this->db->where($where);
 		}
		$query = $this->db->get();
		//echo $this->db->last_query();exit();
		if ($query->num_rows() > 0) {
			$return_array = array('status'=>'success','data'=>$query->result_array());
		}
		else{
			$return_array = array('status'=>'fail');
		}
		return $return_array;		
	}

	

//................................ Doctors Availability

	function doctor_availability($ID){
		$this->db->select("tbl_consultation.*");
		$query = $this->db->get_where('tbl_consultation',array('doctor_id' => $ID['doctor_id'],'clinic_id' => $ID['clinic_id']))->row_array();		
		if (count($query) > 0) {
			$this->db->select('consultation_duration');
			$res=$this->db->get_where('tbl_doctors',array('id'=>$ID['doctor_id']))->row();
			$query['duration'] = $res->consultation_duration;
			$return_array = array('status'=>'success','data'=>$query);
		}
		else{
			$return_array = array('status'=>'fail');
		}
		return $return_array;
	}

//..................................... clinic profile

	function clinic_profile($clinicId){

							
		$this->db->select('tbl_clinic.id as clinic_id,
							tbl_clinic.name as clinic_name,
							GROUP_CONCAT(DISTINCT(tbl_specialization.specialization_name) SEPARATOR ",") as clinic_specialization,
							tbl_clinic.profile_photo as clinic_photo,
							tbl_clinic.location_lattitude as latitude,
							tbl_clinic.location_longitude as longitude,
							tbl_clinic.about as about,
							tbl_clinic.cep,
							tbl_clinic.street_address,
							tbl_clinic.locality,
							tbl_clinic.number,
							COUNT(DISTINCT(tbl_review_clinic.clinic_id)) as no_of_reviews');
		$this->db->from('tbl_clinic');
		$this->db->join('tbl_clinic_specialization','tbl_clinic_specialization.clinic_id = tbl_clinic.id');
		$this->db->join('tbl_specialization','tbl_specialization.id = tbl_clinic_specialization.specialization_id','LEFT');
		$this->db->join('tbl_review_clinic','tbl_review_clinic.clinic_id = tbl_clinic.id','LEFT');
		$this->db->where('tbl_clinic.id',$clinicId);
		$query = $this->db->get();

		if($query->num_rows() > 0){
			$result = array('status'=>'success','data'=>$query->row_array());
		}
		else{
			$result = array('status' => 'fail');
		}
		return $result;

	}

//................................ get doctor available dates

	/*function get_doctor_dates($data){
		$this->load->helper('file');
		$string = read_file('commonData.php');
		$this->string = json_decode($string);
//		date_default_timezone_set("Asia/Kolkata");
		//$times = explode('-', $data['time_interval']);			
		//$where = strtotime($this->string->default_date. $times[0]).'<= unix_timestamp(concat("2001-01-01"," ",time)) and unix_timestamp(concat("2001-01-01"," ",time)) <= '.strtotime($this->string->default_date . $times[1]);			
		$this->db->select("tbl_booking.*,l.start_date,l.end_date");
		$this->db->from('tbl_booking');
		$this->db->join("tbl_doctor_leave l","l.doctor_id = {$data['doctor_id']} AND monthname(CONVERT_TZ(FROM_UNIXTIME(`l`.`start_date`),@@session.time_zone,'+00:00')) = '{$data['month']}' AND year(CONVERT_TZ(FROM_UNIXTIME(`l`.`start_date`),@@session.time_zone,'+00:00')) = '".$data['year']."' OR monthname(CONVERT_TZ(FROM_UNIXTIME(`l`.`end_date`),@@session.time_zone,'+00:00')) = '{$data['month']}' AND year(CONVERT_TZ(FROM_UNIXTIME(`l`.`end_date`),@@session.time_zone,'+00:00')) = '".$data['year']."'","LEFT", false);
		$this->db->where('monthname(CONVERT_TZ(FROM_UNIXTIME(`tbl_booking`.`date`),@@session.time_zone,"+00:00"))', $data['month']);
		$this->db->where('year(CONVERT_TZ(FROM_UNIXTIME(`tbl_booking`.`date`),@@session.time_zone,"+00:00"))', $data['year']);
		//$this->db->where('tbl_booking.time',$data['time_interval']);
		$this->db->where('tbl_booking.doctor_id',$data['doctor_id']);
		$this->db->group_by('tbl_booking.id');
		$query = $this->db->get();	

		if($query->num_rows() > 0){
			$result = array('status'=>'success','data'=>$query->result_array());
		}
		else{
			$result = array('status' => 'fail');
		}
		return $result;
	}*/
	
	public function get_doctor_dates($data){
		$query = $this->db->get_where('tbl_consultation',array('doctor_id'=>$data['doctor_id'],'clinic_id'=>$data['clinic_id']))->row();
		$leave = $this->db->get_where('tbl_doctor_leave',array('doctor_id'=>$data['doctor_id'],'clinic_id'=>$data['clinic_id']))->result();
		if($query){
			if($query->active_schedule == '0'){
				$result = array('status'=>'success','data'=>$query->date,'leave'=>$leave);	
			}else{
				$result = array('status'=>'success','data'=>$query->date_secondary,'leave'=>$leave);	
			}
		}else{
			$result = array('status'=>'success');
		}
		//print_r($result);exit();
		return $result;
	}

//............................ booking list of a patient

	function get_booking_list($authtoken){
			$this->db->select("tbl_booking.id as booking_id,
								tbl_booking.date as date,
								tbl_booking.time as time_interval,
								tbl_doctors.id as id,
								tbl_doctors.name as doctor_name,
								tbl_doctors.profile_pic as doctor_photo,
								tbl_booking.booking_status");
			$this->db->from('tbl_booking');
			$this->db->join('tbl_authtoken','tbl_authtoken.userid = tbl_booking.patient_id','INNER');
			$this->db->join('tbl_doctors','tbl_doctors.id = tbl_booking.doctor_id','INNER');
			$this->db->where('tbl_authtoken.authtoken',$authtoken);
			$this->db->where('tbl_booking.payment_status','1');
			$query = $this->db->get();
			if($query->num_rows() > 0){
					$result = array('status'=>'success','data'=>$query->result_array());
				}
				else{
					$result = array('status' => 'fail');
				}
				return $result;
	}



/*...........................................................................................*/
/*..................................... Doctor Model .......................................*/

//........................ Register Doctor
	function register_doctor($data){
	    //$data['name'] = encrypt_data($data['name']);
		$data['about'] = encrypt_data($data['about']);
		//$data['price'] = encrypt_data($data['price']);		
		$data['gender'] = encrypt_data($data['gender']);
		//$data['domiciliary_status'] = encrypt_data($data['domiciliary_status']);
		$data['rg'] = encrypt_data($data['rg']);
		$data['crm'] = encrypt_data($data['crm']);
		$data['cep'] = encrypt_data($data['cep']);
		$data['street_address'] = encrypt_data($data['street_address']);
		$data['locality'] = encrypt_data($data['locality']);
		$data['number'] = encrypt_data($data['number']);
		$data['complement'] = encrypt_data($data['complement']);
		if($this->db->insert('tbl_doctors', $data)){
				$insertid = $this->db->insert_id();
				$this->db->query("update tbl_doctors set dob = AES_ENCRYPT(".$data['dob'].",'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA')where id = ".$insertid);

				$this->db->select("CAST(AES_DECRYPT(`dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dob");
				$this->db->where('id',$insertid);
				$query_date = $this->db->get('tbl_doctors')->row(); 
				$query = $query->row_array();
				unset($query['dob']);
				$query['dob'] = $query_date->dob;
				//$query['name'] = decrypt_data($query['name']);
				$query['about'] = decrypt_data($query['about']);
				//$query['price'] = decrypt_data($query['price']);
				$query['gender'] = decrypt_data($query['gender']);
				//$query['domiciliary_status'] = decrypt_data($query['domiciliary_status']);
				$query['rg'] = decrypt_data($query['rg']);
				$query['crm'] = decrypt_data($query['crm']);
				$query['cep'] = decrypt_data($query['cep']);
				$query['street_address'] = decrypt_data($query['street_address']);
				$query['locality'] = decrypt_data($query['locality']);
				$query['number'] = decrypt_data($query['number']);
				$query['complement'] = decrypt_data($query['complement']);
				$query = $this->db->get_where("tbl_doctors",array("id"=>$insertid)); 

				$return_array = array('status'=>'success','userdata'=>$query);
			}
			else{
				$return_array = array('status'=>'fail');
			}
			return $return_array;
	}

// check username or email exist or not 


	function dataExist_doctor($data){

		if(isset($data['username']) && strlen($data['username'])){

			$query_uname = $this->db->get_where("tbl_doctors",array("username"=>$data['username'])); 
		}
		if(isset($data['email']) && strlen($data['email'])){

			$query_email = $this->db->get_where("tbl_doctors",array("email"=>$data['email']));
		}
		if(isset($query_uname))
		{
			if($query_uname->num_rows() > 0){

				if(isset($query_email)){

					if($query_email->num_rows() > 0){

						$return_array = array('message'=>'username and email are already exist');
					}
					else{

						$return_array = array('message'=>'username already exist');
					}
				}

				else{

					$return_array = array('message'=>'username already exist');
				}
			}
			else{
				$return_array = array('message'=>'success');
			}
		}
		else if(isset($query_email)){

			if($query_email->num_rows() > 0){

				$return_array = array('message'=>'email already exist');
			}
			else{

				$return_array = array('message'=>'success');
			}
		}
		else{
			$return_array = array('message'=>'fail');
		}
		return $return_array;
	}

//..................... delete doctor based on id

	function delete_registration_doctor($uid){
		 if($this->db->where_in('id', $uid)->delete('tbl_doctors')){


		 }
	}
	
	
	function is_waiting_list_used($data,$time){
		$query = $this->db->get_where('tbl_booking',array('doctor_id'=>$data['doctor_id'],'clinic_id'=>$data['clinic_id'],'date'=>$data['date'],'time'=>$time))->result();
		if(count($query) > 0){
			return $query;
		}else{
			return false;
		}
	}

//........................ set authtoken in database for doctor


	function authtoken_registration_doctor($authtoken,$userid){
		$data = array('authtoken'=>$authtoken,'doctor_id'=>$userid);
		if($this->db->insert('tbl_authtoken_doctors', $data)){
			return true;
		}
		else{
			return false;
		}
	}

//................. set profile pic path into database

	function updatePic_doctor($data,$id){
		$this->db->update('tbl_doctors', $data, array('id' => $id));
	}

//.......................add patient review for doctors

	function doctor_review($data,$authtoken){

		$this->db->select('userid');
		$rslt = $this->db->get_where('tbl_authtoken',array('authtoken'=>$authtoken))->row();
		if($rslt){
			$this->db->select('name');
			$doctr_data = $this->db->get_where('tbl_registration',array('id'=>$rslt->userid))->row();
			$msg = "Your have a new review from  ".decrypt_data($doctr_data->name);
			$data['reviewer_id'] = $rslt->userid;
			$datetime = Date('Y-m-d h:i:s');
			$data['date'] = strtotime($datetime);
			$query = $this->db->get_where('tbl_booking',array('medical_record_id'=>$data['medical_record_id']))->row();
			if($query){
				if($query->medical_record_id != '' || $query->medical_record_id != '0'){
					$this->db->update('tbl_medical_records',array('patient_review'=>encrypt_data($data['review'])),array('id'=>$data['medical_record_id']));
				}
			}
			unset($data['medical_record_id']);
			if($this->db->insert('tbl_review',$data)){
				$this->db->insert('tbl_doctor_notifications',array('doctor_id'=>$data['doctor_id'],'type'=>'1','message'=>$msg,'time'=>$data['date'],'read_status'=>'0'));
				$doctor_insert_id = $this->db->insert_id();
				$fcm_doctor = $this->db->get_where('tbl_authtoken_doctors',array('doctor_id'=>$data['doctor_id']))->row();
				$news['id'] = $doctor_insert_id;
				$news['type'] = "New Review";
				$news['message'] =$msg;
				$news['read_status'] = false;
				$news['to'] = $fcm_doctor->fcm_token;
				$doctor_type = '2';
				$doctor_push = $this->push_sent($news,$doctor_type);
				
				$res = array("status"=>"success","msg" =>"Insertion Success");
			}else{
				$res = array("status"=>"failed","msg" =>"Insertion failed");
			}
		}else{
			$res = array("status"=>"failed","msg" =>"Invalid Auth token");
		}
		return $res;
	}
	
	function notification($id,$start,$per_page){
		$this->db->select('tbl_patient_notification.id,tbl_patient_notification.booking_id,tbl_patient_notification.type,tbl_patient_notification.message,tbl_patient_notification.time,tbl_doctors.id as doctor_id,tbl_patient_notification.booking_id,tbl_booking.date,tbl_doctors.profile_pic as doctor_photo,tbl_doctors.name as doctor_name,tbl_specialization.specialization_name as doctor_specialization,tbl_patient_notification.read_status');
		$this->db->join('tbl_booking','tbl_booking.id = tbl_patient_notification.booking_id');
		$this->db->join('tbl_doctors','tbl_doctors.id = tbl_booking.doctor_id');
		$this->db->join('tbl_specialization','tbl_specialization.id = tbl_doctors.specialization');
		if($start!=0 || $per_page!=0){
			$this->db->limit($per_page,$start);
		}
		$this->db->order_by('tbl_patient_notification.id','DESC');
		$query = $this->db->get_where('tbl_patient_notification',array('tbl_patient_notification.patient_id'=>$id))->result();
		if(count($query) > 0){
			return $query;
		}else{
			return false;
		}
	}
	
	public function get_recent_chat_list($id,$start,$per_page,$type){
		$this->db->select('tbl_recent_chats.chat_id as id,tbl_recent_chats.patient_id,tbl_registration.name as patient_name,tbl_registration.profile_photo as patient_photo,tbl_recent_chats.doctor_id,tbl_doctors.name as doctor_name,tbl_doctors.profile_pic as doctor_photo,tbl_recent_chats.msg as message,tbl_recent_chats.sender_type,tbl_recent_chats.photo_url,tbl_recent_chats.video_url,tbl_recent_chats.type,tbl_recent_chats.time');
		$this->db->join('tbl_doctors','tbl_doctors.id = tbl_recent_chats.doctor_id');
		$this->db->join('tbl_registration','tbl_registration.id = tbl_recent_chats.patient_id');
		if($type == 'user'){
			$this->db->where('tbl_recent_chats.patient_id',$id);
		}else{
			$this->db->where('tbl_recent_chats.doctor_id',$id);
		}
		$query = $this->db->get('tbl_recent_chats')->result();
		//echo $this->db->last_query();exit();
		if(count($query) > 0){
			foreach ($query as $key => $value) {
				$query[$key]->patient_name = decrypt_data($value->patient_name);
				//$query[$key]->doctor_name = decrypt_data($value->doctor_name);
			}
			return $query;
		}else{
			return false;
		}
	}



//update booking time
/*
	function update_bookingdate($data){
		$result = $this->db->get_where('tbl_booking',array('id'=>$data['booking_id']))->row();
		$date = date('Y-m-d',$data['date']);
        $times = explode('-',$result->time);
        $start = strtotime($date.$times[0]);
        $end = strtotime($date.$times[1]);
		if($this->db->update('tbl_booking',array('date'=>$data['date'],'time_start'=>$start,'time_end'=>$end),array('id'=>$data['booking_id']))){
			$res = array("message" =>"Updated Successfully");
		}else{
			$res = false;
		}
		return $res;
	}
*/

//.................... get user id from auth token table

	function get_userid_frm_authtoken($auth){
		$this->db->select('userid');
		$rslt = $this->db->get_where('tbl_authtoken',array('authtoken'=>$auth))->row();
		return $rslt;
	}

//.................... get doctor id from auth token table

	function get_doctorid_frm_authtoken($auth){
		$this->db->select('doctor_id');
		$rslt = $this->db->get_where('tbl_authtoken_doctors',array('authtoken'=>$auth))->row();
		return $rslt;
	}

//........................... add dependent for patient

	function add_dependent($id,$data){
		if($this->db->insert('tbl_patient_dependent',array('patient_id'=>$id,'dependent_name'=>$data['dependent_name'],'relation'=>$data['dependent_relation'],'dob'=>$data['dependent_dob'],'image'=>$data['image'],'cpf'=>$data['dependent_cpf']))) {
			
			$result = $this->db->get_where('tbl_patient_dependent',array('patient_id'=>$id))->result();
			if(count($result) >0 ){
				return $result;
			}else{
				return false;
			}
		}
	}

//.......................get dependent list by userid
	
	function get_dependent_list_users($auth){
		$this->db->select('userid');
		$rslt = $this->db->get_where('tbl_authtoken',array('authtoken'=>$auth))->row();
		//echo $this->db->last_query();
		//print_r($rslt);
		if($rslt){
			$this->db->select('dependent_name,id as dependent_id,image as dependent_image,dob as age,relation as dependent_relation');
			$res = $this->db->get_where('tbl_patient_dependent',array('patient_id'=>$rslt->userid))->result();
			$res = array("status"=>"success","data"=>$res);
//echo $this->db->last_query();exit();
		}else{
			$res = array("status"=>"failed","msg" =>"Invalid Auth token");
		}
		return $res;
	}

//................................get upcomming consultation

	function get_upcoming_consultation($id){
		$date = strtotime(date('y-m-d h:i:s'));

		$this->db->select("tbl_doctors.id,tbl_doctors.name as doctor_name,tbl_doctors.online_status as doctor_online,tbl_doctors.consultation_duration,tbl_doctors.profile_pic as doctor_profile_photo,tbl_specialization.specialization_name as doctor_speciality,tbl_doctors.street_address,tbl_doctors.locality,tbl_doctors.number,tbl_doctors.complement,tbl_doctors.price as consultation_fee,case when tbl_clinic.id != '0' then tbl_clinic.location_lattitude else tbl_doctors.default_latitude end AS clinic_latitude,case when tbl_clinic.id != '0' then tbl_clinic.location_longitude else tbl_doctors.default_longitude end AS clinic_longitude,tbl_booking.date,tbl_booking.total_sum as total,tbl_booking.doctor_id,tbl_booking.clinic_id,tbl_booking.id as booking_id");
		$this->db->from("tbl_booking");
		$this->db->join("tbl_doctors","tbl_doctors.id = tbl_booking.doctor_id");
		$this->db->join("tbl_clinic","tbl_clinic.id = tbl_booking.clinic_id");
		$this->db->join("tbl_specialization","tbl_specialization.id = tbl_doctors.	specialization");
		$this->db->where("tbl_booking.id",$id);

		//$this->db->where("tbl_booking.date >= '".$date."'");
		$result = $this->db->get()->row();
			//$result[$key]->consultation_fee = decrypt_data($value->consultation_fee);
		$this->db->where('doctor_id',$result->doctor_id);
		$this->db->where('clinic_id',$result->clinic_id);
		$clinic_details = $this->db->get('tbl_consultation')->row();

		$this->db->select('cancelation_policy');
		$cancel_rslt = $this->db->get('tbl_policy')->row();
		$new = array();
		if($result){
			$new['address']['street'] = decrypt_data($result->street_address);
			$new['address']['locality'] = decrypt_data($result->locality);
			$new['address']['number'] = decrypt_data($result->number);
			$new['address']['complement'] = decrypt_data($result->complement);

			unset($result->street_address);
			unset($result->locality);
			unset($result->number);
			unset($result->complement);

			$new['address'] = implode(',',$new['address']);
			$result->address = $new['address'];
			$this->db->select('ipok_fee');
			$fee = $this->db->get('settings')->row();
			$actual = ($result->consultation_fee * $fee->ipok_fee)/100 ;
			$result->tax = $actual;
			$result->cancellation_policy = strip_tags($cancel_rslt->cancelation_policy);
		//	$result->cancellation_policy = preg_replace("/&nbsp;|\r\n/",'',$result->cancellation_policy);
			//$result->cancellation_policy = preg_replace('/&#39;/',"'",$result->cancellation_policy);
			//print_r($clinic_details);exit();
			$days = json_decode($clinic_details->date);
			//echo"<pre>"; print_r($days); echo"</pre>"; 
			if($days != ''){
				$doctr_days = array();
				foreach ($days as $key => $value) {
					//print_r($value->time->start);exit();
					$doctr_days[$key] = $value->day.' :'. $value->time->start .'-'. $value->time->end ;
				}
				$doctorday = implode(', ',$doctr_days);
				
			}else{
				$doctorday = '';
			}
			$result->doctor_available=$doctorday;
			$res = array("status"=>"success","data"=>$result);
		}else{
			$res = array("status"=>"failed");
		}
		return $res;
 		
	}

//........................ change patient password

	function change_patient_password($id,$data){
		$query = $this->db->get_where('tbl_registration',array('id'=>$id))->row_array();
		if($query){
            if(md5($data['current_password']) == $query['password']){
            	if($this->db->update('tbl_registration',array('password'=>md5($data['new_password'])),array('id'=>$id))){
            		$res = array("status"=>"success","msg"=>" Password Updated Successfully");
            	}else{
            		$res = array("status"=>"failed","msg"=>"Sorry Not updated. Something went wrong");
            	}
            }else{
            	$res = array("status"=>"failed","msg"=>"Current Password and Existing Password Doesn't match");
            }
		}else{
			$res = array("status"=>"failed","msg"=>"Password not Updated. User Cannot Exist");
		}
		return $res;
	}


	function doctor_change_password($id,$data){
		$query = $this->db->get_where('tbl_doctors',array('id'=>$id))->row_array();
		if($query){
            if(md5($data['old_password']) == $query['password']){
            	if($this->db->update('tbl_doctors',array('password'=>md5($data['new_password'])),array('id'=>$id))){
            		$res = array("status"=>"success","msg"=>" Password Updated Successfully");
            	}else{
            		$res = array("status"=>"failed","msg"=>"Sorry Not updated. Something went wrong");
            	}
            }else{
            	$res = array("status"=>"failed","msg"=>"Current Password and Existing Password Doesn't match");
            }
		}else{
			$res = array("status"=>"failed","msg"=>"Password not Updated. User Cannot Exist");
		}
		return $res;
	}

//.........................get promocode list 

	public function get_promocode_list(){
        $now = strtotime(date('Y-m-d 0:0:0'));
		//print_r($now); exit(); 
		$this->db->select('id,promo_name as title,valid_to as date,description,image');
		$this->db->where('valid_from <=',$now);
		$this->db->where('valid_to >=',$now);
		$this->db->where('status','1');
		$query = $this->db->get('tbl_promocode')->result();
		//echo $this->db->last_query();exit();
		if(count($query) > 0){
			$res = array("status"=>"success","data"=>$query);
		}else{
			$res = array("status"=>"failed");
		}
		return $res;
	}

//..........................cancel booking by patient

	public function cancel_booking($data){
		$query = $this->db->get_where('tbl_booking',array('id'=>$data['booking_id']))->row_array();
		if($query){
			$this->db->select('duration');
			$dur = $this->db->get('tbl_policy')->row();

		    $old_date = date('Y-m-d h:i:sA',$query['time_start']);
			$newdate = date("Y-m-d h:i:sA",strtotime($old_date." -".$dur->duration." hour"));
			$new_date = strtotime($newdate);

			/*$offset=5.5*60*60; //converting 5 hours to seconds.
  			$dateFormat="Y-m-d h:i:sA";
  			$now_date=gmdate($dateFormat, time()+$offset);
  			$now = strtotime($now_date);*/
  			//$canceltime = $data['offset']/(1000);
            $new_time = date('H:i',$data['offset']);
            $new_time = explode(':',$new_time);
	        $nowin_server = date("Y-m-d TH:i:s");
	        if($data['offset'] > 0){
                $nowin_server_addoffset = date('Y-m-d H:i:s',strtotime('+'.$new_time[0].' hour +'.$new_time[1].' minutes',strtotime($nowin_server)));
	        }else{
	            $nowin_server_addoffset = date('Y-m-d H:i:s',strtotime('-'.$new_time[0].' hour -'.$new_time[1].' minutes',strtotime($nowin_server)));
	        }

	        $nowin_server_addoffset = strtotime($nowin_server_addoffset);
			$this->db->select('name,specialization');
	        $doctr_data = $this->db->get_where('tbl_doctors',array('id'=>$query['doctor_id']))->row_array();
			$special = $this->db->get_where('tbl_specialization',array('id'=>$doctr_data['specialization']))->row();
			$msg = "Your booking for doctor ".$doctr_data['name']." at time ".$query['time']."is Cancelled";
			$msg2 = "Your booking for doctor ".$doctr_data['name']." at time ".$query['time']." is confirmed";
			$conslt_time =  date('Y-m-d h:i:s');
			$conslt_time = strtotime($conslt_time);
			if($nowin_server_addoffset < $new_date){
				$this->db->update('tbl_booking',array('booking_status'=>'4'),array('id'=>$data['booking_id']));
				$this->db->insert('tbl_patient_notification',array('patient_id'=>$query['patient_id'],'type'=>'3','message'=>$msg,'time'=>$conslt_time,'booking_id'=>$query['id'],'read_status'=>'0'));
				$patient_insert_id = $this->db->insert_id();
				$fcm_user = $this->db->get_where('tbl_authtoken',array('userid'=>$query['patient_id']))->row();
				$new['id'] = $patient_insert_id;
				$new['type'] = "Cancel Consultation";
				$new['booking_id'] = $query['id'];
				$new['booking_date'] = $query['date'];
				$new['doctor_id'] = $query['doctor_id'];
				$new['doctor_name'] = $doctr_data['name'];
				$new['doctor_specialization'] = $special->specialization_name;
				$new['message'] = $msg;
				$new['time'] = $conslt_time;
				$new['to'] =$fcm_user->fcm_token;
				$user_type = '1';
				$push = $this->push_sent($new,$user_type);
				
				$ress = $this->db->get_where('tbl_booking',array('doctor_id'=>$query['doctor_id'],'clinic_id'=>$query['clinic_id'],'date'=>$query['date'],'time'=>$query['time'],'booking_status'=>'0'))->row_array();
				if($ress){
					$this->db->update('tbl_booking',array('booking_status'=>'1'),array('id'=>$ress['id']));
					$this->db->insert('tbl_patient_notification',array('patient_id'=>$ress['patient_id'],'type'=>'0','message'=>$msg2,'time'=>$conslt_time,'booking_id'=>$query['id'],'read_status'=>'0'));
					$patient_insert_id = $this->db->insert_id();
					$fcm_user = $this->db->get_where('tbl_authtoken',array('userid'=>$ress['patient_id']))->row();
					$new['id'] = $patient_insert_id;
					$new['type'] = "Waiting List";
					$new['booking_id'] = $query['id'];
					$new['booking_date'] = $query['date'];
					$new['doctor_id'] = $query['doctor_id'];
					$new['doctor_name'] = $doctr_data['name'];
					$new['doctor_specialization'] = $special->specialization_name;
					$new['message'] = $msg2;
					$new['time'] = $conslt_time;
					$new['to'] =$fcm_user->fcm_token;
					$user_type = '1';
					$push = $this->push_sent($new,$user_type);
					
					$msg3 = "You have a new booking on  ".date('jS F Y',$query['date'])." at ".date('h:i A',$query['time_start']);
					$this->db->insert('tbl_doctor_notifications',array('doctor_id'=>$query['doctor_id'],'type'=>'2','message'=>$msg3,'time'=>$conslt_time,'read_status'=>'0'));
					$doctor_insert_id = $this->db->insert_id();
					$fcm_doctor = $this->db->get_where('tbl_authtoken_doctors',array('doctor_id'=>$query['doctor_id']))->row();
					$news['id'] = $doctor_insert_id;
					$news['type'] = "New Consultation";
					$news['message'] =$msg3;
					$news['read_status'] = false;
					$news['to'] = $fcm_doctor->fcm_token;
					$doctor_type = '2';
					$doctor_push = $this->push_sent($news,$doctor_type);
				}
				if($query['visit_type'] == '0'){
					$doctor_wallet = $this->db->get_where('tbl_wallet_details',array('doctor_id'=>$query['doctor_id']))->row();
					$earn = $query['total_sum'] - (($query['total_sum'] * $query['ipok_fee'])/100);

					if($doctor_wallet){
						$future_earn = decrypt_data($doctor_wallet->future_earn) - $earn;
						$total = decrypt_data($doctor_wallet->total_earn) - $earn;
						$this->db->update('tbl_wallet_details',array('future_earn'=>encrypt_data($future_earn),'total_earn'=>encrypt_data($total)),array('doctor_id'=>$query['doctor_id']));
					}
				}
	            $res = array("status"=>"success");
	        }else{
	        	$res = array("status"=>"failed","message"=>"Sorry Your booking is not cancelled as per the cancelation policy");
	        }

		}else{
			$res = array("status"=>"failed",'message'=>'Booking Id doesnot exist');
		}
		return $res;
	}

//.................get promocode hospital list

	public function get_promocode_hospital_list($id,$lat,$lng){
		$query = $this->db->get_where('tbl_promocode',array('id'=>$id))->row();
		if($query){
			$doctors = explode(',',$query->doctor_id);
			$new_array = array();
			foreach ($doctors as $key => $value) {
				$this->db->select("tbl_doctors.name as doctor_name,
					tbl_doctors.price as fee,
					tbl_doctors.id as doctor_id,
					tbl_doctors.online_status as status,tbl_clinic_doctors.clinic_id,
					tbl_doctors.profile_pic as doctor_image,
					tbl_specialization.specialization_name as doctor_speciality,
					ROUND(( 6371 * acos( cos( radians({$lat}) ) * cos( radians( `tbl_clinic`.`location_lattitude` ) ) * cos( radians( `tbl_clinic`.`location_longitude` ) - radians({$lng}) ) + sin( radians({$lat}) ) * sin( radians( `tbl_clinic`.`location_lattitude` ) ) ) )) AS distance");
				$this->db->from("tbl_doctors");

				$this->db->join('tbl_clinic_doctors', 'tbl_doctors.id = tbl_clinic_doctors.doctor_id','INNER');
				$this->db->join('tbl_clinic', 'tbl_clinic_doctors.clinic_id = tbl_clinic.id','INNER');
				$this->db->join("tbl_specialization","tbl_doctors.specialization = tbl_specialization.id","LEFT");
				$this->db->where('tbl_doctors.id',$value);
				$res = $this->db->get()->result();
		        foreach ($res as $key => $values) {
		        	//$res[$key]->fee = decrypt_data($values->fee);
		        	$new_array[] = $values;
		        }
			$result = array("status"=>"success","data"=>$new_array);
			}
		}else{
			$result = array("status"=>"failed","msg"=>"No Promocode");
		}
		return $result;
	}

//..................set push status

	public function set_push_status($userid,$status){
		if($this->db->update('tbl_registration',array('push_notification'=>$status),array('id'=>$userid))){
			$res = array('status'=>'success');
		}else{
			$res = array('status'=>'failed');
		}
		return $res;
	}

//.....................get push status

	public function get_push_status($userid){
		$this->db->select('push_notification');
		$res = $this->db->get_where('tbl_registration',array('id'=>$userid))->row();
		if($res){
			$res = array('status'=>'success','data'=>array('status'=>$res->push_notification));
		}else{
			$res = array('status'=>'failed');
		}
		return $res;
	}

		public function set_push_status_doctor($doctorid,$status){
		if($this->db->update('tbl_doctors',array('push_notification'=>$status),array('id'=>$doctorid))){
			$res = array('status'=>'success');
		}else{
			$res = array('status'=>'failed');
		}
		return $res;
	}

//.....................get push status

	public function get_push_status_doctor($doctorid){
		$this->db->select('push_notification');
		$res = $this->db->get_where('tbl_doctors',array('id'=>$doctorid))->row();
		if($res){
			if($res->push_notification == '0'){
				$status = true;
			}else{
				$status = false;
			}
			$res = array('status'=>'success','data'=>array('notification_status'=>$status));
		}else{
			$res = array('status'=>'failed');
		}
		return $res;
	}

//......................insert app feedback

	public function insert_app_feedback($data){
		//print_r($data);exit();
		if($this->db->insert('tbl_app_feedback',$data)){
			$res = array('status'=>'success');
		}else{
			$res = array('status'=>'failed');
		}
		return $res;
	}

//....................... get faqs

	public function get_faqs($start,$per_page){
		$this->db->select('id,faq_title,faq_description');
		$this->db->where('faq_for','0');
		$this->db->limit($per_page,$start);
		$result = $this->db->get('tbl_faq')->result();
		if($result){
			return $result;
		}else{
			return false;
		}
		
	}

	public function get_doctor_faq_list($start,$per_page){
		$this->db->select('id,faq_title,faq_description');
		$this->db->where('faq_for','1');
		$this->db->limit($per_page,$start);
		$result = $this->db->get('tbl_faq')->result();
		if($result){
			return $result;
		}else{
			return false;
		}
		
	}

//...........................more services

	public function more_service(){
		$query = $this->db->get('tbl_charity')->result();
		if(count($query) > 0){
			$res = $res = array('status'=>'success','data'=>array('more_service'=>$query));
		}else{
			$res = array('status'=>'failed');
		}
		return $res;
	}

//..................... donation hospital list

	public function donation_hospital_list($id){
		$this->db->select('tbl_clinic.name as clinic_name,tbl_clinic.id as clinic_id,tbl_charity_service.amount,tbl_clinic.profile_photo as clinic_photo');
		$this->db->join('tbl_clinic','tbl_clinic.id = tbl_charity_service.clinic_id');
		$query = $this->db->get_where('tbl_charity_service',array('tbl_charity_service.charity_id'=>$id))->result();
		//print_r($query);exit();
		if(count($query) > 0){
			foreach ($query as $key => $value) {
				$amount = explode(',',$value->amount);
				for($a = 0; $a < count($amount); $a++) {
				    for($b = 0; $b < count($amount)-1; $b++){
				        if($amount[$b] > $amount[$b+1]) {
				            $temp = $amount[$b+1];
				            $amount[$b+1]=$amount[$b];
				            $amount[$b]=$temp;
				        }       
				    }
				}
				unset($query[$key]->amount);
				$value->donation_amounts = $amount;
				
				$this->db->where('clinic_id',$value->clinic_id);
				$clinic_result = $this->db->get('tbl_clinic_specialization')->result();
				if(count($clinic_result) > 0){
					$new_aray = array(); 
					foreach ($clinic_result as $key => $value_clinic) {
						$this->db->where('id',$value_clinic->specialization_id);
						$row = $this->db->get('tbl_specialization')->row();
						$new_aray[] = $row->specialization_name;
					}
					$specality = implode(',',$new_aray);
				}else{
					$specality = "";
				}

				$value->clinic_specilaity = $specality;

			}
			
			$res = $res = array('status'=>'success','data'=>array('hospital_list'=>$query));
		}else{
			$res = array('status'=>'failed');
		}
		return $res;
	}

//.........................edit dependent data

	public function edit_dependent($data,$id){
		if($this->db->update('tbl_patient_dependent',array('dependent_name'=>$data['dependent_name'],'relation'=>$data['dependent_relation'],'dob'=>$data['dependent_age'],'image'=>$data['image'],'cpf'=>$data['dependent_cpf']),array('id'=>$data['dependent_id']))){

			$result = $this->db->get_where('tbl_patient_dependent',array('patient_id'=>$id))->result();
			if(count($result) >0 ){
				return $result;
			}else{
				return false;
			}
		}
	}

// ........................add save card

	public function save_card($data){
		//print_r($data);exit();
		if($this->db->insert('tbl_card_details',$data)){
			$res = $res = array('status'=>'success');
		}else{
			$res = array('status'=>'failed');
		}
		return $res;
	}

//...........................get save card list

	public function get_saved_card_list($id){
		$query = $this->db->get_where('tbl_card_details',array('user_id'=>$id))->result_array();
		if(count($query) > 0){
			$new = array();
			foreach ($query as $key => $value) {
				$value['validity'] = decrypt_data($value['card_expiry_month']).'/'.decrypt_data($value['card_expiry_year']);
				$new[$key]['card_id'] = $value['id'];
				$new[$key]['card_holder_name'] = decrypt_data($value['card_holder_name']);
				$new[$key]['card_validity'] = $value['validity'];
				$new[$key]['card_number'] = decrypt_data($value['card_number']);
				$new[$key]['second_name'] = decrypt_data($value['second_name']);

			}
			$res = array('status'=>'success','data'=>array('card_list'=>$new));
		}else{
			$res = array('status'=>'failed','data'=>array('card_list'=>[]));
		}
		return $res;
	}
	
	//..........................edit Save card

	public function edit_save_card($data){
		$id = $data['card_id'];
		unset($data['card_id']);
		if($this->db->update('tbl_card_details',$data,array('id'=>$id))){
			return true;	
		}else{
			return false;
		}
	}

//......................... get medical records

	public function get_medical_record($id){
		$query = $this->db->get_where('tbl_booking',array('id'=>$id))->row_array();
		if($query){
			if($query['medical_record_id'] != '0'){
				$this->db->select('tbl_doctors.id as doctor_id,tbl_doctors.name as doctor_name,tbl_doctors.profile_pic as doctor_profile_photo,tbl_doctors.price as consultation_fee,tbl_doctors.consultation_duration,tbl_specialization.specialization_name as doctor_speciality,tbl_booking.date,tbl_booking.total_sum as total,tbl_medical_records.*,tbl_registration.profile_photo');
				$this->db->join('tbl_doctors','tbl_doctors.id = tbl_booking.doctor_id');
				$this->db->join('tbl_specialization','tbl_specialization.id = tbl_doctors.specialization');
				$this->db->join('tbl_medical_records','tbl_medical_records.id = tbl_booking.medical_record_id');
				$this->db->join('tbl_registration','tbl_registration.id = tbl_booking.patient_id');
				$this->db->where('tbl_booking.id',$id);
				$result = $this->db->get('tbl_booking')->row_array();
				//echo"<pre>";print_r($result);echo"</pre>";
				if($result){
					//$result['consultation_fee'] = decrypt_data($result['consultation_fee']);
					$fee = $this->db->get('settings')->row();
 					$result['review'] = decrypt_data($result['patient_review']);
 					unset($result['patient_review']);

                    $actual = ($result['consultation_fee'] * $fee->ipok_fee)/100 ;
					//$result['tax'] = $actual; //Get in integer type since actual is in integer format
					$result['tax'] = (string)$actual;// Get in string type

					$result['anamnese'] = decrypt_data($result['main_complaint']);
					unset($result['main_complaint']);

					$result['anamnese_content'] = decrypt_data($result['description']);
					unset($result['description']);
					
					$let  = json_decode(decrypt_data($result['letters']));
					if($let == ''){
						$result['Letter_and_certificates'] = '';
					}else{
						$result['Letter_and_certificates'] = $let->certificate;
						unset($result['letters']);
					}
					if($result['other_observations']){
						$result['other_observation'] = decrypt_data($result['other_observations']);
						unset($result['other_observations']);
					}else{
						$result['other_observation'] = '';
					}

                    $ill = json_decode(decrypt_data($result['diseases']));
                  //  print_r($ill);echo"<br>";
                    if($ill == ''){
                    	$new = [];
                    }else{
						$new = array();
						$news = array();
						$i=0;
						foreach ($ill->anamnese as $key => $value) {
							if($key != 'others'){
								//print_r($key); echo" - "; print_r($value);echo"<br>";
								$new[$i]['name'] = $key;
								$new[$i]['cause'] = $value;
							}else{
								$news['name'] = $key;
								$news['cause'] = $value;
							}
							$i++;
						}
						//print_r($news);echo"<br>";exit();
						 $result['illness'] = $new;
					   
						if($news['cause'] != ''){
							$others = $news;
						}else{
							$others = [];
						}
						$result['is_curable'] = $others;
					}
                    unset($result['diseases']);
 					$med = array();
                    $prescrb = json_decode(decrypt_data($result['prescribtions']));
                    if($prescrb == ''){
                    	$med = [];
                    }else{
						foreach ($prescrb as $key => $value) {
							$med[$key]['medicine_name'] = $value->name;
							$med[$key]['about_medicine'] = $value->procedure;
							$med[$key]['medicine_quantity'] = $value->quantity;
						}
						$result['prescription'] = $med;
					}
                    unset($result['prescribtions']);

                    $examss = array();
                    $exam = json_decode(decrypt_data($result['exams']));

                    if($exam == ''){
                    	$examss = [];
                    }else{
						foreach ($exam as $key => $value) {
							$examss[$key]['test_name'] = $value->procedure;
							$examss[$key]['test_description'] = $value->observation;
						}
						$result['medical_test'] = $examss;
					}
                    unset($result['exams']);
                    $bud = array();
                    $budget = json_decode(decrypt_data($result['budget']));
                    if($budget == ''){
                    	$budget = [];
                    }else{
						foreach ($budget as $key => $value) {
							$bud[$key]['service_name'] = $value->procedure;
							$bud[$key]['service_charge'] = $value->amount;
						}
						$result['services'] = $bud;
					}
                    unset($result['budget']);
                    //echo"<pre>";print_r(json_decode($result['images']));echo "</pre>";exit();

                    $images = json_decode($result['images']);
                    if($images == ''){
                    	$images = [];
                    }else{
						$result['photos'] = $images;
					}
                    unset($result['images']);
                    unset($result['booking_id']);
                   // unset($result['id']);
					//echo "<pre>";print_r($result);echo"</pre>";exit();
                    $res = array('status'=>'success','data'=>$result);
				}
			}else{
				$res = array('status'=>'failed','msg'=>'No Medical Record Exist for this Id');
			}
		}else{
			$res = array('status'=>'failed','msg'=>'Booking Id Doesnot Exist');
		}
		return $res;
	}
	
	
	public function set_recent_chat($data){
		$query = $this->db->get_where('tbl_recent_chats',array('chat_id'=>$data['chat_list_id']))->row();
		$data['chat_id'] = $data['chat_list_id'];
		if(isset($data['message']) &&  strlen(trim($data['message']," ")) > 0){
			$data['msg'] = $data['message'];
		}else{
			$data['msg'] = '';
		}
		unset($data['chat_list_id']);
		unset($data['message']);
		if($query){
			if($this->db->update('tbl_recent_chats',$data,array('chat_id'=>$data['chat_id']))){
				return true;
			}else{
				return false;
			}
		}else{
			if($this->db->insert('tbl_recent_chats',$data)){
				return true;
			}else{
				return false;
			}
		}
	}
	
	public function chat_file_upload($data,$url){
		$query = $this->db->get_where('tbl_recent_chats',array('chat_id'=>$data['chat_list_id']))->row();
		if($query){
			if($data['type'] == 0){
				if($this->db->update('tbl_recent_chats',array('photo_url'=>$url),array('chat_id'=>$data['chat_list_id']))){
					$result = array('status'=>'success');
				}else{
					$result = array('status'=>'failed','message'=>'Sorry Something went wrong.. Try again later');
				}
			}else{
				if($this->db->update('tbl_recent_chats',array('video_url'=>$url),array('chat_id'=>$data['chat_list_id']))){
					$result = array('status'=>'success');
				}else{
					$result = array('status'=>'failed','message'=>'Sorry Something went wrong.. Try again later');
				}
			}
		}else{
			$result = array('status'=>'failed','message'=>'Invalid Chat List Id');
		}
		return $result;
	}


/********************************************************************************************/
/********************************************************************************************/
/********************************************************************************************/

/****************************************MEDICOS APP*****************************************/


//....................configure consultation by doctor

	public function configure_consultation($data,$doctor_id){
		//print_r($data);exit();
		$doc_query = $this->db->get_where('tbl_doctors',array('id'=>$doctor_id));

		if($data['is_home_consultation_available']){
			$data['home_consultation_available'] = 1;
		}else{
			$data['home_consultation_available'] = 0;
		}

		if($data['is_return_consultation_available']){
			$data['return_consultation_available'] = 1;
		}else{
			$data['return_consultation_available'] = 0;
		}

		if(isset($data['return_consultation_time_period'])){
			$data['timeperiod'] = $data['return_consultation_time_period'];
		}else{
			$data['timeperiod'] = 0;
		}
		//echo "<pre>";print_r($data);exit();
		if($doc_query->num_rows() > 0){
			$this->db->update('tbl_doctors',array('consultation_duration'=>$data['consultation_duration'],'price'=>$data['consultation_fee'],'	domiciliary_status'=>$data['home_consultation_available'],'accept_return'=>$data['return_consultation_available'],'return_timeperiod'=>$data['timeperiod']),array('id'=>$doctor_id));
			$res = $this->db->get_where("tbl_doctors",array("id"=>$doctor_id))->row_array();
			if($res['accept_return'] == '1'){
				$res['accept_return'] = true;
			}else{
				$res['accept_return'] = false;				
			}

			if($res['domiciliary_status'] == '1'){
				$res['domiciliary_status'] = true;
			}else{
				$res['domiciliary_status'] = false;				
			}
			//echo $this->db->last_query();exit();
			$return_array = array('status'=>'success','data'=>array('doctor_id'=>$doctor_id,'is_return_consultation_available'=>$res['accept_return'],'is_home_consultation_available'=>$res['domiciliary_status'],'consultation_price'=>$res['price'],'consultation_duration'=>$res['consultation_duration'],'return_consultation_time_period'=>$res['return_timeperiod']));
			//print_r($return_array);exit();

		}else{
			$return_array = array('status'=>'failed','message'=>'Doctor Id Doesnot Exist');
		}
		return $return_array;
	}

//....................set doctor vaction

	public function set_doctor_vacation($data,$doctor_id){
		$data['doctor_id'] = $doctor_id;
		if($this->db->insert('tbl_doctor_leave',$data)){
			return true;
		}
	}

//....................get doctor agenda

	public function get_doctor_agenda($clinic_id,$doctor_id){
		$query = $this->db->get_where('tbl_consultation',array('clinic_id'=>$clinic_id,'doctor_id'=>$doctor_id))->row();
		//echo $this->db->last_query();
		if($query){
			$doc_res = $this->db->get_where('tbl_doctors',array('id'=>$doctor_id))->row();
			
			if($query->date != '""'){
				$date = json_decode($query->date);
				$primary = array();
				foreach ($date as $key => $value) {
					$dayid = $this->get_dayid($value->day);
					$primary[$key]['id'] = $dayid; 
					$primary[$key]['start_time'] = strtotime($this->string->default_date.$value->time->start); 
					$primary[$key]['end_time'] = strtotime($this->string->default_date.$value->time->end); 
					$primary[$key]['break_start_time'] = strtotime($this->string->default_date.$value->time->break_from); 
					$primary[$key]['break_end_time'] = strtotime($this->string->default_date.$value->time->break_to); 
				}
				//echo"<pre>";print_r($primary);echo"</pre>";exit();
			}else{
				$primary = [];
			}
			if($query->date_secondary != '""'){
				$date_secondary = json_decode($query->date_secondary);
				$secondary = array();
				foreach ($date_secondary as $key => $value) {
					$dayid = $this->get_dayid($value->day);
					$secondary[$key]['id'] = $dayid; 
					$secondary[$key]['start_time'] = strtotime($this->string->default_date.$value->time->start); 
					$secondary[$key]['end_time'] = strtotime($this->string->default_date.$value->time->end); 
					$secondary[$key]['break_start_time'] = strtotime($this->string->default_date.$value->time->break_from); 
					$secondary[$key]['break_end_time'] = strtotime($this->string->default_date.$value->time->break_to); 
				}
				//echo"<pre>";print_r($secondary);echo"</pre>";exit();
			}else{
				$secondary = [];
			}

			$vac = $this->db->get_where('tbl_doctor_leave',array('doctor_id'=>$doctor_id,'clinic_id'=>$clinic_id))->result();
			$vacation =array();
			foreach ($vac as $key => $value) {
				$vac_date = $value->id;
				$vacation[$key]['id'] = $dayid; 
				$vacation[$key]['start_time'] = $value->start_date; 
				$vacation[$key]['end_time'] = $value->end_date; 
			}
			//echo"<pre>";print_r($vacation);echo"</pre>";exit();
			if(decrypt_data($doc_res->domiciliary_status) == '1'){
				$home_status = true;
			}else{
				$home_status = false;
			}

			if($doc_res->accept_return == '1'){
				$accept_status = true;
			}else{
				$accept_status = false;
			}

			$data = array('clinic_id'=>$clinic_id,'consultation_duration'=>$doc_res->consultation_duration,'consultation_price'=>$doc_res->price,'is_home_consultation_available'=>$home_status,'is_return_consultation_available'=>$accept_status,'return_consultation_time_period'=>$doc_res->return_timeperiod,'activated_schedule'=>$query->active_schedule,'primary_schedule'=>$primary,'secondary_schedule'=>$secondary,'vacations'=>$vacation);
			$return_array = array('status'=>'success','data'=>$data);
		}else{
			$return_array = array('status'=>'failed','message'=>'No consultation for this doctor in this clinic');
		}
		return $return_array;
	}

	function get_dayid($day){
		if($day == 'sun'){$dayid = '0';}elseif ($day == 'mon') {$dayid = '1';}elseif ($day == 'tue') {$dayid = '2';}elseif ($day == 'wed') {$dayid = '3';}elseif ($day == 'thu') {$dayid = '4';}elseif ($day == 'fri') {$dayid = '5';}elseif ($day == 'sat') {$dayid = '6';}
		return $dayid;
	}

//....................set doctor primary agenda

	public function set_doctor_primary_agenda($data,$doctor_id,$type){
 		$this->db->select("*");
 		$this->db->from("tbl_consultation");
 		$this->db->where_in("tbl_consultation.doctor_id",$doctor_id);
 		$query = $this->db->get();
 		$result = $query->result_array();

        $this->db->select('id,consultation_duration');
 		$duration = $this->db->get_where('tbl_doctors',array('id'=>$doctor_id))->row_array();
 		if($duration != ''){
	 		$insert_array = array();
			$not_available_day = array();
			$insert_array_exist = array();
			$flag = 0;
			$nameday = array();
	 		if(!empty($result)){
	 			foreach ($data['schedules'] as $key_day => $value_day) {
	 				foreach ($result as $key => $value) {
	 					if($type == '0'){
	 						$decode_time = json_decode($value['date'],true);
	 					}else{
	 						$decode_time = json_decode($value['date_secondary'],true);
	 					}
						
						//echo"<pre>";print_r($decode_time);echo"</pre>";exit();
	 					if(!empty($decode_time)){
	 						$valueday = $this->get_dayname($value_day->id);
	 						foreach($decode_time as $db_k => $db_v) {
	 							if(($valueday == $db_v['day']) && (($data['clinic_id'] != $value['clinic_id']))){
									$starttime  = date('h:i',$value_day->start_time);
	 								$endtime  = date('h:i',$value_day->end_time);
	 								if((strtotime($this->string->default_date.$db_v['time']['start']) <=  strtotime($this->string->default_date.$starttime) &&  strtotime($this->string->default_date.$starttime) <= strtotime($this->string->default_date.$db_v['time']['end'])) || (strtotime($this->string->default_date.$db_v['time']['start']) <=  strtotime($this->string->default_date.$endtime) && strtotime($this->string->default_date.$endtime) <= strtotime($this->string->default_date.$db_v['time']['end'])) || ( strtotime($this->string->default_date.$starttime) <= strtotime($this->string->default_date.$db_v['time']['start']) && strtotime($this->string->default_date.$db_v['time']['start']) <= strtotime($this->string->default_date.$endtime) ) || (strtotime($this->string->default_date.$starttime) <= strtotime($this->string->default_date.$db_v['time']['end']) && strtotime($this->string->default_date.$db_v['time']['end']) <= strtotime($this->string->default_date.$endtime))){
	 									$flag = 1;
										$get_fullname_day =  $this->get_fulldayname($valueday);
										$nameday[] = $get_fullname_day;
										//print_r($nameday);exit();
	 								}
	 							}
	 						}
	 					}
	 				}
	 			}
				$namesss = implode(',',$nameday);
	 			if($flag == 0){
	 				foreach ($data['schedules'] as $key_day => $value_day) {
	 					if($value_day->break_start_time != ''){
							$break_from = date('H:i',$value_day->break_start_time);
						}
						else{
							$break_from = 'null';
						}
						
						if($value_day->break_end_time != ''){
							$break_to = date('H:i',$value_day->break_end_time);
						}
						else{
							$break_to = 'null';
						}

						$valueday = $this->get_dayname($value_day->id);
						$res = array('day'=>$valueday,
									'time'=>array(
										'start'=>date('H:i',$value_day->start_time),
										'end'=>date('H:i',$value_day->end_time),
										'interval'=>$duration['consultation_duration'],
										'break_from'=>$break_from,
										'break_to'=>$break_to
										));
						array_push($insert_array_exist,$res);
	 				}
					//print_r($insert_array_exist);exit();
	 				$newData = json_encode($insert_array_exist);
	 				if($type == '0'){
	 					$this->db->update('tbl_consultation',array('date'=>$newData,'active_schedule'=>$data['activated_schedule']),array('doctor_id'=>$doctor_id,'clinic_id'=>$data['clinic_id']));
	 				}else{
	 					$this->db->update('tbl_consultation',array('date_secondary'=>$newData,'active_schedule'=>$data['activated_schedule']),array('doctor_id'=>$doctor_id,'clinic_id'=>$data['clinic_id']));
	 				}
	 		    		
					$return_array = array('status'=>'success','message'=>'Doctor assigned Successfully');
	 			}else{
	 				$return_array = array('status'=>'failed','message'=>"Schedule time for "."$namesss"." is not available");
	 			}	
	 		}else{
	 			$return_array = array('status'=>'failed','message'=>'Schedules are Corrupted');
	 		}
 		}else{
 			$return_array = array('status'=>'failed','message'=>'Doctor Id doesnot exist');
 		}
 		//print_r($return_array);exit();
 		return $return_array;
	}

	function get_dayname($id){
		if($id == '0'){$dayid = 'sun';}elseif ($id == '1') {$dayid = 'mon';}elseif ($id == '2') {$dayid = 'tue';}elseif ($id == '3') {$dayid = 'wed';}elseif ($id == '4') {$dayid = 'thu';}elseif ($id == '5') {$dayid = 'fri';}elseif ($id == '6') {$dayid = 'sat';}
		return $dayid;
	}
	
	
	function get_fulldayname($day){
		if($day == 'sun'){$dayname = 'Sunday';}elseif ($day == 'mon') {$dayname = 'Monday';}elseif ($day == 'tue') {$dayname = 'Tuesday';}elseif ($day == 'wed') {$dayname = 'Wednesday';}elseif ($day == 'thu') {$dayname = 'Thursday';}elseif ($day == 'fri') {$dayname = 'Friday';}elseif ($day == 'sat') {$dayname = 'Saturday';}
		return $dayname;
	}

	public function get_clinic_list($id){
		$this->db->select('tbl_clinic.id,tbl_clinic.name,tbl_clinic.email,tbl_clinic.profile_photo,tbl_clinic.location_lattitude,tbl_clinic.location_longitude,tbl_clinic.street_address,tbl_clinic.locality,tbl_clinic.number,tbl_clinic.complement');
		$this->db->join('tbl_clinic','tbl_clinic_doctors.clinic_id = tbl_clinic.id');
		$this->db->where('tbl_clinic_doctors.doctor_id',$id);
		$this->db->order_by('tbl_clinic.id','ASC');
		$query = $this->db->get('tbl_clinic_doctors')->result_array();
		//print_r($query);exit();
		if(in_array(0, array_column($query, 'id')) || in_array('Default', array_column($query, 'name'))) { //
		    array_splice($query, 0, 1);
		}else{
			$this->db->insert('tbl_clinic',array('name'=>'Default','username'=>'default','password'=>md5('default')));
			$last = $this->db->insert_id();
			if($last != '0'){
				$this->db->update('tbl_clinic',array('id'=>'0'),array('id'=>$last));
			}
		}
		
		

		$this->db->select('tbl_clinic.id,tbl_clinic.name,tbl_clinic.email,tbl_clinic.profile_photo,tbl_doctors.default_latitude as location_lattitude,tbl_doctors.default_longitude as location_longitude,tbl_doctors.street_address,tbl_doctors.locality,tbl_doctors.number,tbl_doctors.complement');
		$this->db->from('tbl_clinic_doctors');
		$this->db->join('tbl_clinic','tbl_clinic_doctors.clinic_id = tbl_clinic.id');
		$this->db->join('tbl_doctors','tbl_clinic_doctors.doctor_id = tbl_doctors.id');
		$this->db->where('tbl_clinic_doctors.clinic_id','0');
		$this->db->where('tbl_clinic_doctors.doctor_id',$id);
		$query_default = $this->db->get()->result_array();
		
		foreach ($query_default as $key => $value) {
			$query_default[$key]['street_address'] = decrypt_data($value['street_address']);
			$query_default[$key]['locality'] = decrypt_data($value['locality']);
			$query_default[$key]['number'] = decrypt_data($value['number']);
			$query_default[$key]['complement'] = decrypt_data($value['complement']);
		}
		$new_query = array_merge($query_default,$query);

		//echo"<pre>";print_r($new_query);exit();
		if(count($new_query) > 0){
			foreach ($new_query as $key => $value) {
				$location = $value['street_address'].','.$value['locality'].','.$value['number'].','.$value['complement'];
				$new[$key]['id'] = $value['id'];
				$new[$key]['name'] = $value['name'];
				$new[$key]['email'] = $value['email'];
				$new[$key]['photo'] = $value['profile_photo'];
				$new[$key]['location'] = $location;
				$new[$key]['latitude'] = $value['location_lattitude'];
				$new[$key]['longitude'] = $value['location_longitude'];
			}
			$return_array = array('status'=>'success','data'=>array('clinics'=>$new));
		}else{
			$return_array = array('status'=>'failed','data'=>array('clinics'=>[]));
		}
		return $return_array;
	}

	public function get_doctor_review_list($id,$start,$per_page){
		$this->db->select('tbl_review.review_id as id,tbl_registration.name as patient_name,tbl_registration.profile_photo as patient_profile_photo,tbl_registration.id as patient_id,tbl_review.date,tbl_review.review');
		$this->db->from('tbl_review');
		$this->db->join('tbl_registration','tbl_registration.id = tbl_review.reviewer_id');
		$this->db->where('tbl_review.doctor_id',$id);
		$this->db->limit($per_page,$start);
		$result = $this->db->get()->result();
		if(count($result) > 0){
			foreach ($result as $key => $value) {
				$result[$key]->patient_name = decrypt_data($value->patient_name);
			}
			return $result;
		}else{
			return false;
		}
	}

	public function get_patient_list($id,$start,$per_page){
		$this->db->select("DISTINCT(tbl_registration.id),tbl_registration.name,tbl_registration.occupation,tbl_registration.profile_photo,CAST(AES_DECRYPT(tbl_registration.dob,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dob,TIMESTAMPDIFF(YEAR, FROM_UNIXTIME(CAST(AES_DECRYPT(`tbl_registration`.`dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR),'%Y-%m-%d '), CURDATE()) as age");
		// $this->db->select("DISTINCT(tbl_registration.id),tbl_registration.name,tbl_registration.occupation,tbl_registration.profile_photo,tbl_registration.dob");
		$this->db->from('tbl_booking');
		$this->db->join('tbl_registration','tbl_registration.id = tbl_booking.patient_id');
		$this->db->where('tbl_booking.doctor_id',$id);
		$this->db->where("(tbl_booking.booking_status != '0' or tbl_booking.booking_status != '4')");
		$this->db->limit($per_page,$start);
		$this->db->order_by('tbl_registration.name','ASC');
		$result = $this->db->get()->result();
		/*if(count($result) > 0){
			foreach ($result as $key => $value) {
				//$dob=date('Y-m-d',$value->dob);
		    	$diff = (date('Y') - date('Y',$value->dob));
		    	$value->age = $diff;
			}
		}*/
		if(count($result) > 0){
			 foreach ($result as $key => $value) {
			// 	//$dob=date('Y-m-d',$value->dob);
		 //    	$diff = (date('Y') - date('Y',decrypt_data($value->dob)));
		 //    	//$value->age = $diff;
		 //    	$result[$key]->age = $diff;
		    	$result[$key]->name = decrypt_data($value->name);
		 //    	$result[$key]->dob = decrypt_data($value->dob);
			 }
			return $result;
		}else{
			return false;
		}
	}

	public function get_patient_anniversary_list($id,$start,$per_page){
		$O_month = date('m');
	 	$T_month = date('m', strtotime("last day of next month"));
	    if($T_month == "12") {
		  $TH_month = "01";
	    }else if($T_month <= "11") {
		  $TH_month = $T_month + "01";
	    }
	    if(strlen($TH_month) == 1) {
		  $TH_month="0".$TH_month;
	    }

		// $this->db->select("DISTINCT(tbl_registration.id),tbl_registration.name,tbl_registration.profile_photo,tbl_registration.dob,TIMESTAMPDIFF(YEAR, FROM_UNIXTIME(CAST(AES_DECRYPT(`tbl_registration`.`dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR),'%Y-%m-%d '), CURDATE()) as age");
		// $this->db->from('tbl_booking');
		// $this->db->join('tbl_registration','tbl_registration.id = tbl_booking.patient_id');
		// $this->db->where("tbl_booking.booking_status",'3');
		// $this->db->where('tbl_booking.doctor_id',$id);
		// $this->db->where("(DATE_FORMAT(FROM_UNIXTIME(CAST(AES_DECRYPT(`tbl_registration`.`dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR)), '%Y-%m-%e') like '%-$O_month-%' or DATE_FORMAT(FROM_UNIXTIME(CAST(AES_DECRYPT(`tbl_registration`.`dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR)), '%Y-%m-%e') like '%-$T_month-%' or DATE_FORMAT(FROM_UNIXTIME(CAST(AES_DECRYPT(`tbl_registration`.`dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR)), '%Y-%m-%e') like '%-$TH_month-%') ORDER BY DAYOFYEAR(DATE_FORMAT(FROM_UNIXTIME(CAST(AES_DECRYPT(`tbl_registration`.`dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR)), '%Y-%m-%e')) < DAYOFYEAR(CURDATE()) , DAYOFYEAR(DATE_FORMAT(FROM_UNIXTIME(CAST(AES_DECRYPT(`tbl_registration`.`dob`,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR)), '%Y-%m-%e'))");
		
		// $this->db->limit($per_page,$start);
		// $result = $this->db->get()->result();
		//echo $this->db->last_query();exit();

		$result = $this->db->query("SELECT DISTINCT(reg_id) as id, reg_name as name, CAST(AES_DECRYPT(`reg_dob`, 'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dob,reg_photo as profile_photo, TIMESTAMPDIFF(YEAR, FROM_UNIXTIME(CAST(AES_DECRYPT(`reg_dob`, 'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR), '%Y-%m-%d '), CURDATE()) as age FROM (select tbl_registration.id as reg_id, tbl_registration.name as reg_name, tbl_registration.dob as reg_dob, tbl_registration.profile_photo as reg_photo from `tbl_registration` JOIN `tbl_booking` ON `tbl_registration`.`id` = `tbl_booking`.`patient_id` WHERE `tbl_booking`.`booking_status` = '3' AND `tbl_booking`.`doctor_id` = '$id') temp WHERE (DATE_FORMAT(FROM_UNIXTIME(CAST(AES_DECRYPT(reg_dob,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR)), '%Y-%m-%e') like '%-$O_month-%' or DATE_FORMAT(FROM_UNIXTIME(CAST(AES_DECRYPT(reg_dob,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR)), '%Y-%m-%e') like '%-$T_month-%' or DATE_FORMAT(FROM_UNIXTIME(CAST(AES_DECRYPT(reg_dob,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR)), '%Y-%m-%e') like '%-$TH_month-%') ORDER BY DAYOFYEAR(DATE_FORMAT(FROM_UNIXTIME(CAST(AES_DECRYPT(reg_dob,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR)), '%Y-%m-%e')) < DAYOFYEAR(CURDATE()) , DAYOFYEAR(DATE_FORMAT(FROM_UNIXTIME(CAST(AES_DECRYPT(reg_dob,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR)), '%Y-%m-%e')) LIMIT 20")->result();

		if(count($result) > 0){
			return $result;
		}else{
			return false;
		}
		
	}

	public function get_patient_medical_record_list($doctorid,$start,$per_page,$patientid){
		$this->db->select("name,profile_photo,id,CAST(AES_DECRYPT(`tbl_registration`.`dob`, 'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dob");
		$this->db->where('id',$patientid);
		$pat_details = $this->db->get('tbl_registration')->row();
		$diff = (date('Y') - date('Y',$pat_details->dob));

		$this->db->where('doctor_id',$doctorid);
		$this->db->where('patient_id',$patientid);
		$this->db->where('booking_status','3');
		$this->db->limit($per_page,$start);
		$query = $this->db->get('tbl_booking')->result();

		$new = array();
		foreach ($query as $key => $value) {
			$new[$key]['id'] = $value->medical_record_id; 
			$new[$key]['date'] = $value->date; 
			$new[$key]['time_start'] = $value->time_start; 

		}
		//echo"<pre>";print_r($query);echo"</pre>";exit();
		if(count($query) > 0){

			$return_array = array('status'=>'success','data'=>array('patient_id'=>$pat_details->id,'patient_name'=>decrypt_data($pat_details->name),'patient_profile_photo'=>$pat_details->profile_photo,'patient_age'=>$diff),'medical'=>$new);
		}else{
			$return_array = array('status'=>'error','data'=>array('patient_id'=>$pat_details->id,'patient_name'=>decrypt_data($pat_details->name),'patient_profile_photo'=>$pat_details->profile_photo,'patient_age'=>$diff,'medical'=>[]),'medical'=>[]);
		}
		return $return_array;
	}

	public function get_doctor_upcoming_consultation_list($doctorid,$start,$per_page,$type){
		$this->db->select('tbl_booking.id,tbl_registration.id as patient_id,tbl_registration.name as patient_name,tbl_registration.profile_photo as patient_profile_photo,tbl_booking.date,tbl_booking.time_start');
		$this->db->from('tbl_booking');
		$this->db->join('tbl_registration','tbl_registration.id = tbl_booking.patient_id');
		$this->db->where('tbl_booking.doctor_id',$doctorid);
		$this->db->where('tbl_booking.booking_status','1');
		$this->db->where('tbl_booking.payment_status','1');
		if($type == '0'){
			$date = strtotime(date('Y-m-d h:i:s'));
			$this->db->where("tbl_booking.time_start > '".$date."'");
		}
		if($type == '1'){
			$date = strtotime(date('Y-m-d'));
			$this->db->where("tbl_booking.date = '".$date."'");
		}
		if($type == '2'){
			$date = strtotime(date('Y-m-d h:i:s'));
			$newdate = strtotime(date("Y-m-d",strtotime(date('Y-m-d')." +8day")));
			$this->db->where("tbl_booking.date >= '".$date."'");
			$this->db->where("tbl_booking.date < '".$newdate."'");
		}
		$this->db->order_by('tbl_booking.date','ASC');
		$reslt = $this->db->get()->result();
		//echo $this->db->last_query();exit();
		if(count($reslt) > 0){
			foreach ($reslt as $key => $value) {
				$reslt[$key]->patient_name = decrypt_data($value->patient_name);
			}
			return $reslt;
		}else{
			return false;
		}
		
	}

	public function get_patient_medical_record_details($data){
		$this->db->select("tbl_registration.id as patient_id,tbl_registration.name as patient_name,tbl_registration.occupation as patient_occupation,tbl_registration.profile_photo as patient_profile_photo,CAST(AES_DECRYPT(`tbl_registration`.`dob`, 'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dob,tbl_booking.total_sum,tbl_booking.date,tbl_doctors.consultation_duration,tbl_doctors.price");
		$this->db->from('tbl_booking');
		$this->db->join('tbl_registration','tbl_booking.patient_id = tbl_registration.id');
		$this->db->join('tbl_doctors','tbl_booking.doctor_id = tbl_doctors.id');
		$this->db->where('tbl_registration.id',$data['patient_id']);
		$result = $this->db->get()->row();
		$result->patient_name = decrypt_data($result->patient_name);

		$settings = $this->db->get('settings')->row();

		$this->db->where('id',$data['medical_record_id']);
		$res = $this->db->get('tbl_medical_records')->row();
		//echo "<pre>";print_r($res);echo"</pre>";exit();
		if($res){
			$diff = (date('Y') - date('Y',$result->dob));
			$result->patient_age = $diff;
			unset($result->dob);
		

			$result->patient_review_id = $res->id;
			if(isset($res->patient_review)){
				$result->patient_review = decrypt_data($res->patient_review);
			}else{
				$result->patient_review = '';
			}
			$result->medical_record_id = $res->id;
			$result->medical_record_date = $result->date;
			$payment = array();
			$ipok_fee = ($result->price * $settings->ipok_fee)/100 ;
			$consult = $result->total_sum - $ipok_fee;
			$payment['consultation_duration'] = $result->consultation_duration;
			$payment['consultation_fee'] = (string)$consult;
			$payment['ipok_commission'] = (string)$ipok_fee;
			$payment['total'] = $result->total_sum;
			unset($result->total_sum);
			$result->payment_details = $payment;
			unset($result->consultation_duration);
			unset($result->price);
			unset($result->amount);

			$anamnese = array();
			$anamse_details = json_decode(decrypt_data($res->diseases));
			 //echo"<pre>";print_r($anamse_details);echo"</pre><br>";exit();
			if(isset($anamse_details)){
				foreach ($anamse_details->anamnese as $key => $value) {
				 	$ke = strtolower($key);
				 	$new[$ke] = $value;
				}
				unset($anamse_details->anamnese);
				$anamse_details->anamnese = (object)$new;
				$anamse_details->anamnese->principal_problem = decrypt_data($res->main_complaint);
				$anamse_details->anamnese->description =strip_tags(decrypt_data($res->description));
				if(isset($anamse_details->anamnese->others)){
		         	if(in_array('hepatitis',$anamse_details->anamnese->others)){
		         		 $anamse_details->anamnese->has_hepatitis= true;
		         	}else{
		         		$anamse_details->anamnese->has_hepatitis= false;
		         	}

		         	if(in_array('pregnancy',$anamse_details->anamnese->others)){
		         		 $anamse_details->anamnese->is_pregnant= true;
		         	}else{
		         		$anamse_details->anamnese->is_pregnant= false;
		         	}

		         	if(in_array('diabetis',$anamse_details->anamnese->others)){
		         		 $anamse_details->anamnese->has_diabetes= true;
		         	}else{
		         		$anamse_details->anamnese->has_diabetes= false;
		         	}

		         	if(in_array('healing_problems',$anamse_details->anamnese->others)){
		         		 $anamse_details->anamnese->has_healing_problems= true;
		         	}else{
		         		$anamse_details->anamnese->has_healing_problems= false;
		         	}
		         	unset($anamse_details->anamnese->others);
	         	}
	          	$result->anamnese = $anamse_details->anamnese;
          	}else{
          		$result->anamnese = [];
          	}
          	
          	$prescrib = json_decode(decrypt_data($res->prescribtions));
          	$med = array();
          	if(isset($prescrib)){
          		foreach ($prescrib as $key => $value) {
	          		$med_data = $this->db->get_where('tbl_medicine',array('medicine_name'=>$value->name,'medicine_dosage'=>$value->quantity))->row();
	            	$med[$key]['id'] = $med_data->id;
	            	$med[$key]['medicine_name'] = $value->name;
	            	$med[$key]['dosage'] = $value->procedure;
	        		$med[$key]['quantity'] = $value->quantity;
	            }
	          	$result->prescriptions = $med;
	          }else{
	          	$result->prescriptions = [];
	          }

          	$exams = json_decode(decrypt_data($res->exams));
          	$exam = array();
          	if(isset($exams)){
          		foreach ($exams as $key => $value) {
	            	$exam[$key]['exam'] = $value->procedure;
	            	$exam[$key]['observation'] = $value->observation;
	            }
	          	$result->exams = $exam;
	          }else{
	          	$result->exams = [];
	          }

          	$budgett = json_decode(decrypt_data($res->budget));
          	$budgt = array();
          	$budget=array();
          	if(isset($budgett)){
          		$sum = 0;
          		foreach ($budgett as $key => $value) {
	            	$budgt[$key]['item'] = $value->procedure;
	            	$budgt[$key]['quantity'] = $value->quantity;
	            	$budgt[$key]['amount'] = $value->amount;
	            	$sum = $sum + $value->amount;
	            }
	            $budget['total'] = $sum;
	            $budget['bill_items'] = $budgt;
	            $result->budget = $budget;
          	}else{
          		$result->budget = [];
          	}

            $medical = array();
			$medi = json_decode(decrypt_data($res->letters));
			if(isset($medi)){
				$medical[0]['title'] = '';
	            $medical[0]['certificate'] = strip_tags($medi->certificate);
	            $result->medical_certificates = $medical;
			}else{
				 $result->medical_certificates = [];
			}

            $photos = json_decode($res->images);
            if(isset($photos)){
            	$result->attached_images = $photos;
            }else{
            	$result->attached_images = [];
            }
            $result->other_observations = strip_tags(decrypt_data($res->other_observations));
			//echo "<pre>";print_r($result);echo"</pre>";exit();
			$return_array = array('status'=>'success','data'=>$result);

		}else{
			$return_array = array('status'=>'error','message'=>'Medical Record for this Id doesnot exist');
		}
		return $return_array;
	}

	public function get_doctor_notification_list($doctorid,$start,$per_page){

		//$this->db->select('id,type,message,read_status');
		//SELECT IIF(Obsolete = 'N' or InStock = 'Y', 1, 0) as Saleable, * FROM Product
		$this->db->select("read_status,id,type,message");
		$this->db->order_by('tbl_doctor_notifications.id','DESC');
		if($start!=0 || $per_page!=0){
			$this->db->limit($per_page,$start);
		}
		$result = $this->db->get_where('tbl_doctor_notifications',array('doctor_id'=>$doctorid))->result();
		// echo $this->db->last_query();
		if(count($result) > 0){
			return $result;
		}else{
			return false;
		}

	}

	public function set_doctor_notification_status($data){
		if($data['status'] == true){
			$status = '1';
		}else{
			$status = '0';
		}
		if($this->db->update('tbl_doctor_notifications',array('read_status'=>$status),array('id'=>$data['notification_id']))){
			return true;
		}else{
			return false;
		}
	}
	
	public function cancel_booking_doctor($id,$data){
		$query = $this->db->get_where('tbl_booking',array('id'=>$data['booking_id']))->row();
		$doctr_data = $this->db->get_where('tbl_doctors',array('id'=>$id))->row_array();
		$special = $this->db->get_where('tbl_specialization',array('id'=>$doctr_data['specialization']))->row();
		$conslt_time =  strtotime(date('Y-m-d h:i:s'));
		$msg = "Sorry, Your booking at time ".$query->time." is cancelled by ".$doctr_data['name'];
		if($query){
			if($query->doctor_id == $id){
				$this->db->update('tbl_booking',array('booking_status'=>'4'),array('id'=>$data['booking_id']));
				$this->db->insert('tbl_patient_notification',array('patient_id'=>$query->patient_id,'type'=>'3','message'=>$msg,'time'=>$conslt_time,'booking_id'=>$data['booking_id'],'read_status'=>'0'));
				$patient_insert_id = $this->db->insert_id();
				
				$fcm_user = $this->db->get_where('tbl_authtoken',array('userid'=>$query->patient_id))->row();
				$new['id'] = $patient_insert_id;
				$new['type'] = "Cancel Consultation";
				$new['booking_id'] = $query->id;
				$new['booking_date'] = $query->date;
				$new['doctor_id'] = $query->doctor_id;
				$new['doctor_name'] = $doctr_data['name'];
				$new['doctor_specialization'] = $special->specialization_name;
				$new['message'] = $msg;
				$new['time'] = $conslt_time;
				$new['to'] =$fcm_user->fcm_token;
				$user_type = '1';
				$push = $this->push_sent($new,$user_type);
				
				if($query->visit_type == '0'){
					$doctor_wallet = $this->db->get_where('tbl_wallet_details',array('doctor_id'=>$id))->row();
					$earn = $query->total_sum - (($query->total_sum * $query->ipok_fee)/100);

					if($doctor_wallet){
						$future_earn = decrypt_data($doctor_wallet->future_earn) - $earn;
						$total = decrypt_data($doctor_wallet->total_earn) - $earn;
						$this->db->update('tbl_wallet_details',array('future_earn'=>encrypt_data($future_earn),'total_earn'=>encrypt_data($total)),array('doctor_id'=>$id));
					}
				}
				$result = array('status'=>'success');
			}else{
				$result = array('status'=>'failed','message'=>'Invalid Doctor ');
			}
		}else{
			$result = array('status'=>'failed','message'=>'Invalid Booking Id ');
		}
		return $result;
	}

	
	public function get_doctor_consultation_configuration($doctor_id){
		$this->db->select('consultation_duration,price as consultation_price,domiciliary_status,accept_return,return_timeperiod as return_consultation_time_period');
		$query = $this->db->get_where('tbl_doctors',array('id'=>$doctor_id))->row();
		if($query){
			//$query->consultation_price = decrypt_data($query->consultation_price);
			//$query->domiciliary_status = decrypt_data($query->domiciliary_status);
			if($query->accept_return == '0'){
				$query->is_return_consultation_available = false;
			}else{
				$query->is_return_consultation_available = true;
			}

			if($query->domiciliary_status == '0'){
				$query->is_home_consultation_available = false;
			}else{
				$query->is_home_consultation_available = true;
			}

			unset($query->accept_return);
			unset($query->domiciliary_status);

			$result = array('status'=>'success','data'=>$query);
		}else{
			$result = array('status'=>'error','message'=>'Doctor Id doesnot Exist');
		}
		return $result;
	}
	
	public function get_doctor_notification_list_unread_count($doctor_id){
		$this->db->select("count(id) as count");
		$result = $this->db->get_where('tbl_doctor_notifications',array('doctor_id'=>$doctor_id,'read_status'=>'0'))->row();
		return $result;
	}
	
	public function notification_list_unread_count($user_id){
		$this->db->select("count(id) as count");
		$result = $this->db->get_where('tbl_patient_notification',array('patient_id'=>$user_id,'read_status'=>'0'))->row();
		return $result;
	}

	
	public function start_consultation_doctor($data){
		$query = $this->db->get_where('tbl_booking',array('id'=>$data['booking_id']))->row();
		if($query){
			$this->db->update('tbl_booking',array('booking_status'=>'2'),array('id'=>$data['booking_id']));
			$result = array('status'=>'success');
		}else{
			$result = array('status'=>'failed','message'=>'Invalid Booking Id');
		}
		return $result;
	}
	
	public function get_consultation_basic_data(){
		$this->db->select('id,complaint_name as problem');
		$main = $this->db->get('tbl_main_complaints')->result();
		$query = $this->db->get('tbl_major_problems')->result();
		$new =array();
		$new['main_problems'] = $main;
		foreach ($query as $key => $value) {
			if($value->id != '7'){
				$this->db->select('id,subproblem_name as problem');
				$res = $this->db->get_where('tbl_major_subproblems',array('problem_category_id'=>$value->id))->result();
			}else{
				$this->db->select('DISTINCT(medicine_name)');
				$med = $this->db->get('tbl_medicine')->result();
				$med_array = array();
				foreach ($med as $key => $values) {
					$med_array[] = $values->medicine_name;
				}

				//print_r($med_array);exit();
			}
			if($value->id == '1'){
				if(count($res)>0){
					$new['heart_problems'] =$res;
				}else{
					$new['heart_problems'] =[];
				} 
			}
			if($value->id == '2'){
				if(count($res)>0){
					$new['kidney_problems'] =$res;
				}else{
					$new['kidney_problems'] =[];
				}  
			}
			if($value->id == '3'){
				if(count($res)>0){
					$new['joint_problems'] =$res; 
				}else{
					$new['joint_problems'] =[];
				}  
			}
			if($value->id == '4'){
				if(count($res)>0){
					$new['respiratory_problems'] =$res; 
				}else{
					$new['respiratory_problems'] =[];
				}  
			}
			if($value->id == '5'){
				if(count($res)>0){
					$new['gastric_problems'] =$res; 
				}else{
					$new['gastric_problems'] =[];
				}  
			}
			if($value->id == '6'){
				if(count($res)>0){
					$new['allergies'] =$res; 
				}else{
					$new['allergies'] =[];
				}  
			}
			if($value->id == '7'){
				if(count($med)>0){
					$new['medicine_names'] =$med_array;
				}else{
					$new['medicine_names'] =[];
				}  
			}
		}
		$this->db->select("DISTINCT(CAST(AES_DECRYPT(exam_procedure,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR)) as exam_procedure");
		$xam = $this->db->get('tbl_exams')->result();

		foreach ($xam as $key => $value) {

			$this->db->select("CAST(AES_DECRYPT(observation,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as observation");
			$this->db->where("CAST(AES_DECRYPT(exam_procedure,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) = '$value->exam_procedure'");
			$proc = $this->db->get('tbl_exams')->result();
			//echo $this->db->last_query();exit();
			$new['exams'][$key]['name'] = $value->exam_procedure;
			foreach ($proc as $key1 => $value1) {
				$new['exams'][$key]['observations'][] =$value1->observation;
			}
		}

		$letter = $this->db->get_where('tbl_policy',array('id'=>'1'))->row();
		$new['letter_without_cid'] = $letter->letter;
		$new['letter_with_cid'] = $letter->cid_letter;

		$this->db->select('code');
		$code = $this->db->get('tbl_disease_code')->result();
		foreach ($code as $key => $value) {
			$new['CID'][] = $value->code;
		}

		$this->db->select('DISTINCT(budget_procedure)');
		$budget = $this->db->get('tbl_budget')->result();
		foreach ($budget as $key => $value) {
			$new['budget'][] = $value->budget_procedure;
		}
		
		$result = array('status'=>'success','data'=>$new);
		return $result;
	}
	
	public function set_anamnese($data,$doctor_id){
		$result = $this->db->get_where('tbl_booking',array('id'=>$data['booking_id']))->row();
		if($result){
			if($result->doctor_id == $doctor_id){
				$anamnese = array();
				$new = array();
				$new['main_complaint'] = encrypt_data($data['main_problem']);
				$new['booking_id'] = $data['booking_id'];
				if(isset($data['description'])){
					$new['description'] = encrypt_data($data['description']); 

				}
				if(isset($data['kidney_problems'])){
					foreach ($data['kidney_problems'] as $key => $value) {
						$anamnese['anamnese']['Kidney_Problem']= $value;
					}
				}
				if(isset($data['heart_problems'])){
					foreach ($data['heart_problems'] as $key => $value) {
						$anamnese['anamnese']['Heart_Problem'] =$value;
					}
					
				}
				if(isset($data['respiratory_problems'])){
					foreach ($data['respiratory_problems'] as $key => $value) {
						$anamnese['anamnese']['Breathing_Problem'] =$value;
					}
				}
				if(isset($data['gastric_problems'])){
					foreach ($data['gastric_problems'] as $key => $value) {
						$anamnese['anamnese']['Gastric_Problem'] =$value;
					}
				}
				if(isset($data['allergies'])){
					foreach ($data['allergies'] as $key => $value) {
						$anamnese['anamnese']['Allergies'] =$value;
					}
				}
				if(isset($data['medicines'])){
					foreach ($data['medicines'] as $key => $value) {
						$anamnese['anamnese']['Medications'][] = $value;
					}
				}
				if($data['has_hepatitis']){
					$anamnese['anamnese']['others'][] ='hepatitis';
				}
				if($data['is_pregnant']){
					$anamnese['anamnese']['others'][] ='pregnancy';
				}
				if($data['has_diabetes']){
					$anamnese['anamnese']['others'][] ='diabetis';
				}
				if($data['has_healing_problems']){
					$anamnese['anamnese']['others'][] ='healing_problems';
				}
				$new['diseases'] = encrypt_data(json_encode($anamnese));
				$rows = $this->db->get_where('tbl_medical_records',array('booking_id'=>$data['booking_id']))->row();
				if($rows){
					unset($new['booking_id']);
					if($this->db->update('tbl_medical_records',$new,array('booking_id'=>$data['booking_id']))){
						$return = array('status'=>'success');
					}else{
						$return = array('status'=>'failed','message'=>'Something Went Wrong..Try Again Later!');
					}
				}else{
					$this->db->insert('tbl_medical_records',$new);
					$last_id = $this->db->insert_id();
					if($this->db->update('tbl_booking',array('medical_record_id'=>$last_id),array('id'=>$data['booking_id']))){
						$return = array('status'=>'success');
					}else{
						$return = array('status'=>'failed','message'=>'Something Went Wrong..Try Again Later!');
					}
				}
			}else{	
				$return = array('status'=>'failed','message'=>'Invalid Doctor');
			}
		}else{
			$return = array('status'=>'failed','message'=>'Booking Id doesnot exist');
		}
		return $return;
	}
	
	public function set_prescriptions($data,$doctor_id){
		$res = $this->db->get_where('tbl_booking',array('id'=>$data['booking_id']))->row();
		if($res){
			if($res->medical_record_id != '0' && $res->medical_record_id != ''){
				$new =array();
				foreach ($data['prescriptions'] as $key => $value) {
					$new[$key]['name'] = $value->name;
					$new[$key]['quantity'] = $value->quantity;
					$new[$key]['procedure'] = $value->dosage_and_administration;
				}
				if($this->db->update('tbl_medical_records',array('prescribtions'=>encrypt_data(json_encode($new))),array('booking_id'=>$data['booking_id']))) {
					$return = array('status'=>'success');
				}else{
					$return = array('status'=>'failed','message'=>'Something Went Wrong.. Try Again Later!');
				}
			}else{
				$return = array('status'=>'failed','message'=>'Medical Record Doesnot Exist');
			}
		}else{
			$return = array('status'=>'failed','message'=>'Booking Id doesnot Exist');
		}
		return $return;
	}

	public function get_medicine_basic_data($data){
		$med = $this->db->get_where('tbl_medicine',array('medicine_name'=>$data['medicine']))->result();
		if(count($med) > 0 ){
			foreach ($med as $key => $value) {
				$new['name'] = $value->medicine_name;
				$new['quantities'][]= $value->medicine_dosage;
				$new['dosage'][]= $value->medicine_procedure;
			}
			$return = array('status'=>'success','data'=>$new);
		}else{
			$return = array('status'=>'failed','message'=>'Medicine doesnot Exist');
		}
		return $return;
	}

	public function get_budget_basic_data($data){
		$budget = $this->db->get_where('tbl_budget',array('budget_procedure'=>$data['item']))->result();
		if(count($budget) > 0 ){
			foreach ($budget as $key => $value) {
				$new['name'] = $value->budget_procedure;
				$new['quantities'][]= $value->quantity;
				$new['values'][]= $value->amount;
			}
			$return = array('status'=>'success','data'=>$new);
		}else{
			$return = array('status'=>'failed','message'=>'Budget doesnot Exist');
		}
		return $return;
	}

	public function set_exams_procedures($data,$doctor_id){
		$res = $this->db->get_where('tbl_booking',array('id'=>$data['booking_id']))->row();
		if($res){
			if($res->medical_record_id != '0' && $res->medical_record_id != ''){
				$new =array();
				foreach ($data['exams'] as $key => $value) {
					$new[$key]['procedure'] = $value->name;
					$new[$key]['observation'] = $value->observation;
				}
				if($this->db->update('tbl_medical_records',array('exams'=>encrypt_data(json_encode($new))),array('booking_id'=>$data['booking_id']))){
					$return = array('status'=>'success');
				}else{
					$return = array('status'=>'failed','message'=>'Something Went Wrong.. Try Again Later!');
				}
			}else{
				$return = array('status'=>'failed','message'=>'Medical Record Doesnot Exist');
			}
		}else{
			$return = array('status'=>'failed','message'=>'Booking Id doesnot Exist');
		}
		return $return;
	}

	public function set_budgets($data,$doctor_id){
		$res = $this->db->get_where('tbl_booking',array('id'=>$data['booking_id']))->row();
		if($res){
			if($res->medical_record_id != '0' && $res->medical_record_id != ''){
				$new =array();
				foreach ($data['items'] as $key => $value) {
					$new[$key]['procedure'] = $value->name;
					$new[$key]['quantity'] = $value->quantity;
					$new[$key]['amount'] = $value->value;
				}
				if($this->db->update('tbl_medical_records',array('budget'=>encrypt_data(json_encode($new))),array('booking_id'=>$data['booking_id']))){
					$return = array('status'=>'success');
				}else{
					$return = array('status'=>'failed','message'=>'Something Went Wrong.. Try Again Later!');
				}
			}else{
				$return = array('status'=>'failed','message'=>'Medical Record Doesnot Exist');
			}
		}else{
			$return = array('status'=>'failed','message'=>'Booking Id doesnot Exist');
		}
		return $return;
	}

	
	public function forgot_password($data,$type){
		if($type == 'user'){
			$query = $this->db->get_where('tbl_registration',array('email'=>$data['email']))->row();
		}else{
			$query = $this->db->get_where('tbl_doctors',array('email'=>$data['email']))->row();
		}
		if($query){
			$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
				$result = '';
		    for ($i = 0; $i < 24; $i++)
		        $result .= $characters[mt_rand(0, 61)];
		    $link = base_pic_url().'Home/resetpassword/?i='.$query->id.'&c='.$result.'&t=';
			
		    if($type =='doctor')
		    {
		    	$link = $link.'2';
				$this->db->update('tbl_doctors',array('confirmation_code'=>$result),array('id'=>$query->id,'email'=>$data['email']));
		    }
		    else
		    {
		    	$link = $link.'1';
		    	$this->db->update('tbl_registration',array('confirmation_code'=>$result),array('id'=>$query->id,'email'=>$data['email']));
		    }
	     	$msg = "Hi ".$query->name.",<br><br>Your request for resetting password has been accepted. Use the following link to reset password. ".$link.". Please Do not share with anyone<br><br>Ipok Team";
	     	$sub = 'Reset Password';
	     	$reslt = $this->send_mail($msg,$data['email'],$sub);
	     	if($reslt){
	     		$return = array('status'=>'success','message'=>'Please check Your mail');
	     	}else{
	     		$return = array('status'=>'error','message'=>'Something Went Wrong.. Try Again Later!');
	     	}

		}else{
			$return = array('status'=>'error','message'=>'Email id Doesnot Exist');
		}
		return $return;
	}

	public function send_mail($msg,$email,$sub){
      $settings = $this->db->get('settings')->row();
      $configs = array(
                        'protocol'=>'smtp',
                        'smtp_host'=>$settings->smtp_host,
                        'smtp_user'=>$settings->smtp_username,
                        'smtp_pass'=>$settings->smtp_password,
                        'smtp_port'=>'587',
                        'smtp_timeout'=>20,
                        'mailtype' => 'html',
                        'charset' => 'iso-8859-1',
                        'wordwrap' => TRUE
                      ); 
      $this->load->library('email', $configs);
      $this->email->initialize($configs);
      $this->email->set_newline("\r\n");
      $this->email
        ->from($settings->admin_email, 'IPOK')
        ->to($email)
        ->subject($sub)
        ->message($msg);
      if($this->email->send()){
		return true;
		}
    }
	
	public function finalize_medical_record($data,$doctor_id){
    	$res = $this->db->get_where('tbl_booking',array('id'=>$data['booking_id']))->row();
		if($res){
			if($res->medical_record_id != '0' && $res->medical_record_id != ''){
				if(!isset($data['observations'])){
					$data['observations'] = '';
				}
				if(!isset($_FILES['photo'])){
					$data['images'] = '';
				}
				$this->db->update('tbl_medical_records',array('other_observations'=>encrypt_data($data['observations']),'images'=>$data['images']),array('booking_id'=>$data['booking_id']));
				$doctor_wallet = $this->db->get_where('tbl_wallet_details',array('doctor_id'=>$doctor_id))->row();
				$earn = $res->total_sum - (($res->total_sum * $res->ipok_fee)/100);
				if($res->visit_type == '0'){
					if($doctor_wallet){
						$redem_earn = decrypt_data($doctor_wallet->reedem_earn) + $earn;
						$future_earn = decrypt_data($doctor_wallet->future_earn) - $earn;
						$total = $redem_earn + $future_earn;
						$this->db->update('tbl_wallet_details',array('future_earn'=>encrypt_data($future_earn),'reedem_earn'=>encrypt_data($redem_earn),'total_earn'=>encrypt_data($total)),array('doctor_id'=>$doctor_id));
					}
				}
				if($this->db->update('tbl_booking',array('booking_status'=>'3'),array('id'=>$data['booking_id']))){
					$return = array('status'=>'success');
				}else{
					$return = array('status'=>'failed','message'=>'Something Went Wrong.. Try Again Later!');
				}
			}else{
				$return = array('status'=>'failed','message'=>'Medical Record Doesnot Exist');
			}
		}else{
			$return = array('status'=>'failed','message'=>'Booking Id doesnot Exist');
		}
		return $return;
    }
	
	public function set_medical_certificate($data){
    	$res = $this->db->get_where('tbl_booking',array('id'=>$data['booking_id']))->row();
		if($res){
			if($res->medical_record_id != '0' && $res->medical_record_id != ''){
				$new['days']= $data['days'];
				if($data['is_letter_with_cid']){
					$new['cid']= $data['CID'];
					$new['is_letter_with_cid'] = $data['is_letter_with_cid'];
				}else{
					$new['cid']= 'null';
					$new['is_letter_with_cid'] = $data['is_letter_with_cid'];
				}
				$new['certificate'] = $data['medical_certificate'];
				if($this->db->update('tbl_medical_records',array('letters'=>encrypt_data(json_encode($new))),array('booking_id'=>$data['booking_id']))){
					$return = array('status'=>'success');
				}else{
					$return = array('status'=>'failed','message'=>'Something Went Wrong.. Try Again Later!');
				}

			}else{
				$return = array('status'=>'failed','message'=>'Medical Record Doesnot Exist');
			}
		}else{
			$return = array('status'=>'failed','message'=>'Booking Id doesnot Exist');
		}
		return $return;
    }
	
	public function get_wallet_details($doctor_id){
    	$result = $this->db->get_where('tbl_wallet_details',array('doctor_id'=>$doctor_id))->row();
    	if($result){
	    	$res = array('status'=>'success','data'=>array('doctor_id'=>$doctor_id,'redeemable_earnings'=>decrypt_data($result->reedem_earn),'future_earnings'=>decrypt_data($result->future_earn),'total_earnings'=>decrypt_data($result->total_earn)));
    	}else{
    		$res = array('status'=>'failed','data'=>array('doctor_id'=>$doctor_id,'redeemable_earnings'=>'0','future_earnings'=>'0','total_earnings'=>'0'));
    	}
    	return $res;
    }
	
	public function get_consultation_transaction_list($doctorid,$start,$per_page,$type){
    	$this->db->select("tbl_booking.id,tbl_booking.patient_id,tbl_registration.name as patient_name,tbl_doctors.consultation_duration as duration,(tbl_booking.total_sum - ((tbl_booking.total_sum * tbl_booking.ipok_fee) / 100)) as earnings,tbl_doctors.domiciliary_status as type,tbl_booking.date");
    	$this->db->from('tbl_booking');
    	$this->db->join('tbl_registration','tbl_registration.id = tbl_booking.patient_id');
    	$this->db->join('tbl_doctors','tbl_doctors.id = tbl_booking.doctor_id');
    	$this->db->where('tbl_doctors.id',$doctorid);
    	if($type == '1'){
    		$this->db->where('tbl_booking.booking_status','3');
    	}else{
    		$this->db->where("(tbl_booking.booking_status = '1' or tbl_booking.booking_status = '2')");
    	}
    	$this->db->limit($per_page,$start);
    	$query = $this->db->get()->result();
    	if(count($query) > 0 ){
    		foreach ($query as $key => $value) {
    			$query[$key]->patient_name = decrypt_data($value->patient_name);
    			if($value->type == '0'){
    				$query[$key]->type = '0';
    			}else{
    				$query[$key]->type = '0';
    			}
    		}
    		$result = array('status'=>'success','data'=>$query);
    	}else{
    		$result = array('status'=>'failed');
    	}
    	return $result;
    }
	
	public function add_bank($data){
    	if($this->db->insert('tbl_bank_accounts',$data)){
    		$last_id = $this->db->insert_id();
    		$query = $this->db->get_where('tbl_bank_accounts',array('id'=>$last_id))->row();
    		$query->account_no = decrypt_data($query->account_no);
    		$query->account_holder = decrypt_data($query->account_holder);
    		$result = array('status'=>'success','data'=>$query);
    	}else{
    		$result = array('status'=>'failed');
    	}
    	return $result;
    }
	
	public function edit_bank($data){
    	$query = $this->db->get_where('tbl_bank_accounts',array('id'=>$data['id']))->row();
    	if($query){
    		if($this->db->update('tbl_bank_accounts',$data,array('id'=>$data['id']))){
    			$bank_query = $this->db->get_where('tbl_bank_accounts',array('id'=>$data['id']))->row();
	    		$bank_query->account_no = decrypt_data($bank_query->account_no);
	    		$bank_query->account_holder = decrypt_data($bank_query->account_holder);
	    		$result = array('status'=>'success','data'=>$bank_query);
    		}else{
    			$result = array('status'=>'failed','message'=>'Something Went Wrong.. Try Again Later');
    		}
    	}else{
    		$result = array('status'=>'failed','message'=>'Bank Id Doesnot Exist');
    	}
    	return $result;
    }
	
	public function delete_bank($data){
    	$query = $this->db->get_where('tbl_bank_accounts',array('id'=>$data['id']))->row();
    	if($query){
    		if($this->db->delete('tbl_bank_accounts',array('id'=>$data['id']))){
    			$result = array('status'=>'success');
    		}else{
    			$result = array('status'=>'failed','message'=>'Something Went Wrong.. Try Again Later');
    		}
    	}else{
    		$result = array('status'=>'failed','message'=>'Bank Id Doesnot Exist');
    	}
    	return $result;
    }
	
	public function get_bank_list($id,$start,$per_page){
    	$this->db->select('id,bank_name,agency as agency_name,account_no as bank_account,account_holder as name');
    	$this->db->limit($per_page,$start);
    	$query = $this->db->get_where('tbl_bank_accounts',array('type_id'=>$id))->result();
    	if(count($query) > 0){
    		foreach ($query as $key => $value) {
    			$query[$key]->bank_account = decrypt_data($value->bank_account);
    			$query[$key]->name = decrypt_data($value->name);
    		}
    		$result =array('status'=>'success','data'=>$query);
    	}else{
    		$result = array('status'=>'failed');
    	}
    	return $result;
    }
	
	public function withdrawal_request($data){
		$bank = $this->db->get_where('tbl_bank_accounts',array('id'=>$data['bank_id']))->row();
		if($bank){
			$query = $this->db->get_where('tbl_wallet_details',array('doctor_id'=>$data['doctor_id']))->row();
			$data['date'] = strtotime(date('Y-m-d h:i:s'));
			$data['previous_reedem_earn'] = decrypt_data($query->reedem_earn);
			if(decrypt_data($query->reedem_earn) >= $data['amount']){
				$data['status'] = '0';
				if($this->db->insert('tbl_withdrawal_history',$data)){
					$last = $this->db->insert_id();
					$res = $this->db->get_where('tbl_withdrawal_history',array('id'=>$last))->row();
					$result = array('status'=>'success','data'=>$res);
				}else{
					$result = array('status'=>'failed','message'=>'Something Went Wrong.. Try Again Later !');
				}
			}else{
				$data['status'] = '3';
				if($this->db->insert('tbl_withdrawal_history',$data)){
					$result = array('status'=>'failed','message'=>'Your account have no enough balance to withdraw as per your request');
				}else{
					$result = array('status'=>'failed','message'=>'Something Went Wrong.. Try Again Later !');
				}
			}
		}else{
			$result = array('status'=>'failed','message'=>'Bank Id Doesnot Exist');
		}
    	return $result;
    }
	
	public function get_withdrawal_history($doctorid,$start,$per_page){
    	$this->db->select('tbl_withdrawal_history.id,tbl_withdrawal_history.bank_id,tbl_withdrawal_history.amount,tbl_withdrawal_history.date,tbl_withdrawal_history.status,tbl_bank_accounts.bank_name,tbl_bank_accounts.account_no as bank_account');
    	$this->db->join('tbl_bank_accounts','tbl_bank_accounts.id = tbl_withdrawal_history.bank_id');
    	$this->db->limit($per_page,$start);
    	$query = $this->db->get_where('tbl_withdrawal_history',array('tbl_withdrawal_history.doctor_id'=>$doctorid))->result();
    	if(count($query) > 0){
    		foreach ($query as $key => $value) {
    			$query[$key]->bank_account = decrypt_data($value->bank_account);
    		}
    		return $query;
    	}else{
    		return false;
    	}
    }
	
	public function doctor_profile($id){
    	//$this->db->select('tbl_doctors.id,tbl_doctors.name,tbl_specialization.specialization_name as specialization,tbl_doctors.profile_pic as profile_photo,CONCAT_WS(" ", tbl_doctors.street_address, tbl_doctors.locality,tbl_doctors.number,tbl_doctors.complement) as address,tbl_doctors.telephone');
    	$this->db->select('tbl_doctors.id,tbl_doctors.name,tbl_specialization.specialization_name as specialization,tbl_doctors.profile_pic as profile_photo, tbl_doctors.street_address, tbl_doctors.locality,tbl_doctors.number,tbl_doctors.complement,tbl_doctors.telephone');
		$this->db->join('tbl_specialization','tbl_specialization.id = tbl_doctors.specialization');
    	$res = $this->db->get_where('tbl_doctors',array('tbl_doctors.id'=>$id))->row();
    	if($res){
    		$res->address = decrypt_data($res->street_address).' '.decrypt_data($res->locality).' '.decrypt_data($res->number).' '.decrypt_data($res->complement);
    		unset($res->street_address);
    		unset($res->locality);
    		unset($res->number);
    		unset($res->complement);

	    	$new[0] = decrypt_data($res->telephone);
	    	$res->phone =$new;
	    	unset($res->telephone);
	    	$result = array('status'=>'success','data'=>$res);
    	}else{
    		$result = array('status'=>'failed');
    	}
    	return $result;
    }
	
	public function check_wait_listed($data){
		$check = $this->db->get_where('tbl_booking',array('doctor_id'=>$data['doctor_id'],'clinic_id'=>$data['clinic_id'],'date'=>$data['date'],'time'=>$data['time']));
		if($check->num_rows() > 0){
			$is_booking = true;
		}else{
			$is_booking = false;
		}

		$this->db->select('accept_return,return_timeperiod');
		$this->db->where('id',$data['doctor_id']);
		$check_doctor_status = $this->db->get('tbl_doctors')->row();
		if($check_doctor_status->accept_return == '1'){
			$old_date = date('Y-m-d',$data['date']);
			$newdate = date("Y-m-d",strtotime($old_date." -".$check_doctor_status->return_timeperiod." day"));
			$new_date = strtotime($newdate);

			$this->db->where('doctor_id',$data['doctor_id']);
			$this->db->where('clinic_id',$data['clinic_id']);
			$this->db->where('patient_id',$data['user_id']);
			$this->db->where('free_visit_status',0);
			$this->db->where('visit_type',0);
			$this->db->where('date >=',$new_date);
			$this->db->where('date <=',$data['date']);
			$this->db->order_by('id','DESC');
			$this->db->limit(1,0);
			$old_book_res = $this->db->get('tbl_booking')->row();

			if(isset($old_book_res) && $old_book_res != ''){
				if($old_book_res->visit_type == '0'){
					$is_return_avail = true;
				}else{
					$is_return_avail = false;
				}
			}else{
				$is_return_avail = false;
			}
			
		}else{
			$is_return_avail = false;
		}
		$res = array('status'=>'success','booked'=>$is_booking,'is_return_avail'=>$is_return_avail);
		return $res;
	}
	
	Public function update_profile($id,$data){
		$this->db->where('tbl_registration.id',$id);
		if($this->db->update('tbl_registration',$data))
		{
			$result = array('status' => 'success');
		}
		else
		{
			$result = array('status' => 'error');
		}
		return $result;
	}

	public function set_patient_notification_status($data){
		if($data['status'] == true){
			$status = 1;
		}else{
			$status = 0;
		}
		if($this->db->update('tbl_patient_notification',array('read_status'=>$status),array('id'=>$data['notification_id']))){
			return true;
		}else{
			return false;
		}
	}
	
	
    public function checkBooking($id)
	{
		$this->db->select('count(*) as count,tbl_booking.date as booking_date,tbl_booking.id as booking_id,tbl_booking.time as booking_slot');
		$this->db->from('tbl_booking');
		$this->db->where('tbl_booking.id',$id);
		$this->db->where('tbl_booking.payment_status','0');
		$this->db->where('tbl_booking.booking_status!=4');
		$data =$this->db->get()->row_array();	
		//print_r($data);die();	
		return $data;
	}

	function get_booking_details($booking_id)
	{
		$this->db->select('*');
		$this->db->from('tbl_booking');
		$this->db->where('id',$booking_id);
		$data =$this->db->get()->row_array();		
		return $data;
	}

	public function get_single_patient($id)
	{
		$this->db->select("tbl_registration.id as patientid,tbl_registration.name as pt_name,tbl_registration.username as pt_username,tbl_registration.profile_photo as pt_pic,tbl_registration.gender as pt_gender,tbl_registration.email as pt_email,CAST(AES_DECRYPT(`tbl_registration`.`dob`, 'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as pt_dob,tbl_registration.number as pt_number,tbl_registration.blood_group as pt_blood_group,tbl_registration.weight as pt_weight,tbl_registration.height as pt_height,tbl_registration.street_address as pt_street_add,tbl_registration.locality as pt_locality,tbl_registration.zip_code as pt_zip_code,tbl_registration.landmark as pt_complement,tbl_registration.rg as pt_rg,tbl_registration.cpf as pt_cpf,tbl_registration.customer_id as pt_customer_id
								 ");

		$this->db->from('tbl_registration');
		$this->db->where('tbl_registration.id',$id);
		$data =$this->db->get()->row_array();
		$data['pt_name'] = decrypt_data($data['pt_name']);		
		$data['pt_gender'] = decrypt_data($data['pt_gender']);		
		$data['pt_number'] = decrypt_data($data['pt_number']);		
		$data['pt_blood_group'] = decrypt_data($data['pt_blood_group']);		
		$data['pt_weight'] = decrypt_data($data['pt_weight']);		
		$data['pt_height'] = decrypt_data($data['pt_height']);		
		$data['pt_street_add'] = decrypt_data($data['pt_street_add']);		
		$data['pt_locality'] = decrypt_data($data['pt_locality']);		
		$data['pt_zip_code'] = decrypt_data($data['pt_zip_code']);		
		$data['pt_complement'] = decrypt_data($data['pt_complement']);		
		$data['pt_rg'] = decrypt_data($data['pt_rg']);		

		return $data;

	}
	
	
	public function get_single_doctor($id)
	{
		$this->db->select("tbl_doctors.id as doctorid,tbl_doctors.name as dr_name,tbl_doctors.profile_pic as dr_pic,tbl_doctors.email as dr_email,tbl_doctors.username as dr_username,CAST(AES_DECRYPT(tbl_doctors.dob,'Ptf/PWNWrULQT72syxfaaBRTS9JbiKrj9dfuVEvT3rA') as CHAR) as dr_dob,tbl_doctors.about as dr_bio,tbl_doctors.specialization as dr_specialization_id,tbl_doctors.price as dr_price,tbl_doctors.consultation_duration as dr_consult_duration,tbl_doctors.accept_return as dr_accept_return,tbl_doctors.return_timeperiod as dr_return_timeperiod,tbl_doctors.gender as dr_gender,tbl_doctors.locality as dr_neighbourhood,tbl_doctors.street_address as dr_rua,tbl_doctors.number as dr_number,tbl_doctors.telephone as dr_telephone,tbl_doctors.complement as dr_complement,tbl_doctors.rg as dr_rg,tbl_doctors.cpf as dr_cpf,tbl_doctors.crm as dr_crm,tbl_doctors.cep as dr_cep,tbl_specialization.specialization_name AS dr_specialization");
		$this->db->from('tbl_doctors');
		$this->db->join('tbl_specialization', 'tbl_specialization.id = tbl_doctors.specialization','left');

		$this->db->where('tbl_doctors.id',$id);

		$data =$this->db->get()->row_array();
		$data['dr_bio'] = decrypt_data($data['dr_bio']);
		//$data['dr_price'] = decrypt_data($data['dr_price']);
		$data['dr_gender'] = decrypt_data($data['dr_gender']);
		$data['dr_neighbourhood'] = decrypt_data($data['dr_neighbourhood']);
		$data['dr_rua'] = decrypt_data($data['dr_rua']);
		$data['dr_number'] = decrypt_data($data['dr_number']);
		$data['dr_complement'] = decrypt_data($data['dr_complement']);
		$data['dr_rg'] = decrypt_data($data['dr_rg']);
		$data['dr_crm'] = decrypt_data($data['dr_crm']);
		$data['dr_cep'] = decrypt_data($data['dr_cep']);
		return $data;
	}

	function get_single_doctor_row($id)
	{
		$this->db->select("*");
		$this->db->from("tbl_doctors");
		$this->db->where("tbl_doctors.id",$id);
		$query = $this->db->get()->row_array();

		$query['about'] = decrypt_data($query['about']);
		//$query['price'] = decrypt_data($query['price']);
		$query['gender'] = decrypt_data($query['gender']);
		$query['street_address'] = decrypt_data($query['street_address']);
		$query['locality'] = decrypt_data($query['locality']);
		$query['number'] = decrypt_data($query['number']);
		$query['complement'] = decrypt_data($query['complement']);
		$query['rg'] = decrypt_data($query['rg']);
		$query['crm'] = decrypt_data($query['crm']);
		$query['cep'] = decrypt_data($query['cep']);
		//$query['domiciliary_status'] = decrypt_data($query['domiciliary_status']);

		return $query;
	}

	public function get_wallet_for_doctor($doc_id)
	{
		$this->db->select('reedem_earn as reedem_earn,
							future_earn as future_earn,
							total_earn as total_earn');
		$this->db->from('tbl_wallet_details');
		$this->db->where('doctor_id',$doc_id);
		$query = $this->db->get()->row_array();

		$query['reedem_earn'] = decrypt_data($query['reedem_earn']);
		$query['future_earn'] = decrypt_data($query['future_earn']);
		$query['total_earn'] = decrypt_data($query['total_earn']);
		return $query;
	}

	public function update_wallet($id,$data)
	{
		$sql = $this->db->insert_string("tbl_wallet_details", array("doctor_id"=>$id,"reedem_earn"=>encrypt_data($data['reedem_earn']),"future_earn"=>encrypt_data($data['future_earn']),"total_earn"=>encrypt_data($data['total_earn']))) . " ON DUPLICATE KEY UPDATE doctor_id = " .$id.',reedem_earn ='.'"' .encrypt_data($data['reedem_earn']).'"'.',future_earn='.'"' .encrypt_data($data['future_earn']).'"' .',total_earn='. '"' .encrypt_data($data['total_earn']).'"';
			if($this->db->query($sql)){
				$return_array = array('status'=>'success');
			}
			else{
				$return_array = array('status'=>'fail');
			}
			
			return $return_array;
	}

	public function insert_notification_patient($data){
		if($this->db->insert('tbl_patient_notification',$data)){
			$insert_id = $this->db->insert_id();
			return $insert_id;
		}
	}

	 public function get_patient_fcm($pat_id)
		{
			$this->db->select('fcm_token');
			$this->db->from('tbl_authtoken');
			$this->db->where('userid',$pat_id);
			$query = $this->db->get();
			return $query->row_array();
		}

	public function insert_notification_doctor($data){
		if($this->db->insert('tbl_doctor_notifications',$data))
		{
			$insert_id = $this->db->insert_id();
			return $insert_id;
		}
	}

	public function get_doctor_fcm($doc_id){
		$this->db->select('fcm_token');
		$this->db->from('tbl_authtoken_doctors');
		$this->db->where('doctor_id',$doc_id);
		$query = $this->db->get();
		return $query->row_array();
	}

	public function set_payment_status($id)
	{
		$update = array('payment_status' => '1');
		$this->db->where('tbl_booking.id',$id);
		$this->db->update('tbl_booking', $update);	
	}

	public function get_booked_payed_data($id){
		$booked_data = $this->db->get_where('tbl_booking',array('id'=>$id))->row_array();
		if($booked_data){	
			$check = $this->db->get_where('tbl_booking',array('doctor_id'=>$booked_data['doctor_id'],'clinic_id'=>$booked_data['clinic_id'],'date'=>$booked_data['date'],'time'=>$booked_data['time'],'payment_status'=>'1'));
			if($check->num_rows() <= '0'){
				$is_result = 0;
				$res = array('status'=>'success','is_result'=>$is_result);
			}else if($check->num_rows() == '1'){
				$is_result = 1;
				$this->db->update('tbl_booking',array('booking_status'=>'0'),array('id'=>$id));
				$res = array('status'=>'success','is_result'=>$is_result);
			}else if($check->num_rows() >= '1'){
				$is_result = 2;
				$this->db->update('tbl_booking',array('booking_status'=>'4'),array('id'=>$id));
				$res = array('status'=>'error','is_result'=>$is_result,'message'=>'
					Selected Doctor Not Available');
			}
		}else{
			$res = array('status'=>'error','message'=>'No Booking Found');
		}
		return $res;
	}
	
	
	/*function push_sent($fcm_data,$type) {
	
		$data1 = "SELECT * FROM settings WHERE id = '0' ";

		$query1 = $this->db->query($data1);

		$rs = $query1->row();
		$key = $rs->api_key;
		if($type == '1'){
		 $data = "{ \"notification\": { \"title\": \"".$fcm_data['type']."\", \"text\": \"".$fcm_data['message']."\" , \"sound\": \"default\" }, \"time_to_live\": 60, \"data\" : {\"response\" : {\"status\" : \"success\", \"data\" : {\"id\" : \"".$fcm_data['id']."\",\"type\" : \"".$fcm_data['type']."\",\"booking_id\" : \"".$fcm_data['booking_id']."\",\"booking_date\" : \"".$fcm_data['booking_date']."\",\"doctor_id\" : \"".$fcm_data['doctor_id']."\",\"doctor_name\" : \"".$fcm_data['doctor_name']."\",\"doctor_specialization\" : \"".$fcm_data['doctor_specialization']."\",\"message\" : \"".$fcm_data['message']."\",\"time\" : \"".$fcm_data['time']."\"}}}, \"collapse_key\" : \"trip\", \"priority\":\"high\", \"to\" : \"".$fcm_data['to']."\"}";
		}else if($type == '2'){
		 $data = "{ \"notification\": { \"title\": \"".$fcm_data['type']."\", \"text\": \"".$fcm_data['message']."\" , \"sound\": \"default\" }, \"time_to_live\": 60, \"data\" : {\"response\" : {\"status\" : \"success\", \"data\" : {\"id\" : \"".$fcm_data['id']."\",\"type\" : \"".$fcm_data['type']."\",\"message\" : \"".$fcm_data['message']."\",\"read_status\" : \"".$fcm_data['read_status']."\"}}}, \"collapse_key\" : \"trip\", \"priority\":\"high\", \"to\" : \"".$fcm_data['to']."\"}";
		}else if($type == '3'){
			$data = "{ \"notification\": { \"title\": \"".$fcm_data['type']."\", \"text\": \"".$fcm_data['message']."\" , \"sound\": \"default\" }, \"time_to_live\": 60, \"data\" : {\"response\" : {\"status\" : \"success\", \"data\" : {\"id\" : \"".$fcm_data['id']."\",\"type\" : \"".$fcm_data['type']."\",\"booking_id\" : \"".$fcm_data['booking_id']."\",\"booking_date\" : \"".$fcm_data['booking_date']."\",\"doctor_id\" : \"".$fcm_data['doctor_id']."\",\"doctor_name\" : \"".$fcm_data['doctor_name']."\",\"doctor_specialization\" : \"".$fcm_data['doctor_specialization']."\",\"message\" : \"".$fcm_data['message']."\",\"time\" : \"".$fcm_data['time']."\"}}}, \"collapse_key\" : \"trip\", \"priority\":\"high\", \"to\" : \"".$fcm_data['to']."\"}";
		}
		// $data = "{ \"notification\": { \"title\": \"hi\", \"text\": \"hellonewmessage\" , \"sound\": \"default\" }, \"time_to_live\": 60, \"data\" : {\"response\" : {\"status\" : \"success\", \"data\" : {\"id\" : \"12\"}}}, \"collapse_key\" : \"trip\", \"priority\":\"high\", \"to\" : \"eaME7PRPLF8:APA91bHhjEW8Li4zE_yWmYdIUU5Z-bwwpMv_4o35z9QrsxG5EpbVkt_vfI7LIm5BZnxdXY9QX2ilL8FKKaIU1bGTIp_4jjk246YPfR_OI5i87BEuZkQr0JZIp6VEbpQEu2LeSLcktIdk\"}";
		// $data = "{ \"notification\": { \"title\": \"".$fcm_data['title']."\", \"text\": \"".$fcm_data['message']."\" , \"sound\": \"default\" }, \"time_to_live\": 60, \"data\" : {\"response\" : {\"status\" : \"success\", \"data\" : {\"id\" : \"".$fcm_data['id']."\"}}}, \"collapse_key\" : \"trip\", \"priority\":\"high\", \"to\" : \"".$fcm_token."\"}";

		$ch = curl_init("https://fcm.googleapis.com/fcm/send"); 
		$header = array('Content-Type: application/json', 'Authorization: key='.$key);

		curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

		curl_setopt($ch, CURLOPT_POST, 1);

		//curl_setopt($ch, CURLOPT_POSTFIELDS, "{ \"notification\": { \"title\": \"olakka title\", \"text\": \"Olakka message\" }, \"data\" : {\"response\" : {\"status\" : \"success\", \"data\" : {\"id\" : \"$request[id]\"}}} \"to\" : \"cAAoKqSKvgk:APA91bH-mvqwAp1JYW1oBZl_aheVDb7HOWx0YjXU6Wmmm-G_CB-60T2M6WKwsjPDMUfu47nCf1qi4a9SREiwRifAFBWszVTL8XA1y4_nb7ZiI9EmX7rpKsWogsrzqXSwKt56cd8sH5ox\"}");

		curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

		// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

		// curl_close($ch);

		$out = curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

		$response = curl_exec($ch);
		//print_r($response); 

		curl_close($ch);

    }*/
	
	function push_sent($fcm_data,$type) {
	
		$data1 = "SELECT * FROM settings WHERE id = '0' ";

		$query1 = $this->db->query($data1);

		$rs = $query1->row();
		$key = $rs->api_key;
		//free booking,confirmed,for user
		if($type == '1'){
		 $data = "{ \"notification\": { \"title\": \"".$fcm_data['type']."\", \"text\": \"".$fcm_data['message']."\" , \"sound\": \"default\" }, \"time_to_live\": 60, \"data\" : {\"response\" : {\"status\" : \"success\", \"data\" : {\"id\" : \"".$fcm_data['id']."\",\"type\" : \"".$fcm_data['type']."\",\"booking_id\" : \"".$fcm_data['booking_id']."\",\"booking_date\" : \"".$fcm_data['booking_date']."\",\"doctor_id\" : \"".$fcm_data['doctor_id']."\",\"doctor_name\" : \"".$fcm_data['doctor_name']."\",\"doctor_specialization\" : \"".$fcm_data['doctor_specialization']."\",\"message\" : \"".$fcm_data['message']."\",\"time\" : \"".$fcm_data['time']."\"}}}, \"collapse_key\" : \"trip\", \"priority\":\"high\", \"to\" : \"".$fcm_data['to']."\"}";
		 //free booking, confirmed, for doctor
		}else if($type == '2'){
		 $data = "{ \"notification\": { \"title\": \"".$fcm_data['type']."\", \"text\": \"".$fcm_data['message']."\" , \"sound\": \"default\" }, \"time_to_live\": 60, \"data\" : {\"response\" : {\"status\" : \"success\", \"data\" : {\"id\" : \"".$fcm_data['id']."\",\"type\" : \"".$fcm_data['type']."\",\"message\" : \"".$fcm_data['message']."\",\"read_status\" : \"".$fcm_data['read_status']."\"}}}, \"collapse_key\" : \"trip\", \"priority\":\"high\", \"to\" : \"".$fcm_data['to']."\"}";
		}/*else if($type == '3'){
			$data = "{ \"notification\": { \"title\": \"".$fcm_data['type']."\", \"text\": \"".$fcm_data['message']."\" , \"sound\": \"default\" }, \"time_to_live\": 60, \"data\" : {\"response\" : {\"status\" : \"success\", \"data\" : {\"id\" : \"".$fcm_data['id']."\",\"type\" : \"".$fcm_data['type']."\",\"booking_id\" : \"".$fcm_data['booking_id']."\",\"booking_date\" : \"".$fcm_data['booking_date']."\",\"doctor_id\" : \"".$fcm_data['doctor_id']."\",\"doctor_name\" : \"".$fcm_data['doctor_name']."\",\"doctor_specialization\" : \"".$fcm_data['doctor_specialization']."\",\"message\" : \"".$fcm_data['message']."\",\"time\" : \"".$fcm_data['time']."\"}}}, \"collapse_key\" : \"trip\", \"priority\":\"high\", \"to\" : \"".$fcm_data['to']."\"}";
		}*/
		
		$ch = curl_init("https://fcm.googleapis.com/fcm/send"); 
		$header = array('Content-Type: application/json', 'Authorization: key='.$key);

		curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

		curl_setopt($ch, CURLOPT_POST, 1);

		//curl_setopt($ch, CURLOPT_POSTFIELDS, "{ \"notification\": { \"title\": \"olakka title\", \"text\": \"Olakka message\" }, \"data\" : {\"response\" : {\"status\" : \"success\", \"data\" : {\"id\" : \"$request[id]\"}}} \"to\" : \"cAAoKqSKvgk:APA91bH-mvqwAp1JYW1oBZl_aheVDb7HOWx0YjXU6Wmmm-G_CB-60T2M6WKwsjPDMUfu47nCf1qi4a9SREiwRifAFBWszVTL8XA1y4_nb7ZiI9EmX7rpKsWogsrzqXSwKt56cd8sH5ox\"}");

		curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

		// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

		// curl_close($ch);

		$out = curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

		$response = curl_exec($ch);
		//print_r($response); 

		curl_close($ch);

    }










	
/*............................................................................................*/	
}