MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: /home/cafsindia/ntc_cafsinfotech_in_bk/application/controllers/Gate_pass.php
<?php if ( ! defined('BASEPATH')) exit('No direct script is allowed');
require_once("Base_controller.php");
class Gate_pass  extends Base_controller{
	
	public function __construct(){
		parent::__construct('gate_pass');
		if(!$this->Appconfig->isAppvalid()){
			redirect('config');
		}
		$this->collect_base_info();
	}
	
	// LOAD PAGE WITH TABLE DATA
	public function index(){
		
		// LIST REASON LIST
		$this->db->select('prime_entry_reason_id,entry_reason');
		$this->db->from('cw_entry_reason');
		$this->db->where('cw_entry_reason.trans_status', 1);
		$reason_rslt     = $this->db->get()->result();
		foreach($reason_rslt as $rlst){
			$prime_entry_reason_id  = $rlst->prime_entry_reason_id;
			$entry_reason           = $rlst->entry_reason;
			$reason_list[$prime_entry_reason_id] = $entry_reason;
		}
		$data['reason_list'] = $reason_list;
		
		$data['table_headers']= $this->xss_clean(get_gate_pass_headers());
		$this->load->view("$this->control_name/manage",$data);
	}
	
	//LOAD MODEL PAGE VIEW WITH DATA
	public function view($prime_gate_pass_id = -1){
		
		//PRIME TABLE INFOMATION
		$this->db->from('gate_pass');
		$this->db->where('gate_pass.prime_gate_pass_id', $prime_gate_pass_id);
		$gate_pass_list    = $this->db->get();
		$data['gate_pass'] = $gate_pass_list->result();
		
		
		//GATE PASS MATERIAL LIST
		$send_data    = json_decode($this->get_material_info($prime_gate_pass_id));
		$data['gate_pass_material_list'] = $send_data->material_info;
		
		//ENTRY REASON LIST
		$this->db->select('prime_entry_reason_id,entry_reason');
		$this->db->from('cw_entry_reason');
		$this->db->where('cw_entry_reason.trans_status', 1);
		$entry_reason_rslt = $this->db->get()->result();
		$entry_reason_list[""] = "--- Select ---";
		foreach($entry_reason_rslt as $rlst){
			$prime_entry_reason_id  = $rlst->prime_entry_reason_id;
			$entry_reason           = $rlst->entry_reason;
			$entry_reason_list[$prime_entry_reason_id] = $entry_reason;
		}
		$data['entry_reason_list'] = $entry_reason_list;
		
		//VEHICLE LIST
		$this->db->select('prime_vehicle_master_id,register_no');
		$this->db->from('cw_vehicle_master');
		$this->db->where('cw_vehicle_master.trans_status', 1);
		$vehicle_rslt = $this->db->get()->result();
		$vehicle_rslt[""] = "--- Select ---";
		foreach($vehicle_rslt as $rlst){
			$prime_vehicle_master_id  = $rlst->prime_vehicle_master_id;
			$register_no              = $rlst->register_no;
			$veh_reg_list[$prime_vehicle_master_id] = $register_no;
		}
		$data['veh_reg_list'] = $veh_reg_list;
		
		//DRIVER LIST
		$this->db->select('prime_employees_id,employee_name');
		$this->db->from('cw_employees');
		$this->db->where('cw_employees.role', 4);
		$this->db->where('cw_employees.trans_status', 1);
		$driver_rslt = $this->db->get()->result();
		$driver_rslt[""] = "--- Select ---";
		foreach($driver_rslt as $rlst){
			$prime_employees_id  = $rlst->prime_employees_id;
			$employee_name       = $rlst->employee_name;
			$driver_list[$prime_employees_id] = $employee_name;
		}
		$data['driver_list'] = $driver_list;
		
		//AUTHORIZED LIST
		$this->db->select('prime_employees_id,employee_name');
		$this->db->from('cw_employees');
		$this->db->where('cw_employees.role', 1);
		$this->db->or_where('cw_employees.role', 5);
		$this->db->where('cw_employees.trans_status', 1);
		$auth_rslt = $this->db->get()->result();
		$auth_rslt[""] = "--- Select ---";
		foreach($auth_rslt as $auth){
			$prime_employees_id  = $auth->prime_employees_id;
			$employee_name           = $auth->employee_name;
			$auth_list[$prime_employees_id] = $employee_name;
		}
		$data['auth_list'] = $auth_list;
		$this->load->view("$this->control_name/form",$data);
	}
	
	//LOAD PAGE TABLE VIEW WITH DATA BASED ON SEARCH FILTERS
	public function search(){
		$search            = $this->input->get('search');
		$limit             = $this->input->get('limit');
		$offset            = $this->input->get('offset');
		$sort              = $this->input->get('sort');
		$order             = $this->input->get('order');
		$start_date        = str_replace("/","-",$this->input->get('start_date'));
		$end_date          = str_replace("/","-",$this->input->get('end_date'));	
		$from_date         = date('Y-m-d',strtotime($start_date));
		$to_date           = date('Y-m-d',strtotime($end_date));
		$reason            = $this->input->get('reason');
		$this->db->select('prime_gate_pass_id,gate_pass_no,date,company,cw_vehicle_master.register_no as ntc_vehicle,cw_employees.employee_name as ntc_driver,cw_gate_pass.driver as driver,cw_gate_pass.vehicle as vehicle,cw_entry_reason.entry_reason');
		$this->db->from('gate_pass');
		$this->db->join('entry_reason', 'gate_pass.entry_reason = entry_reason.prime_entry_reason_id','LEFT');	
		$this->db->join('cw_vehicle_master', 'cw_vehicle_master.prime_vehicle_master_id = gate_pass.ntc_vehicle','LEFT');	
		$this->db->join('cw_employees', 'cw_employees.prime_employees_id = gate_pass.ntc_driver','LEFT');	
		$this->db->where('gate_pass.trans_status',1);
		$this->db->where('CAST(date AS DATE) BETWEEN "'.$from_date.'" AND "'.$to_date.'"');
		if($search){
			$this->db->group_start();
				$this->db->like('prime_gate_pass_id',$search);
				$this->db->or_like('gate_pass_no',$search);
				$this->db->or_like('company',$search);
				$this->db->or_like('driver',$search);
				$this->db->or_like('vehicle',$search);
				$this->db->or_like('authorised_by',$search);
			$this->db->group_end();	
		}
		
		$filters_sts = array();
		foreach($service_category as $key=>$value){
			if($value){ $filters_sts[] = $value; }
		}
		if(count($filters_sts) > 0){
			$this->db->where_in('gate_pass.entry_reason', $filters_sts);
		}
		
		$this->db->order_by($sort,$order);
		$receiving_data = $this->db->get();
		$receiving_rslt = $receiving_data->result();
		$num_rows       = $receiving_data->num_rows();
		$datarows       = array();
		foreach($receiving_rslt as $receiving){
			$datarows[] = get_gate_pass_datarows($receiving,$this);
		}
		echo json_encode(array('total'=>$num_rows,'rows'=>$datarows));
	}	
	
	//SAVE MODEL DATA TO DATA BASE
	public function save(){
		$prime_gate_pass_id = $this->input->post('prime_gate_pass_id');
		$gate_pass_no       = $this->input->post('gate_pass_no');
			$gate_pass_data = array(
				'company'        => $this->input->post('company'),
				'date'           => date('Y-m-d H:i:s',strtotime($this->input->post('date'))),
				'ntc_driver'     => $this->input->post('ntc_driver'),
				'ntc_vehicle'    => $this->input->post('ntc_vehicle'),
				'driver'         => $this->input->post('driver'),
				'vehicle'        => $this->input->post('vehicle'),
				'entry_reason'   => $this->input->post('entry_reason'),
				'remarks'        => $this->input->post('remarks'),
				'credit'         => $this->input->post('credit'),
				'security_name'  => $this->input->post('security_name'),
				'authorised_by'  => $this->input->post('authorised_by'),
				'invoice_no'     => $this->input->post('invoice_no')
			);
		if((int)$prime_gate_pass_id === 0){
			$gate_pass_no                         = $this->unique_code($code="GATE");
			$gate_pass_data['gate_pass_no']       = $gate_pass_no;
			$gate_pass_data['trans_created_by']   = $this->session->userdata('logged_id');
			$gate_pass_data['trans_created_date'] = date("Y-m-d H:i:s");
			if($this->db->insert('cw_gate_pass',$gate_pass_data)){
				$prime_id = $this->db->insert_id();
				echo json_encode(array('success' => TRUE, 'message' => "Successfully Inserted",'prime_id' => $prime_id));
			}else{
				echo json_encode(array('success' => FALSe, 'message' => "Insertion failed, Please Try Again"));
			}
		}else
		if((int)$prime_gate_pass_id > 0){
			if($gate_pass_no){
				$gate_pass_data['trans_updated_by']   = $this->session->userdata('logged_id');
				$gate_pass_data['trans_updated_date'] = date("Y-m-d H:i:s");
				$this->db->where('prime_gate_pass_id',$prime_gate_pass_id);
				if($this->db->update('cw_gate_pass',$gate_pass_data)){
					echo json_encode(array('success' => TRUE, 'message' => "Successfully Updated",'prime_id' => $prime_gate_pass_id));
				}else{
					echo json_encode(array('success' => FALSe, 'message' => "Update failed, Please Try Again"));
				}
			}else{
				echo json_encode(array('success' => False, 'message' => "Please contact Admin.!"));
			}
		}			
	}
	
	//PRINT GATE PASS
	public function view_print($prime_gate_pass_id = -1){
		if((int)$prime_gate_pass_id > 0){
			$this->db->select('gate_pass_no,date,company,cw_vehicle_master.register_no as ntc_vehicle,employees.employee_name as ntc_driver,auth.employee_name as authorised_by,cw_gate_pass.driver as driver,cw_gate_pass.vehicle as vehicle,cw_entry_reason.entry_reason,gate_pass.remarks,credit,security_name,invoice_no,IFNULL(GROUP_CONCAT(cw_inventory_product.product_name),0) as product_name,IFNULL(GROUP_CONCAT(quantity),0) as quantity,IFNULL(GROUP_CONCAT(cw_inventory_brand.brand_name),0) as brand_name,IFNULL(GROUP_CONCAT(cw_inventory_category.category_name),0) as category_name');
			$this->db->from('gate_pass');
			$this->db->join('gate_pass_material_list', 'gate_pass_material_list.prime_gate_pass_id = cw_gate_pass.prime_gate_pass_id','LEFT');
			$this->db->join('inventory_product', 'gate_pass_material_list.product_name = inventory_product.prime_inventory_product_id','LEFT');	
			$this->db->join('inventory_brand', 'inventory_product.brand = inventory_brand.prime_inventory_brand_id','LEFT');	
			$this->db->join('inventory_category', 'inventory_product.category = inventory_category.prime_inventory_category_id','LEFT');	
			$this->db->join('entry_reason', 'gate_pass.entry_reason = entry_reason.prime_entry_reason_id','LEFT');
			$this->db->join('vehicle_master', 'vehicle_master.prime_vehicle_master_id = gate_pass.ntc_vehicle','LEFT');	
			$this->db->join('employees', 'employees.prime_employees_id = gate_pass.ntc_driver','LEFT');
			$this->db->join('employees auth' ,'auth.prime_employees_id = gate_pass.authorised_by','left');
			$this->db->where('gate_pass.prime_gate_pass_id',(int)$prime_gate_pass_id);
			$this->db->where('gate_pass.trans_status', 1);
			$this->db->where('gate_pass_material_list.trans_status', 1);
			$gate_pass_info = $this->db->get();
			$num_rows       = $gate_pass_info->num_rows();
			if((int)$num_rows > 0){
				$data['gate_pass'] = $gate_pass_info->result();
				$this->load->view("$this->control_name/view_print",$data);
			}
		}
	}
	
	// Search By Material Auto complete
	public function search_materials(){
		$search_product_name  = $this->input->post_get('search_product_name');
		$suggestions          = array();
		if($search_product_name){
			$this->db->select('prime_inventory_product_id,inventory_product.product_name,inventory_category.category_name,inventory_brand.brand_name');
			$this->db->from('inventory_product');
			$this->db->join('inventory_category','inventory_product.category = inventory_category.prime_inventory_category_id');
			$this->db->join('inventory_brand','inventory_brand.prime_inventory_brand_id = inventory_product.brand');
			$this->db->where('inventory_product.trans_status', 1);
			$this->db->group_start();
				$this->db->like('inventory_product.product_name',$search_product_name);
				$this->db->or_like('inventory_category.category_name',$search_product_name);
				$this->db->or_like('inventory_brand.brand_name',$search_product_name);
			$this->db->group_end();	
			$search_material_info = $this->db->get()->result();
			foreach($search_material_info as $search_rlst){
				$prime_inventory_product_id   = $search_rlst->prime_inventory_product_id;
				$product_name                   = $search_rlst->product_name;
				$category_name                   = $search_rlst->category_name;
				$brand_name                      = $search_rlst->brand_name;
				$label                           = "$product_name-$category_name-$brand_name";
				$suggestions[] = array('value'=>$product_name,'label'=>$label,'prime_material_id' => $prime_inventory_product_id);
			}
						
		}
		if(empty($suggestions)){
			$suggestions[] = array('value' => "0", 'label' => "No data found for this search");
		}
		echo json_encode($suggestions);
	}
	
	//SAVE MATERIAL INFORMATION
	public function save_material_info(){
		$prime_material_list_id     = (int)$this->input->post('prime_material_list_id');
		$prime_gate_pass_id         = (int)$this->input->post('prime_pass_id');
		$product_name              = (int)$this->input->post('prime_material_id');
		if(($this->gate_pass_exists($prime_gate_pass_id,TRUE)) && ($prime_material_list_id === 0)){
			if(!($this->check_material_already_exists($product_name,$prime_gate_pass_id))){
				$material_info_data = array(
					'quantity'               => $this->input->post('quantity'),
					'product_name'          => $product_name,
					'prime_gate_pass_id'     => $this->input->post('prime_pass_id')
				);
				$material_info_data['trans_created_by']   = $this->session->userdata('logged_id');
				$material_info_data['trans_created_date'] = date("Y-m-d H:i:s");
				if($this->db->insert('gate_pass_material_list',$material_info_data)){
					$prime_material_list_id = $this->db->insert_id();
					echo json_encode(array('success' => TRUE, 'message' => "Material Successfully Added",'prime_gate_pass_id' => $prime_gate_pass_id));
				}else{
					echo json_encode(array('success' => FALSe, 'message' => "Insertion failed, Please Try Again"));
				}
			}else{
				echo json_encode(array('success' => False, 'message' => "Material Already exists.!"));
			}
		}else
		if(($this->gate_pass_exists($prime_gate_pass_id,TRUE)) && ((int)$prime_material_list_id > 0)){
			$material_info_data = array(
				'quantity'                      => $this->input->post('quantity'),
				'product_name'                 => $this->input->post('prime_material_id'),
				'prime_gate_pass_id'     		=> $this->input->post('prime_pass_id')
			);
			$material_info_data['trans_updated_by']   = $this->session->userdata('logged_id');
			$material_info_data['trans_updated_date'] = date("Y-m-d H:i:s");
			$this->db->where('prime_material_list_id',$prime_material_list_id);
			if($this->db->update('gate_pass_material_list',$material_info_data)){
				echo json_encode(array('success' => TRUE, 'message' => "Material Successfully Updated",'prime_gate_pass_id'=> $prime_gate_pass_id ));
			}else{
				echo json_encode(array('success' => FALSe, 'message' => "Update failed, Please Try Again"));
			}
		}else{
			echo json_encode(array('success' => False, 'message' => "Please Fill Previous Tab Info.!"));
		}
	}
	
	//GATE PASS INFO EXIST
	public function gate_pass_exists($prime_gate_pass_id){
		$this->db->from('gate_pass');
		$this->db->where('prime_gate_pass_id', $prime_gate_pass_id);
		$this->db->where('trans_status', 1);
		return ($this->db->get()->num_rows() == 1);
	}
	
	//CHECK MATERIAL IS ALREADY EXIST
	public function check_material_already_exists($product_name,$prime_gate_pass_id){
		$this->db->from('gate_pass_material_list');
		$this->db->where('product_name', $product_name);
		$this->db->where('prime_gate_pass_id', (int)$prime_gate_pass_id);
		$this->db->where('trans_status', 1);
		if((int)($this->db->get()->num_rows()) === 1){
			return true;
		}else{
			return false;
		}
	}
	
	//LIST MATERIAL REQUEST INFOMATION
	public function get_material_info($prime_gate_pass_id = -1){
		if((int)$this->input->post('prime_gate_pass_id') > 0){
			$prime_gate_pass_id  = $this->input->post('prime_gate_pass_id');
		}
		$tble_line = '';
		if($this->gate_pass_exists((int)$prime_gate_pass_id,TRUE)){
			$this->db->select('prime_material_list_id,prime_gate_pass_id,quantity,cw_inventory_product.product_name as product_name');
			$this->db->from('gate_pass_material_list');
			$this->db->join('inventory_product', 'gate_pass_material_list.product_name = inventory_product.prime_inventory_product_id','inner');	
			$this->db->where('prime_gate_pass_id', (int)$prime_gate_pass_id);
			$this->db->where('gate_pass_material_list.trans_status', 1);
			$send_request_info = $this->db->get()->result();
			foreach($send_request_info as $send_rlst){
				$prime_material_list_id = $send_rlst->prime_material_list_id;
				$prime_gate_pass_id      = $send_rlst->prime_gate_pass_id;
				$quantity                       = $send_rlst->quantity;
				$product_name                  = $send_rlst->product_name;
				$tble_line .= "	<tr>
								<td>$product_name</td>
								<td>$quantity</td>
								<td>
									<a class='btn btn-info btn-sm' onclick='edit_material_info($prime_material_list_id)'>Edit</a>
									<a class='btn btn-danger btn-sm' onclick='delete_material_info($prime_material_list_id,$prime_gate_pass_id)'>Delete</a>
								</td>
							</tr>";
			}
		}
		$table_data = "	<h4 class='m-t-0 header-title'><b>Material Information List</b></h4>
						<table class='table table-striped table-bordered' id='material_info_table'>
						 <thead>
							<tr>
							   <th>Material Name</th>
							   <th>Quantities</th>
							   <th>Action</th>
							</tr>
						 </thead>
						 <tbody>
							$tble_line
						</tbody>
					</table>";
				
		return json_encode(array("success" => TRUE,'material_info' => $table_data));
	}
	
	//EDIT MATERIAL INFOMATION
	public function edit_material_info(){
		$prime_material_list_id  = $this->input->post('prime_material_list_id');
		$this->db->select('prime_material_list_id,prime_gate_pass_id,inventory_product.product_name as name,quantity,gate_pass_material_list.product_name');
		$this->db->from('gate_pass_material_list');
		$this->db->join('inventory_product', 'gate_pass_material_list.product_name = inventory_product.prime_inventory_product_id','inner');
		$this->db->where('prime_material_list_id', $prime_material_list_id);
		$return_data = $this->db->get()->result();
		echo json_encode(array("success" => TRUE,'message' => $return_data));
	}
	
	//GET TABLE VIEW FOR MATERIAL INFORMATION TABLE
	public function get_material_info_list_table(){
		$prime_gate_pass_id = '';
		if((int)$this->input->post('prime_gate_pass_id') > 0){
			$prime_gate_pass_id  = $this->input->post('prime_gate_pass_id');
		}
		$send_data   = json_decode($this->get_material_info($prime_gate_pass_id));
		echo json_encode(array("success" => TRUE,'material_table' => $send_data->material_info));
	}
	
	//DELETE MATERIAL INFOMATION
	public function delete_material_info(){
		$prime_material_list_id   = $this->input->post('prime_material_list_id');
		$update_data['trans_updated_by']   = $this->session->userdata('logged_id');
		$update_data['trans_updated_date'] = date("Y-m-d H:i:s");
		$update_data['trans_status']       = 0;
		$this->db->where('prime_material_list_id',$prime_material_list_id);
		if($this->db->update('gate_pass_material_list',$update_data)){
			echo json_encode(array("success" => TRUE,'message' => 'Deleted successfully'));
		}else{
			echo json_encode(array("success" => False,'message' => "Please Try Again"));
		}
	}
	
}
?>