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/AccommodationBlock.php
<?php
defined('BASEPATH') or exit('No direct script access allowed');

class AccommodationBlock extends MY_Controller
{

	public function __construct()
	{
		parent::__construct();
		$this->load->model('admin/Properties');
		$this->load->model('admin/mproperty');
		$this->load->model('admin/maccommodation');
		$this->load->model('admin/maccommodationblock');
	}
	/**
	 * 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'=> 25);
		if($this->admin_session_data['role_id'] == ROLE_SUPERADMIN){
			$data['accommodations'] = $this->maccommodationblock->get();
		}else{
			$data['accommodations'] = array();
			if(check_user_permission($data['menu_id'], 'delete_flag')){
				$parent_properties = $this->mproperty->get_user_property_details($this->admin_session_data['user_id']);
				$parent_properties = !empty($parent_properties) ? array_column($parent_properties, 'property_id') : array();
				if(!empty($parent_properties)){
					$data['accommodations'] = $this->maccommodationblock->get_accommodation_block_list_property_id($parent_properties);
				}
			}
		}
		$data['content'] = 'admin/accommodation-block/index';
		$this->load->view('admin/layouts/index', $data);
	}

	public function add($pre_data = array())
	{
		$data = array();
		// $data['properties'] = $this->Properties->get();
		$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']);
		$data['content'] = 'admin/accommodation-block/add';
		$this->load->view('admin/layouts/index', $data);
	}

	public function edit($id)
	{
		$data = array();
		$data['accommodation'] = $this->maccommodationblock->get(array('blocked_id' => $id));
		$data['accommodation'] = $data['accommodation'][0];
		// $data['properties'] = $this->Properties->get();
		$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']);
		$data['content'] = 'admin/accommodation-block/edit';
		$this->load->view('admin/layouts/index', $data);
	}

	public function save()
	{
		$from_date = $this->input->post('start_date');
		$to_date = $this->input->post('end_date');
		$accommodation_id = $this->input->post('accommodation_id');
		$property_id = $this->input->post('property_id');
		$no_of_room = !empty($this->input->post('room')) ? $this->input->post('room') : 0;
		if($from_date > $to_date){
			echo json_encode(array('success'=> FALSE, 'message'=> 'Sorry!!, To date must be grater than Start date.'));
			exit;
		}
		if(empty($property_id)){
			echo json_encode(array('success'=> FALSE, 'message'=> 'Sorry!!, Property id is required.'));
			exit;
		}
		if($accommodation_id != 'all' && $accommodation_id<=0){
			echo json_encode(array('success'=> FALSE, 'message'=> 'Sorry!!, Please input a valid accommodation.'));
			exit;
		}
		// if try to block for a selected accommodation
		if($accommodation_id != 'all' && $accommodation_id >0){
			// $accommodation_list = $this->maccommodation->get_accommodation_list_property_id($property_id);
			/*
				*call get_property_accomm_availability_proc(property_id, accommodation_id, 'from_date', 'to_date');
				** accommodation_id===0 [get all]
			*/
			$accommodation_list = $this->maccommodation->get_property_accomm_availability($property_id, $accommodation_id, $from_date, $to_date);
			mysqli_next_result( $this->db->conn_id );
			// print_r($accommodation_list);
			if(!empty($accommodation_list)){
				foreach($accommodation_list as $accommodation){
					if($accommodation['accommodation_id'] == $accommodation_id){
						// echo $no_of_room .'>'. $accommodation['no_of_accomm'];
						if($no_of_room > $accommodation['available_room_cnt']){
							echo json_encode(array('success'=> FALSE, 'message'=> 'Sorry!!, Maximum room/s available-'.$accommodation['available_room_cnt']));
							exit;
						}
					}
				}
			}
		}
		// if try to block for a selected accommodation
		if($accommodation_id == 'all'){
			/*
				*call get_property_accomm_availability_proc(property_id, accommodation_id, 'from_date', 'to_date');
				** accommodation_id===0 [get all]
			*/
			// echo '<pre>';
			$accommodation_list = $this->maccommodation->get_property_accomm_availability($property_id, 0, $from_date, $to_date);
			mysqli_next_result( $this->db->conn_id );
			// print_r($accommodation_list);
			// print_r($accommodation_list);
			$is_accommodation_booked = FALSE;
			if(!empty($accommodation_list)){
				foreach($accommodation_list as $accommodation){
					if($accommodation['booked_room_cnt'] >0 ){
						$is_accommodation_booked = TRUE;
					}
				}
			}
			if($is_accommodation_booked){
				echo json_encode(array('success'=> FALSE, 'message'=> 'Sorry!!, All accommodations are not available for this property.'));
				exit;
			}
		}
		$data = array(
			'property_id' => $property_id,
			'accommodation_id' => $accommodation_id=='all'?0:$accommodation_id,
			'no_of_accommodation' => $no_of_room,
			'from_date' => $from_date,
			'to_date' => $to_date,
			'remarks' => !empty($this->input->post('remarks')) ? $this->input->post('remarks') : '',
		);
		// print_r($data);
		$result = $this->maccommodationblock->add($data);
			
		if ($result) {
			$this->session->set_flashdata('success_msg', 'Accommodation Block Added Successfully.');
			echo json_encode(array('success'=> TRUE, 'message'=> 'Accommodation Block Added Successfully.'));
			exit;
		}else{
			$this->session->set_flashdata('error_msg', 'Unable to add Accommodation Block.');
			echo json_encode(array('success'=> FALSE, 'message'=> 'Unable to add Accommodation Block.'));
			exit;
		}
	}

	public function update($id = '')
	{
		$from_date = $this->input->post('start_date');
		$to_date = $this->input->post('end_date');
		$accommodation_id = $this->input->post('accommodation_id');
		$property_id = $this->input->post('property_id');
		$no_of_room = !empty($this->input->post('room')) ? $this->input->post('room') : 0;
		if($from_date > $to_date){
			echo json_encode(array('success'=> FALSE, 'message'=> 'Sorry!!, To date must be grater than Start date.'));
			exit;
		}
		if(empty($property_id)){
			echo json_encode(array('success'=> FALSE, 'message'=> 'Sorry!!, Property id is required.'));
			exit;
		}
		if($accommodation_id != 'all' && $accommodation_id<=0){
			echo json_encode(array('success'=> FALSE, 'message'=> 'Sorry!!, Please input a valid accommodation.'));
			exit;
		}
		// if try to block for a selected accommodation
		// if try to block for a selected accommodation
		if($accommodation_id != 'all' && $accommodation_id >0){
			// $accommodation_list = $this->maccommodation->get_accommodation_list_property_id($property_id);
			/*
				*call get_property_accomm_availability_proc(property_id, accommodation_id, 'from_date', 'to_date');
				** accommodation_id===0 [get all]
			*/
			$accommodation_list = $this->maccommodation->get_property_accomm_availability($property_id, $accommodation_id, $from_date, $to_date);
			mysqli_next_result( $this->db->conn_id );
			if(!empty($accommodation_list)){
				foreach($accommodation_list as $accommodation){
					if($accommodation['accommodation_id'] == $accommodation_id){
						// echo $no_of_room .'>'. $accommodation['no_of_accomm'];
						if($no_of_room > $accommodation['available_room_cnt']){
							echo json_encode(array('success'=> FALSE, 'message'=> 'Sorry!!, Maximum room/s available-'.$accommodation['available_room_cnt']));
							exit;
						}
					}
				}
			}
		}
		// if try to block for a selected accommodation
		if($accommodation_id == 'all'){
			/*
				*call get_property_accomm_availability_proc(property_id, accommodation_id, 'from_date', 'to_date');
				** accommodation_id===0 [get all]
			*/
			// echo '<pre>';
			$accommodation_list = $this->maccommodation->get_property_accomm_availability($property_id, 0, $from_date, $to_date);
			mysqli_next_result( $this->db->conn_id );
			// print_r($accommodation_list);
			$is_accommodation_booked = FALSE;
			if(!empty($accommodation_list)){
				foreach($accommodation_list as $accommodation){
					if($accommodation['booked_room_cnt'] >0 ){
						$is_accommodation_booked = TRUE;
					}
				}
			}
			if($is_accommodation_booked){
				echo json_encode(array('success'=> FALSE, 'message'=> 'Sorry!!, All accommodations are not available for this property.'));
				exit;
			}
		}
		$data = array(
			'property_id' => $property_id,
			'accommodation_id' => $accommodation_id=='all'?0:$accommodation_id,
			'no_of_accommodation' => $no_of_room,
			'from_date' => $from_date,
			'to_date' => $to_date,
			'remarks' => !empty($this->input->post('remarks')) ? $this->input->post('remarks') : '',
		);
		$result = $this->maccommodationblock->update($id, $data);
			
		if ($result) {
			$this->session->set_flashdata('success_msg', 'Accommodation Block Updated Successfully.');
			echo json_encode(array('success'=> TRUE, 'message'=> 'Accommodation Block Updated Successfully.'));
			exit;
		}else{
			$this->session->set_flashdata('error_msg', 'Unable to Updated Accommodation Block.');
			echo json_encode(array('success'=> FALSE, 'message'=> 'Unable to Updated Accommodation Block.'));
			exit;
		}
	}
	
	public function delete($id)
	{
		$data = array(
			'is_active' => 2,
			'updated_by' => $this->admin_session_data['user_id'],
			'updated_ts' => date('Y-m-d H:i:s')
		);
		$result = '';
		// $result = $this->maccommodationblock->update($id, $data);
			
		if ($result) {
			$this->session->set_flashdata('success_msg', 'Accommodation Block Deleted Successfully');
		}else{
			$this->session->set_flashdata('error_msg', 'Unable to Deleted Accommodation Block');
		}

		redirect('admin/AccommodationBlock/index');
	}

	public function getPropertyDetails()
	{
		$start_date = $this->input->post('start_date');
		$end_date = $this->input->post('end_date');
		$property_id = $this->input->post('property_id');
		$result = $this->mproperty->get_property_details_by_sp($property_id, $start_date, $end_date);
		echo json_encode(array('success'=>TRUE, 'list'=> $result));
		exit;
	}
	
}