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"));
}
}
}
?>