<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Searchdoctor extends CI_Controller {


	function __construct() 
	{
        parent::__construct();
        $this->load->model('Search_doctor_model');
        $this->load->model('Home_model');
        $this->load->model('Doctor_model');       
        $this->load->model('Patient_model');       
    }

   /*FUNCTION :REDIRECTS TO SEARCH FUNCTION AFTER SETTING LOCAL STORAGE OF SEARCH DATA - DOCTOR SEARCH*/
   /*DESCRIPTION : Search data is saved in local storage for showing the previous search data while 
   						user navigates through search screens*/
	public function index()
	{
		if(isset($_POST)&&(!empty($_POST)))
		{
			$request = $_POST;
			//print_r($request);die();
			$this->session->set_userdata('DoctorSearchData',$request);
			
		}
		header('Location: '.base_url().'Searchdoctor/search');
	}
	

   /*FUNCTION : SEARCH FUNCTION FOR FILTERING DOCTORS - DOCTOR SEARCH*/
   /*DESCRIPTION : Search data from the local storage is used to filter the search based on various
   					factors*/
	public function search()
	{
		$speciality_list = $this->Home_model->get_speciality();
		$template['speciality_list'] = $speciality_list;

		if($this->session->userdata('DoctorSearchData'))
		{
			$request = $this->session->userdata('DoctorSearchData');
			//print_r($request);
			//die();
			
			
			if((isset($request['doctor-search-date']))&&(!empty($request['doctor-search-date'])))
			{
				$request['doctor-search-date'] = strtotime($request['doctor-search-date']);
			}
			
			$all_doctors = $this->Search_doctor_model->filter_search($request);
			//print_r($all_doctors);die();
			$price_min =  $this->Search_doctor_model->get_doc_min_price();
			$price_max =  $this->Search_doctor_model->get_doc_max_price();

			$distance_min =  $this->Search_doctor_model->get_doc_min_distance($request);
			$distance_max =  $this->Search_doctor_model->get_doc_max_distance($request);
			//print_r($distance_max[0]['dist']);die();

			$filter_autoload = array('price_min' =>$price_min[0]['price'] ,'price_max'=>$price_max[0]['price'],'distance_min'=>$distance_min[0]['dist'],'distance_max'=>$distance_max[0]['dist']);
			//print_r($filter_autoload);die();
			if(!empty($all_doctors))
			{
				$template['doctors_list'] = $all_doctors;
			}

			$template['page'] = "search_doctor";
			$template['page_title'] = "Search Doctor";
			$template['searchdata'] = $request;
			$template['filter_autoload'] = $filter_autoload;
			
			$this->load->view('template/template', $template);
			
		}
		else
		{
			$template['page'] = "search_doctor";
			$template['page_title'] = "Search Doctor";
			$this->load->view('template/template', $template);
		}
		
	}


   /*FUNCTION : FILTER FUNCTION FOR FILTERING DOCTORS - DOCTOR SEARCH*/
   /*DESCRIPTION : Search data from the local storage is used to filter the search based on various
   					factors.here the additional filters from search page is also included*/
	public function filter_search()
	{
		if(isset($_POST)&&(!empty($_POST)))
		{
			$request = $_POST;
			$this->session->set_userdata('DoctorSearchData',$request);
			//print_r($request);die();
			if((isset($request['doctor-search-date']))&&(!empty($request['doctor-search-date'])))
			{
				$request['doctor-search-date'] = strtotime($request['doctor-search-date']);
			}
			$template['searchdata'] = $request;
			$all_doctors = $this->Search_doctor_model->filter_search($request);
			$template['doctors_list'] = $all_doctors;
			//print_r($all_doctors);die();
			$this->load->view('search_doctor_result',$template);			
		}
	}

	/*FUNCTION : VIEW DOCTOR COMPLETE PROFILE - DOCTOR SEARCH*/
   /*DESCRIPTION : Controller to view doctor profile from doctor search*/
	public function doctorprofile()
	{
		$doctor_id = $this->uri->segment(3);
		$clinic_id = $this->uri->segment(4);
		$doctor_data = $this->Search_doctor_model->get_single_doctor_clinic($doctor_id,$clinic_id);
		
		$userdata = $this->session->userdata('UserData');
		for ($i=0; $i < 7; $i++) 
		{ 
			$day = date('D',strtotime('+'.$i.'day'));
			$dayno = date('d',strtotime('+'.$i.'day'));
			$week_appointments[$i] = $this->Doctor_model->get_doctor_appointments_week($doctor_id,date('y-m-d',strtotime('+'.$i.'day')));      
		}

		$check_profile_view_entry = $this->Search_doctor_model->check_profile_view_entry($doctor_id);
		if($check_profile_view_entry['count']==0)
		{
			$this->Search_doctor_model->insert_profile_view_count($doctor_id);	
		}

		$template['week_appointments'] = $week_appointments;
		$template['page'] = "search_doctor_complete_profile";
		$template['page_title'] = "Doctor Profile";
		$template['doctor_data'] = $doctor_data;
		$this->load->view('template/template', $template);
	}

	/*FUNCTION : VIEW BOOKING PAGE - DOCTOR SEARCH*/
   /*DESCRIPTION : Controller to view booking page from doctor search*/
	public function confirmbooking()
	{
	
 		$doctor_id = $this->uri->segment(3);
		$clinic_id = $this->uri->segment(4);
		$doctor_data = $this->Search_doctor_model->get_single_doctor_clinic($doctor_id,$clinic_id);

		$policy = $this->Patient_model->get_policy();
		
		//$template['time_slot'] = $res_new;
		$template['page'] = "search_doctor_confirm_booking";
		$template['page_title'] = "Booking";
		$template['doctor_data'] = $doctor_data;
		$template['policy'] = $policy['waiting_policy'];
		$this->load->view('template/template', $template);
 
		
	}

	/*FUNCTION : GET DOCTOR TIMESLOT FOR GIVEN CLINIC - DOCTOR SEARCH*/
   /*DESCRIPTION : Returns doctor timeslot for the scheduled agenda excluding the break time*/
	public function getDoctorClinic_timeslot()
	{

		$result_availability = $this->Search_doctor_model->doctor_availability($_POST['doctor_id'],$_POST['clinic_id']);
		$consult_duration = $this->Doctor_model->check_consult_duration($_POST['doctor_id']);
		//print_r($_POST);

		$res_new = array();

		$nowin_server = date("Y-m-d TH:i:s");
		
		if($_POST['UTCoffset']['sign']=='+')
		{
			//$clienttime_UTC = date("Y-m-d H:i:s",strtotime($_POST['currenttime']." -".$_POST['UTCoffset']['hour']." hours -".$_POST['UTCoffset']['minute']." minutes"));
			//print_r($clienttime_UTC);

			$nowin_server_addoffset = date('Y-m-d H:i:s',strtotime('+'.$_POST['UTCoffset']['hour'].' hour +'.$_POST['UTCoffset']['minute'].' minutes',strtotime($nowin_server)));
		}
		elseif ($_POST['UTCoffset']['sign']=='-') 
		{
			//$clienttime_UTC = date("Y-m-d H:i:s",strtotime($_POST['currenttime']." +".$_POST['UTCoffset']['hour']." hours +".$_POST['UTCoffset']['minute']." minutes"));
			//print_r($clienttime_UTC);

			$nowin_server_addoffset = date('Y-m-d H:i:s',strtotime('-'.$_POST['UTCoffset']['hour'].' hour -'.$_POST['UTCoffset']['minute'].' minutes',strtotime($nowin_server)));
		}

		//$clienttime_UTC_add1hr = date("Y-m-d H:i:s",strtotime($clienttime_UTC." + 1hours "));
		//if(strtotime($clienttime_UTC_add1hr)>strtotime($nowin_server))
		//{

			/*print_r($clienttime_UTC);
			print_r($clienttime_UTC_add1hr);
			print_r($nowin_server);
			print_r($nowin_server_addoffset);*/
		//}
		
		
		if($result_availability['data']['active_schedule']=='0')
		{
			$schedule = $result_availability['data']['date'];
		}
		else
		{
			$schedule = $result_availability['data']['date_secondary'];
		}


		if(($result_availability['status']) == 'success' and ($schedule!='""'))
		{
			$day = date('D',strtotime($_POST['book_date']));
			$res = array();
			//print_r(strtotime($_POST['currenttime']));die();
			$schedule = json_decode($schedule,true);
			foreach ($schedule as $key => $value) {
				if($value['day'] == strtolower($day))
				{

					$interval_time = $consult_duration['consultation_duration']*60;
					$start_time = strtotime($_POST['book_date'].' '.$value['time']['start']);
					$end_time = strtotime($_POST['book_date'].' '.$value['time']['end']);
					for ($i=$start_time; $i<=$end_time; $i=$i+$interval_time) 
					{ 
						
						$initial = $i;
						$end = $i+$interval_time;
				
						if(isset($value['time']['break_from']) && isset($value['time']['break_to']) && ($value['time']['break_from'] != 'null' ) && ($value['time']['break_to'] != 'null') && strlen($value['time']['break_from']) && strlen($value['time']['break_to']))
						{
							if(!((($initial < strtotime($value['time']['break_from'])) &&($end > strtotime($value['time']['break_from'])))||(($initial < strtotime($value['time']['break_to'])) &&($end > strtotime($value['time']['break_to']))))&&($initial>strtotime($nowin_server_addoffset)))
							{
								
								if($end <= $end_time)
								{
									array_push($res, array('time'=>date('h:i a',$initial).' - '.date('h:i a',$end),'start'=>$initial,'end'=>$end));
								}
							}
						}
						else
						{
							if(($end <= $end_time)&&($initial>strtotime($nowin_server_addoffset)))
							{
								array_push($res, array('time'=>date('h:i a',$initial).' - '.date('h:i a',$end),'start'=>$initial,'end'=>$end));
							}
						}
						
					}
				}
			}
	
			$res_new = array_values(array_unique($res,SORT_REGULAR));
			//print_r($res_new);die();
		}
		print json_encode($res_new);
	}

	/*FUNCTION : CHECK AVAILABILITY OF A DOCTOR - DOCTOR SEARCH*/
   /*DESCRIPTION : Returns whether the booking for given date and timeslot is available or return 
   					if the doctor is on leave for given date */
	public function checkDoctorAvailability()
	{
		$check_leave = $this->Search_doctor_model->checkDoctorLeave($_POST);
		$times = explode('-', $_POST['confirm-book-time']);
		$book_start_time = strtotime($_POST['confirm-book-date'].' '.$times[0]);
		if(strtotime($_POST['currenttime'])<$book_start_time)
		{
			if($check_leave['count']==0)
			{
				$check_booking = $this->Search_doctor_model->checkDoctorBooking($_POST);
				//print_r($check_booking);die();
				if($check_booking['count']==0)
				{	
					if($this->session->userdata('UserData'))
					{
						$res = array('status' => 'success', 'msg' => 'booking success','isLogin' =>'true');
						
					}
					else
					{
						$res = array('status' => 'success', 'msg' => 'booking success','isLogin' =>'false');
					}
				}
				elseif($check_booking['count']==1)
				{
					if($this->session->userdata('UserData'))
					{
						$res = array('status' => 'waiting', 'msg' => 'Booking Full, Only Waiting list Available','isLogin' =>'true');
					}
					else
					{
						$res = array('status' => 'waiting', 'msg' => 'Booking Full, Only Waiting list Available','isLogin' =>'false');
					}
				}
				else
				{
					$res = array('status' => 'fail', 'type' => 'booking slot','msg' => 'Booking Slot Unavailable, Choose Another' );
				}	
			}
			else
			{
				$res = array('status' => 'fail','type' => 'doctor leave', 'msg' => 'Doctor Unavailable, Choose Another Date' );
			}
		}
		else
		{
			$res = array('status' => 'fail','type' => 'booking slot', 'msg' => 'Choose a valid Time Slot' );
		}
		//print_r($res);die();
		print json_encode($res);
	}

	/*FUNCTION : MARK BOOKING FOR A DOCTOR - DOCTOR SEARCH*/
   /*DESCRIPTION : Mark an entry in booking table and goes to payment page in confirm booking */
	public function markbooking()
	{
		if($this->session->userdata('UserData'))
		{
			$userdata = $this->session->userdata('UserData');
			if($userdata['type']=="PATIENT")
			{	
				/*CODE FOR DATA STARTS*/
				$now = new DateTime();
				$times = explode('-', $_POST['confirm-book-time']);	

				$offset = json_decode($_POST['offset']);
				$nowin_server = date("Y-m-d TH:i:s");
				if($offset->sign=='+')
				{
					$nowin_server_addoffset = date('Y-m-d H:i:s',strtotime('+'.$offset->hour.' hour +'.$offset->minute.' minutes',strtotime($nowin_server)));
				}
				elseif ($offset->sign=='-') 
				{
					$nowin_server_addoffset = date('Y-m-d H:i:s',strtotime('-'.$offset->hour.' hour -'.$offset->minute.' minutes',strtotime($nowin_server)));
				}
				
				$date = date('y-m-d');
				$book_start_time = strtotime($_POST['confirm-book-date'].' '.$times[0]);
				$book_end_time = strtotime($_POST['confirm-book-date'].' '.$times[1]);
				$doctor_price = $this->Search_doctor_model->getDoctorPrice($_POST['confirm-book-doctor']);
				$doctor_data = $this->Doctor_model->get_single_doctor($_POST['confirm-book-doctor']);

				$data = array('doctor_id' =>$_POST['confirm-book-doctor'] ,'clinic_id' =>$_POST['confirm-book-clinic'] ,'clinic_id' =>$_POST['confirm-book-clinic'],'patient_id' =>$userdata['id'] ,'date' =>strtotime($_POST['confirm-book-date']),'time' =>$_POST['confirm-book-time'],'amount'=>$doctor_price['price'],'requested_date'=>$now->getTimestamp(),'time_start'=>$book_start_time,'time_end'=>$book_end_time,'visit_type'=>0);

				if(isset($_POST['book-status'])&&$_POST['book-status']=="0")
				{
					$data['booking_status'] = 0;
				}
				else
				{
					$data['booking_status'] = 1;
				}
				$data['total_sum'] = $doctor_price['price'];
				if(($_POST['promocode-status']=='1') and ($_POST['promocode-name']!='0'))
				{
					$data['promo_name'] = $_POST['promocode-name'];
					$promo_value = $this->Search_doctor_model->get_promocode_value($_POST['promocode-name']);
					$offeramount = ($promo_value['amount']/100) * $doctor_price['price'];
					$data['promo_amount'] = $offeramount;
					$data['total_sum'] = $doctor_price['price'] - $offeramount;
				}
				/*CODE FOR DATA ENDS*/
				$return_inclusive = $this->Search_doctor_model->get_doc_retrun_inclusive($_POST['confirm-book-doctor']);

				
				if($return_inclusive['accept_return']=='1')
				{
					$check_previous_book = $this->Search_doctor_model->get_previous_book($_POST,$return_inclusive['return_timeperiod'],$userdata['id']);
					//print_r($check_previous_book);die();
					if($check_previous_book['visit_type']=='0' and $check_previous_book['free_visit_status']=='0') //Free Visit Found
					{
						
						$data['visit_type']=1; //New Booking is Free
						$data['payment_status'] = 1; //Setting payment done true
						$data['free_visit_status']=2; //Setting free status->not applicable
						$this->Search_doctor_model->mark_freevisit_status($check_previous_book['id']); //MARKING FREE VISIT STATUS OF PREVIOUS BOOKING TO USED

						
					}
					
				}

				$ipok_settings = $this->Home_model->get_ipok_settings();
				$data['ipok_fee'] = $ipok_settings['ipok_fee'];
				
				//print_r($check_return_book);
				//print_r($data);
				//die();
				$inserted_id = $this->Search_doctor_model->insertBooking($data); //MARK BOOKING

				if($data['visit_type']==1)
				{
					if($data['booking_status'] == 0)
					{
						/*CODE FOR SENTING WAITING LIST NOTIFICATION FOR FREE VISIT - PATIENT NOTIFICATION*/
						/*------------------------------------------------*/
						$text_pat = 'Your appointment was scheduled in the system as waiting, on '.date('d.m.Y',$book_start_time).' at '.date('H:i a',$book_start_time).', doctor '.$doctor_data['dr_name'];

						$notification_pat = array('patient_id' => $userdata['id'],'type'=>1,'message'=>$text_pat,'read_status'=>0,'time'=>strtotime($nowin_server),'booking_id' => $inserted_id);
						$patient_insert_id = $this->Home_model->insert_notification_patient($notification_pat);

						$fcm_user = $this->Home_model->get_patient_fcm($data['patient_id']);
						//print_r($fcm_user);
						if(!empty($fcm_user['fcm_token']))
						{
							//print_r($fcm_user['fcm_token']);die();
							$pat_push_obj['id'] = $patient_insert_id;
							$pat_push_obj['type'] = "Waiting List";
							$pat_push_obj['booking_id'] = $inserted_id;
							$pat_push_obj['booking_date'] = $data['date'];
							$pat_push_obj['doctor_id'] = $data['doctor_id'];
							$pat_push_obj['doctor_name'] = $doctor_data['dr_name'];
							$pat_push_obj['doctor_specialization'] = $doctor_data['dr_specialization'];
							$pat_push_obj['message'] = $text_pat;
							$pat_push_obj['time'] = strtotime($nowin_server);
							$pat_push_obj['to'] = $fcm_user['fcm_token'];
							$user_type = '1'; //patient push
							$push_status = push_sent($pat_push_obj,$user_type);
						}
						
						/*------------------------------------------------*/
					}
					else
					{
						/*CODE FOR SENTING NOTIFICATION FOR FREE VISIT - DOCTOR NOTIFICATION*/
						/*------------------------------------------------*/
						$text = 'A new appointment was scheduled in the system, on '.date('d.m.Y',$book_start_time).' at '.date('H:i a',$book_start_time).', patient '.$userdata['name'];

						$notification = array('doctor_id' => $data['doctor_id'],'type'=>2,'message'=>$text,'read_status'=>0,'time'=>strtotime($nowin_server) );
						$doctor_insert_id = $this->Home_model->insert_notification_doctor($notification);

						$fcm_doctor = $this->Home_model->get_doctor_fcm($data['doctor_id']);
						if(!empty($fcm_doctor['fcm_token']))
						{
							$doc_push_obj['id'] = $doctor_insert_id;
							$doc_push_obj['type'] = "New Consultation";
							$doc_push_obj['message'] =$text;
							$doc_push_obj['read_status'] = false;
							$doc_push_obj['to'] = $fcm_doctor['fcm_token'];
							$user_type = '2';
							$push_status = push_sent($doc_push_obj,$user_type);
						}
						/*------------------------------------------------*/

						/*CODE FOR SENTING NOTIFICATION FOR FREE VISIT - PATIENT NOTIFICATION*/
						/*------------------------------------------------*/
						$text_pat = 'Your appointment was scheduled in the system, on '.date('d.m.Y',$book_start_time).' at '.date('H:i a',$book_start_time).', doctor '.$doctor_data['dr_name'];

						$notification_pat = array('patient_id' => $userdata['id'],'type'=>0,'message'=>$text_pat,'read_status'=>0,'time'=>strtotime($nowin_server),'booking_id' => $inserted_id);
						$patient_insert_id = $this->Home_model->insert_notification_patient($notification_pat);

						$fcm_user = $this->Home_model->get_patient_fcm($data['patient_id']);
						//print_r($fcm_user);
						if(!empty($fcm_user['fcm_token']))
						{
							//print_r($fcm_user['fcm_token']);die();
							$pat_push_obj['id'] = $patient_insert_id;
							$pat_push_obj['type'] = "Consultation Confirmation";
							$pat_push_obj['booking_id'] = $inserted_id;
							$pat_push_obj['booking_date'] = $data['date'];
							$pat_push_obj['doctor_id'] = $data['doctor_id'];
							$pat_push_obj['doctor_name'] = $doctor_data['dr_name'];
							$pat_push_obj['doctor_specialization'] = $doctor_data['dr_specialization'];
							$pat_push_obj['message'] = $text_pat;
							$pat_push_obj['time'] = strtotime($nowin_server);
							$pat_push_obj['to'] = $fcm_user['fcm_token'];
							$user_type = '1'; //patient push
							$push_status = push_sent($pat_push_obj,$user_type);
						}
						
						/*------------------------------------------------*/
					}
					
				}

				$res = array('booking_id' =>$inserted_id , 'payment_required'=>$data['visit_type'],'booking_date'=>date('d/m/Y',strtotime($_POST['confirm-book-date'])),'booking_slot'=>$_POST['confirm-book-time']);
				print json_encode($res);
			}
		}
		
	}

	/*FUNCTION : PROMOCODE VALIDATION IN BOOKING MODULE - DOCTOR SEARCH*/
   /*DESCRIPTION : Function will check for validity of applied promocode,checks if its valid for passed doctor id*/
	public function promocode_validate()
	{
		//print_r($_POST);
		$validation = $this->Search_doctor_model->checkPromocode($_POST);
		$doc_list = explode(",",$validation['doctor_id']);
		if (in_array($_POST['doctorid'], $doc_list))
		  {
		  	$doctor_price = $this->Search_doctor_model->getDoctorPrice($_POST['doctorid']);
		  	$offeramount = ($validation['amount']/100) * $doctor_price['price'];
		  	$res = array('status' => 'success' ,'msg'=>'Promotion Applied','offeramount' =>$offeramount,'code'=>$validation['promo_name']);
 		  }
 		  else
 		  {
 		  	$res = array('status' => 'error','msg'=>'Invalid Promotion Code!' );
 		  }
 		print json_encode($res);
	}

	/*FUNCTION : PAYMENT CONTROLLER IN BOOKING MODULE - DOCTOR SEARCH*/
   /*DESCRIPTION : Function will update the payment in booking table for respective booking entry*/
	public function booking_payment()
	{
		$check_markbooking = $this->Search_doctor_model->checkBooking($_POST['booking_id']);
		//print_r($_POST);die();

		$nowin_server = date("Y-m-d TH:i:s");
		if($_POST['UTCoffset']['sign']=='+')
		{
			$nowin_server_addoffset = date('Y-m-d H:i:s',strtotime('+'.$_POST['UTCoffset']['hour'].' hour +'.$_POST['UTCoffset']['minute'].' minutes',strtotime($nowin_server)));
		}
		elseif ($_POST['UTCoffset']['sign']=='-') 
		{
			$nowin_server_addoffset = date('Y-m-d H:i:s',strtotime('-'.$_POST['UTCoffset']['hour'].' hour -'.$_POST['UTCoffset']['minute'].' minutes',strtotime($nowin_server)));
		}


		if($check_markbooking['count']==1)
		{
			/*CODE FOR DOCTOR NOTIFICATION ON CONFIRMED CONSULTATION*/
			$booking_details = $this->Search_doctor_model->get_booking_details($_POST['booking_id']);
			$patient_data = $this->Patient_model->get_single_patient($booking_details['patient_id']);
			$doctor_data = $this->Doctor_model->get_single_doctor($booking_details['doctor_id']);

			/*CODE FOR WALLET INSERTION*/
			/*------------------------------------------------*/
			$wallet = $this->Doctor_model->get_wallet_for_doctor($booking_details['doctor_id']);
			if(empty($wallet))
			{
				$wallet = array('reedem_earn' => 0,'future_earn' => 0 ,'total_earn' => 0 );
			}
			$earn = $booking_details['total_sum'] - (($booking_details['total_sum'] * $booking_details['ipok_fee'])/100);
			$wallet['future_earn'] = $wallet['future_earn'] + $earn;
		  	$wallet['total_earn'] = $wallet['total_earn'] + $earn;
		  	$this->Doctor_model->update_wallet($booking_details['doctor_id'],$wallet);
		  	/*------------------------------------------------*/

  			if($booking_details['booking_status'] == 0)
			{
				/*CODE FOR SENTING WAITING LIST NOTIFICATION FOR PAID VISIT - PATIENT NOTIFICATION*/
				/*------------------------------------------------*/
				$text_pat = 'Your appointment was scheduled in the system as waiting, on '.date('d.m.Y',$booking_details['time_start']).' at '.date('H:i a',$booking_details['time_start']).', doctor '.$doctor_data['dr_name'];

				$notification_pat = array('patient_id' => $booking_details['patient_id'],'type'=>0,'message'=>$text_pat,'read_status'=>0,'time'=>strtotime($nowin_server),'booking_id' =>$_POST['booking_id']);
				$patient_insert_id = $this->Home_model->insert_notification_patient($notification_pat);

				$fcm_user = $this->Home_model->get_patient_fcm($booking_details['patient_id']);
				//print_r($fcm_user);
				if(!empty($fcm_user['fcm_token']))
				{
					//print_r($fcm_user['fcm_token']);die();
					$pat_push_obj['id'] = $patient_insert_id;
					$pat_push_obj['type'] = "Waiting List";
					$pat_push_obj['booking_id'] = $_POST['booking_id'];
					$pat_push_obj['booking_date'] = $booking_details['date'];
					$pat_push_obj['doctor_id'] = $booking_details['doctor_id'];
					$pat_push_obj['doctor_name'] = $doctor_data['dr_name'];
					$pat_push_obj['doctor_specialization'] = $doctor_data['dr_specialization'];
					$pat_push_obj['message'] = $text_pat;
					$pat_push_obj['time'] = strtotime($nowin_server);
					$pat_push_obj['to'] = $fcm_user['fcm_token'];
					$user_type = '1'; //patient push
					$push_status = push_sent($pat_push_obj,$user_type);
				}
				/*------------------------------------------------*/

			}
			else
			{
		  	/*CODE FOR SENTING NOTIFICATION - DOCTOR NOTIFICATION*/
		  	/*------------------------------------------------*/
			$text = 'A new appointment was scheduled in the system, on '.date('d.m.Y',$booking_details['time_start']).' at '.date('H:i a',$booking_details['time_start']).', patient '.$patient_data['pt_name'];

			$notification = array('doctor_id' => $booking_details['doctor_id'],'type'=>2,'message'=>$text,'read_status'=>0,'time'=>strtotime($nowin_server) );
			$doctor_insert_id = $this->Home_model->insert_notification_doctor($notification);

			$fcm_doctor = $this->Home_model->get_doctor_fcm($booking_details['doctor_id']);
			if(!empty($fcm_doctor['fcm_token']))
			{
				$doc_push_obj['id'] = $doctor_insert_id;
				$doc_push_obj['type'] = "New Consultation";
				$doc_push_obj['message'] =$text;
				$doc_push_obj['read_status'] = false;
				$doc_push_obj['to'] = $fcm_doctor['fcm_token'];
				$user_type = '2';
				$push_status = push_sent($doc_push_obj,$user_type);
			}
			/*------------------------------------------------*/

			/*CODE FOR SENTING NOTIFICATION  - PATIENT NOTIFICATION*/
			/*------------------------------------------------*/
			$text_pat = 'Your appointment was scheduled in the system, on '.date('d.m.Y',$booking_details['time_start']).' at '.date('H:i a',$booking_details['time_start']).', doctor '.$doctor_data['dr_name'];

			$notification_pat = array('patient_id' => $booking_details['patient_id'],'type'=>0,'message'=>$text_pat,'read_status'=>0,'time'=>strtotime($nowin_server),'booking_id' => $_POST['booking_id']);
			$patient_insert_id = $this->Home_model->insert_notification_patient($notification_pat);

			$fcm_user = $this->Home_model->get_patient_fcm($booking_details['patient_id']);
			//print_r($fcm_user);
			if(!empty($fcm_user['fcm_token']))
			{
				//print_r($fcm_user['fcm_token']);die();
				$pat_push_obj['id'] = $patient_insert_id;
				$pat_push_obj['type'] = "Consultation Confirmation";
				$pat_push_obj['booking_id'] = $_POST['booking_id'];
				$pat_push_obj['booking_date'] = $booking_details['date'];
				$pat_push_obj['doctor_id'] = $booking_details['doctor_id'];
				$pat_push_obj['doctor_name'] = $doctor_data['dr_name'];
				$pat_push_obj['doctor_specialization'] = $doctor_data['dr_specialization'];
				$pat_push_obj['message'] = $text_pat;
				$pat_push_obj['time'] = strtotime($nowin_server);
				$pat_push_obj['to'] = $fcm_user['fcm_token'];
				$user_type = '1'; //patient push
				$push_status = push_sent($pat_push_obj,$user_type);
			}
			/*------------------------------------------------*/
			}

			$result = $this->Search_doctor_model->set_payment_status($_POST['booking_id']);
			$res = array('status' => 'success', 'payment_status'=>'1','message'=>'payment success','booking_date'=>date('d/m/Y',$check_markbooking['booking_date']),'booking_slot'=>$check_markbooking['booking_slot']);

			
		}
		else
		{
			$res = array('status' => 'fail', 'payment_status'=>'0','message'=>'nobooking/alreadypaid');
		}
		//print_r($res);die();
		print json_encode($res);
	}

	/*FUNCTION : FETCH APPIONTMENTS IN DOCTOR PROFILE VIEW - DOCTOR SEARCH*/
   /*DESCRIPTION : Fetching all next appointments*/
	public function doctor_complete_profile_appointments_week_next()
	{
		$day_appointments = array();
		
		for ($i=0; $i < 7; $i++) 
		{ 
			$day = date('D',strtotime('+'.$i.'day', strtotime($_POST['enddate'])));
			$dayno = date('d',strtotime('+'.$i.'day', strtotime($_POST['enddate'])));
			$week_appointments[$i] = $this->Doctor_model->get_doctor_appointments_week($_POST['doctor_id'],date('y-m-d',strtotime('+'.$i.'day', strtotime($_POST['enddate']))));      
		}
		//print_r($week_appointments);
		$template['week_appointments'] = $week_appointments;
		$template['start_day'] = $_POST['enddate'];
		$template['doctorid'] = $_POST['doctor_id'];
		$this->load->view('search_doctor_complete_profile_appointments_week',$template);
	}

	/*FUNCTION : FETCH APPIONTMENTS IN DOCTOR PROFILE VIEW - DOCTOR SEARCH*/
   /*DESCRIPTION : Fetching all prev appointments*/
	public function doctor_complete_profile_appointments_week_prev()
	{
		$day_appointments = array();
		for ($i=6; $i >=0; $i--) 
		{ /*date('y-m-d', strtotime('-7 days'))*/
			$day = date('D',strtotime('+'.$i.'day', strtotime($_POST['startdate'])));
			$dayno = date('d',strtotime('+'.$i.'day', strtotime($_POST['startdate'])));
			$week_appointments[$i] = $this->Doctor_model->get_doctor_appointments_week($_POST['doctor_id'],date('y-m-d',strtotime('-'.$i.'day', strtotime($_POST['startdate'],strtotime('-7 days')))));
			/*print_r(date('y-m-d',strtotime('-'.$i.'day', strtotime($_POST['startdate']))));      */
		}
		//print_r($week_appointments);die();
		$template['week_appointments'] = $week_appointments;
		$template['start_day'] = date('y-m-d',strtotime('-6day', strtotime($_POST['startdate'])));
		//print_r($template);die();
		$template['doctorid'] = $_POST['doctor_id'];
		$this->load->view('search_doctor_complete_profile_appointments_week',$template);
	}
	
	
	
	
}