HEX
Server: Apache/2.4.41 (Amazon) OpenSSL/1.0.2k-fips PHP/5.6.40
System: Linux ip-172-31-40-18 4.14.146-93.123.amzn1.x86_64 #1 SMP Tue Sep 24 00:45:23 UTC 2019 x86_64
User: apache (48)
PHP: 5.6.40
Disabled: NONE
Upload Files
File: //var/www/html/qcr24/app/application/controllers/admin/Reservation.php
<?php
defined('BASEPATH') or exit('No direct script access allowed');

class Reservation extends MY_Controller
{
	private $menu_id;
	public function __construct()
	{
		parent::__construct();
		$this->load->model('admin/mreservation');
		$this->load->model('admin/msportsfacilitiesrate');
		$this->load->model('admin/mproperty'); 
		$this->menu_id = 24;

	}
	/**
	 * Index Page for this controller.
	 *
	 * Maps to the following URL
	 * 		http://example.com/index.php/welcome
	 *	- or -
	 * 		http://example.com/index.php/welcome/index
	 *	- or -
	 * Since this controller is set as the default controller in
	 * config/routes.php, it's displayed at http://example.com/
	 *
	 * So any other public methods not prefixed with an underscore will
	 * map to /index.php/welcome/<method_name>
	 * @see https://codeigniter.com/user_guide/general/urls.html
	 */
	public function index()
	{
		$data = array('menu_id'=> $this->menu_id);
		$where = array();
		$data['start_date']= $this->input->post('start_date'); 
		$data['end_date']= $this->input->post('end_date');
		if($this->input->post()){
			if($this->input->post('start_date')){
				$where['bh.created_ts >='] = date('Y-m-d 0:0:1', strtotime($this->input->post('start_date')));
			}
			if($this->input->post('end_date')){
				$where['bh.created_ts <='] = date('Y-m-d 23:59:50', strtotime($this->input->post('end_date')));
			}
		}
		$order_by = 'bh.booking_id DESC';
		$data['reservations'] = array();
		if($this->admin_session_data['role_id'] == ROLE_SUPERADMIN || check_user_permission($data['menu_id'], 'delete_flag')){
			$data['reservations'] = $this->mreservation->get($where,$order_by);
		}
		// echo $this->db->last_query(); 
		//echo '<pre>';
		//print_r($data['reservations']);die;
		$data['content'] = 'admin/reservation/list';
		$this->load->view('admin/layouts/index', $data); 
	}
	public function register()
	{
		$data = array('menu_id'=> $this->menu_id);
		$reservations = array();
		$data['content'] = 'admin/reservation/register'; 
		$request_data = array();


		$data['properties'] = $this->admin_session_data['role_id'] == ROLE_SUPERADMIN ? $this->mproperty->get_property() : $this->mproperty->get_user_property_details($this->admin_session_data['user_id']);
		$request_data['property_id'] = implode(",",array_column($data['properties'], 'property_id'));

		if(!empty($this->input->post())){
			$request_data['booking_status'] = $this->input->post('booking_status');
			$request_data['property_id'] = $this->input->post('property_id');
		}

		$reservation_details = array();
		if($this->admin_session_data['role_id'] == ROLE_SUPERADMIN || check_user_permission($data['menu_id'], 'delete_flag')){
			$reservation_details = $this->mreservation->get_reservation_booking_details($request_data);
		} 
		//print_r($reservation_details);die;
		if(!empty($reservation_details)){
			foreach ($reservation_details as $key => $reservation) { 
				
				$description = '';
				$reservations[$key]['title'] = $reservation["property_name"];
				$reservations[$key]['start'] = date('Y-m-d',strtotime($reservation["check_in"]));
				$reservations[$key]['end'] = date('Y-m-d',strtotime($reservation["check_out"]));
				
				

				$reservations[$key]['backgroundColor'] = ($reservation['booking_status'] == 'I') ? 'blue' : (($reservation['booking_status'] == 'C')?'red':(($reservation['booking_status'] == 'A')?'green':'orange')); 
				$reservations[$key]['borderColor'] = ($reservation['booking_status'] == 'I') ? 'blue' : (($reservation['booking_status'] == 'C')?'red':(($reservation['booking_status'] == 'A')?'green':'orange')); 
				
				$reservations[$key]['textColor'] = "white";
				//$reservations[$key]['display'] = "background";
				$reservations[$key]['eventColor'] = ($reservation['booking_status'] == 'I') ? 'blue' : (($reservation['booking_status'] == 'C')?'red':(($reservation['booking_status'] == 'A')?'green':'orange')); 
				

				$description .= 'Booking No. : '.$reservation['booking_no'];
				$description .= '<br> Booking For : '.$reservation["booking_for"];
				$description .= '<br> Customer : '.$reservation["customer_title"].' '.$reservation["first_name"].' '.$reservation["last_name"].'';
				$description .= '<br> Email : '.$reservation["email"];
				$description .= '<br> Contact No : '.$reservation["mobile"];
				$description .= '<br> Total Rooms : '.$reservation["room_count"];
				$description .= '<br> Total Amount : '.$reservation["net_payable_amount"]; 
				$description .= '<br> Status : '.(($reservation['booking_status'] == 'I') ? 'Initiated' : (($reservation['booking_status'] == 'C')?'Cancelled':(($reservation['booking_status'] == 'A')?'Approved':'Checked Out')));

				$reservations[$key]['description'] = $description;  
				$reservations[$key]['booking_status'] = $reservation['booking_status']; 

			
				
			
			}
		}
        $data['reservations'] = $reservations;
		$data['request_data'] = $request_data;

		$this->load->view('admin/layouts/index', $data);
	}
	public function view_details($booking_id)
	{
		$data = array();
		$data['reservation'] = $this->mreservation->get_reservation_details($booking_id);
		$data['reservation_details'] = $this->mreservation->get_sports_facilities_booking_details($booking_id);
		$data['content'] = 'admin/reservation/view_details';
		$this->load->view('admin/layouts/index', $data);
	}

	public function payment($booking_id)
	{
		$data = array();
		$data['reservation'] = $this->mreservation->get_reservation_details($booking_id);
		$data['reservation_details'] = $this->mreservation->get_sports_facilities_booking_details($booking_id);
		$data['content'] = 'admin/reservation/payment';
		$this->load->view('admin/layouts/index', $data);
	}

	
	public function submitreservation()
	{
		//echo '<pre>';print_r($this->input->post());die;
		
		if($this->input->post('status') == 4){
			
			$condition = array('booking_id'=>$this->input->post('booking_id'));
			$data= array(
				'status' => $this->input->post('status'),
				'cancellation_reason'=>$this->input->post('cancellation_reason'),
				'cancelled_by' => $this->admin_session_data['user_id'],
				'cancelled_ts' => date('Y-m-d H:i:s'),
				'updated_at' => date('Y-m-d H:i:s')
				
			);
			$result = $this->mreservation->update_reservation($data,$condition);
		} else {

			$data = array(
				'discount' => $this->input->post('discount'),
				'amount_after_discount' => $this->input->post('amount_after_discount'),
				'gst_percentage' => $this->input->post('gst_percentage'),
				'gst_amount' => $this->input->post('gst_amount'),
				'net_amount' => $this->input->post('net_amount'),
				'remarks' => $this->input->post('remarks'),
				'status' => $this->input->post('status'),
				'updated_at' => date('Y-m-d H:i:s')
			);

			

			if($this->input->post('discount') > 0){

				$data['discount_given_by'] = $this->admin_session_data['user_id'];
				$data['discount_given_ts'] = date('Y-m-d H:i:s');
				
			}
			if($this->input->post('status') == 1){ 

				$data['approval_valid_till'] = date('Y-m-d H:i:59',strtotime($this->input->post('approval_valid_till')));
				$data['payment_method'] = $this->input->post('payment_method');
				$data['approved_by'] = $this->admin_session_data['user_id'];
				$data['approved_ts'] = date('Y-m-d H:i:s');


			} elseif($this->input->post('status') == 2){
				
				$data['rejection_reason'] = $this->input->post('rejection_reason');
				$data['rejected_by'] = $this->admin_session_data['user_id'];
				$data['rejected_ts'] = date('Y-m-d H:i:s');

			}

			if($this->input->post('net_amount') == 0){
				$data['status'] = '3';
				$data['payment_method'] = 'Offline';

			}

			if($this->input->post('organization_type') == 5){
				
				$data['payment_method'] = 'Offline';

			}

			

			$condition = array('booking_id'=>$this->input->post('booking_id'));

			$result = $this->mreservation->update_reservation($data,$condition);

		}
			
				
			if ($result) {
				$this->session->set_flashdata('success_msg', 'Booking Updated Successfully');
				redirect("admin/reservation");
			}
	}


	public function submitpayment()
	{
		//echo '<pre>';print_r($this->input->post());die;
		
		
			$data = array(
				'booking_id' => $this->input->post('booking_id'),
				'check_draft_no' => $this->input->post('check_draft_no'),
				'branch_name' => $this->input->post('branch_name'),
				'bank_name' => $this->input->post('bank_name'),
				'check_draft_date' => date('Y-m-d',strtotime($this->input->post('check_draft_date'))),
				'amount' => $this->input->post('net_amount'),
				'remarks' => $this->input->post('remarks'),
				'created_by' => $this->admin_session_data['user_id'],
				'created_ts' => date('Y-m-d H:i:s')
			);

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

			$result = $this->db->update('sports_facilities_booking', array('status'=>'3'), array('booking_id' => $this->input->post('booking_id')));
			
			if ($result) {
				$this->session->set_flashdata('success_msg', 'Payment Collected Successfully');
				redirect("admin/reservation");
			}
	}

	public function check_not_responded_booking()
	{
		
		$not_responded_booking = $this->mreservation->check_not_responded_booking();
		if(!empty($not_responded_booking)){
			
			foreach($not_responded_booking as $not_responded){
				$updateArray[] = array(
					'status'=>'5',
					'not_responded_ts' => date('Y-m-d H:i:s'),
					'booking_id' => $not_responded['booking_id']
				);
			}

			$this->db->update_batch('sports_facilities_booking',$updateArray, 'booking_id'); 
		}

		echo 'Executed Successfully';die;
		
	}

	public function checkin($booking_id)
	{
		$data = array();
		$data['booking_details'] = $this->mreservation->get_booking_details($booking_id);
		$data['content'] = 'admin/reservation/checkin';
		$this->load->view('admin/layouts/index', $data);
	}

	public function checkin_details($booking_id)
	{
		$data = array();
		$data['booking_details'] = $this->mreservation->get_booking_details_cdetails($booking_id);
		//$data['reservation_details'] = $this->mreservation->get_sports_facilities_booking_details($booking_id);
		$data['content'] = 'admin/reservation/checkin_details';
		$this->load->view('admin/layouts/index', $data);
	}

	public function checkin_submit()
	{
		
		//echo "<pre>"; print_r($this->input->post()); die;

		$booking_id = $this->input->post('booking_id');
		$is_hall = $this->input->post('is_hall');

		$check_checkin = $this->mreservation->check_checkin($booking_id);

		if($check_checkin == TRUE){

			$this->session->set_flashdata('success_msg', 'Successfully Checked In.');
			redirect("admin/reservation/checkin_guest/".$booking_id);

			/*if($is_hall == 1){
				$this->session->set_flashdata('success_msg', 'Successfully Checked In.');
				redirect("admin/reservation");
			} else {
				$this->session->set_flashdata('success_msg', 'Successfully Checked In.');
				redirect("admin/reservation/checkin_guest/".$booking_id);
			}*/

		} else {

			$booking_details = $this->mreservation->get_booking_headers($booking_id);

			$data_header = array();

			$data_header['booking_id'] = $booking_details['booking_id'];
			$data_header['property_id'] = $booking_details['property_id'];
			$data_header['room_count'] = $booking_details['room_count'];
			$data_header['customer_id'] = $booking_details['customer_id'];
			$data_header['check_in'] = $booking_details['check_in'];
			$data_header['check_out'] = $booking_details['check_out'];
			$data_header['room_base_price'] = $booking_details['room_base_price'];
			$data_header['room_total_discount'] = $booking_details['room_total_discount'];
			$data_header['room_price_before_tax'] = $booking_details['room_price_before_tax'];
			$data_header['room_total_cgst'] = $booking_details['room_total_cgst'];
			$data_header['room_total_sgst'] = $booking_details['room_total_sgst'];
			$data_header['room_total_igst'] = $booking_details['room_total_igst'];
			$data_header['room_payable_amount'] = $booking_details['room_payable_amount'];
			$data_header['net_payable_amount'] = $booking_details['net_payable_amount'];
			$data_header['created_by'] = $this->session->admin['user_id'];
			$data_header['created_ts'] = date('Y-m-d H:i:s');
			$data_header['updated_by'] = $this->session->admin['user_id'];

			//Need to insert data in checkin_header
			$checkin_id = $this->mreservation->insert_checkin_headers($data_header);

			if($checkin_id){

				$booking_details_id = $this->input->post('selected_checkin');
				$room_number = $this->input->post('room_number');

				$data_details = array();

				$i = 0;
				foreach($booking_details_id as $bd_id){

					$cdetailsArr = array();

					$b_details = $this->mreservation->get_bookingdetails($bd_id);

					$cdetailsArr['check_in_id'] = $checkin_id;
					$cdetailsArr['booking_detail_id'] = $bd_id;
					$cdetailsArr['room_no'] = $room_number[$i];
					$cdetailsArr['in_date'] = $b_details['in_date'];
					$cdetailsArr['out_date'] = $b_details['out_date'];
					//$data_details['actual_checkout_time'] = '';
					//$data_details['chargeable_days'] = '';
					$cdetailsArr['adults'] = $b_details['adults'];
					$cdetailsArr['children'] = $b_details['children'];
					$cdetailsArr['infants'] = $b_details['infants'];
					$cdetailsArr['extra_bed_cnt'] = $b_details['extra_bed_cnt'];
					$cdetailsArr['allotment_status'] = 'I';
					//$data_details['cancelled_by'] = $b_details['booking_id'];
					//$data_details['cancelled_date'] = $b_details['booking_id'];
					$cdetailsArr['extra_bed_rate'] = $b_details['extra_bed_rate'];
					$cdetailsArr['room_rate'] = $b_details['room_rate'];
					$cdetailsArr['room_charge'] = $b_details['room_charge'];
					$cdetailsArr['room_discount_percent'] = $b_details['room_discount_percent'];
					$cdetailsArr['room_discount_amount'] = $b_details['room_discount_amount'];
					$cdetailsArr['room_taxable_amount'] = $b_details['room_taxable_amount'];
					$cdetailsArr['room_cgst'] = $b_details['room_cgst'];
					$cdetailsArr['room_sgst'] = $b_details['room_sgst'];
					$cdetailsArr['room_igst'] = $b_details['room_igst'];
					$cdetailsArr['room_cgst_percent'] = $b_details['room_cgst_percent'];
					$cdetailsArr['room_sgst_percent'] = $b_details['room_sgst_percent'];
					$cdetailsArr['room_igst_percent'] = $b_details['room_igst_percent'];
					$cdetailsArr['room_net_amount'] = $b_details['room_net_amount'];
					
					$data_details[] = $cdetailsArr;

					$i++;

				}

				//Need to insert data in checkin_details
				$this->mreservation->insert_checkin_details($data_details, $is_hall, $booking_id);

				if($is_hall == 1){
					$this->session->set_flashdata('success_msg', 'Successfully Checked In.');
					redirect("admin/reservation");
				} else {
					$this->session->set_flashdata('success_msg', 'Successfully Checked In.');
					redirect("admin/reservation/checkin_guest/".$booking_id);
				}			
				

			} else {
				$this->session->set_flashdata('error_msg', 'Something is wrong. Try again.');
				redirect("admin/reservation/checkin/".$booking_id);
			}

		}

		
	}


	public function checkin_guest($booking_id)
	{
		$data = array();
		
		$data['booking_details'] = $this->mreservation->guest_booking_details($booking_id);	
		$data['booking_id'] = $booking_id;	
		$data['content'] = 'admin/reservation/checkin_guest';
		$this->load->view('admin/layouts/index', $data);
	}


	public function checkin_guest_submit()
	{

		//echo "<pre>"; print_r($this->input->post()); die;

		$booking_id = $this->input->post('booking_id');
		$checkin_details_id = $this->input->post('checkin_details_id');

		$data_details = array();

		$i = 0;
		foreach($checkin_details_id as $checkin_id){

			$cdetailsArr = array();

			$from = new DateTime($this->input->post('guest_dob')[$i]);
			$to   = new DateTime('today');
			$age = $from->diff($to)->y;

			$cdetailsArr['check_in_detail_id'] = $checkin_id;
			$cdetailsArr['name'] = $this->input->post('guest_name')[$i];
			$cdetailsArr['dob'] = $this->input->post('guest_dob')[$i];
			$cdetailsArr['age'] = $age;
			$cdetailsArr['gender'] = $this->input->post('guest_gender')[$i];
			$cdetailsArr['address'] = $this->input->post('guest_address')[$i];
			$cdetailsArr['relation'] = $this->input->post('guest_relation')[$i];
			$cdetailsArr['aniversary_date'] = $this->input->post('guest_aniversary')[$i];
			$cdetailsArr['phone'] = $this->input->post('guest_contact')[$i];
			$cdetailsArr['coming_from'] = $this->input->post('guest_from')[$i];
			$cdetailsArr['going_to'] = $this->input->post('guest_to')[$i];
			$cdetailsArr['purpose'] = $this->input->post('guest_purpose')[$i];
			$cdetailsArr['document_type'] = $this->input->post('guest_id')[$i];
			$cdetailsArr['document_no'] = $this->input->post('guest_id_number')[$i];
			$cdetailsArr['guest_type'] = $this->input->post('select_primary_hidden')[$i];
			$cdetailsArr['check_in_date'] = $this->input->post('checkin_date')[$i];
			$cdetailsArr['check_out_date'] = $this->input->post('checkout_date')[$i];
			$cdetailsArr['created_by'] = $this->session->admin['user_id'];
			$cdetailsArr['created_ts'] = date('Y-m-d H:i:s');
			$cdetailsArr['updated_ts'] = $this->session->admin['user_id'];

			$config[ 'upload_path' ] = './public/guest_id';
			$config[ 'allowed_types' ] = '*';
			$config['file_name'] = "id_".$_FILES["guest_id_file"]['name'][$i];
			$this->load->library( 'upload', $config );
			$this->upload->initialize( $config );
			
			$files = $_FILES;
			$_FILES['guest_id_file[]']['name']= $files['guest_id_file']['name'][$i];	
			$_FILES['guest_id_file[]']['type']= $files['guest_id_file']['type'][$i];	
			$_FILES['guest_id_file[]']['tmp_name']= $files['guest_id_file']['tmp_name'][$i];	
			$_FILES['guest_id_file[]']['error']= $files['guest_id_file']['error'][$i];	
			$_FILES['guest_id_file[]']['size']= $files['guest_id_file']['size'][$i];
			
			if ( $this->upload->do_upload( 'guest_id_file[]' ) ) {
				
				$cimgp = $this->upload->data()[ 'file_name' ];
				$cdetailsArr['doc_file'] = $cimgp;
						
			}
			
			$data_details[] = $cdetailsArr;

			$i++;

		}

		//echo "<pre>"; print_r(array_unique($data_details)); die;
		//echo "<pre>"; print_r($data_details); die;
		
		$this->mreservation->insert_guest_details($data_details, $booking_id);

		$this->session->set_flashdata('success_msg', 'Guests are successfully Submitted.');
		redirect("admin/reservation");

	}

	public function checkout_submit()
	{
		$data = array();

		$data['booking_id'] = $this->input->post('getBookingid');
		$data['booking_details_id'] = $this->input->post('getDetailsid');
		$data['actual_checkout_time'] = date('Y-m-d H:i:s');

		$result = $this->mreservation->checkout_submit($data);

		if($result){
		
			$return_data = array("status"=> true);
			echo json_encode($return_data);

		} else {
			echo 0;
		}

	}


	public function checkin_guest_details($booking_details_id)
	{
		$data = array();
		
		$data['booking_details'] = $this->mreservation->checkin_guest_details($booking_details_id);		
		$data['content'] = 'admin/reservation/checkin_guest_details';
		$this->load->view('admin/layouts/index', $data);
	}

	
	

}