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/Employee_permission.php
<?php if ( ! defined('BASEPATH')) exit('No direct script is allowed');
require_once("Base_controller.php");
class Employee_permission  extends Base_controller{
	
	public function __construct(){
		parent::__construct('employee_permission');
		if(!$this->Appconfig->isAppvalid()){
			redirect('config');
		}
		$this->collect_base_info();
	}
	
	// LOAD PAGE WITH TABLE DATA
	public function index(){
		$data['table_headers']= $this->xss_clean(get_permission_headers());
		$this->load->view("$this->control_name/manage",$data);
	}
	
	//LOAD MODEL PAGE VIEW WITH DATA
	public function view($form_view_id=-1){		
		$role_info[""] = "---- Select Role ----";
		$role_data = $this->get_role();
		foreach($role_data as $row){
		     $role_info[$this->xss_clean($row['prime_role_id'])] = $this->xss_clean($row['role_name']);
		}
		$data['role_info'] = $role_info;
		/*============ BSK EMPLOYEE CUSTOME BLOCK ============*/		
		$modules = array();
		foreach($this->Module->get_all_modules('employees') as $module){
			$module->module_id = $this->xss_clean($module->module_id);
			$module->grant     = $this->xss_clean($this->Module->has_grant($this->control_name,$module->module_id, $form_view_id));
			$module->access    = $this->xss_clean($this->Module->has_access($this->control_name,$module->module_id, $form_view_id));
			$modules[] = $module;
		}
		$data['all_modules'] = $modules;
		$data['role_id']     = $form_view_id;
		/*============ UDY EMPLOYEE CUSTOME BLOCK ============*/
		$this->load->view("$this->control_name/form",$data);
	}	
	public function get_role(){
		$this->db->from('role');
		$this->db->order_by('prime_role_id', 'asc');
		return $this->db->get()->result_array();
	}
	//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');
		$fliter_label = $this->input->get('fliter_label');
		$fliter_type  = $this->input->get('fliter_type');
		$filter_cond  = $this->input->get('filter_cond');
		$fliter_val   = $this->input->get('fliter_val');
						
		if(!$sort){ $sort = $this->prime_table.".".$this->prime_id; }
		if(!$order){ $order = "asc";  }
		/* BSK CUSTOM BLOCK START */
		$common_search = "";
		if($search){
			$common_search = 'and cw_role.role_name like "'.$search.'%"';
		}
		$query = "select role_name,cw_employee_permission.role,update_for_all_employees from cw_employee_permission inner join cw_role on cw_role.prime_role_id = cw_employee_permission.role";
		$query .= " where $this->prime_table.trans_status = 1 $common_search group by cw_employee_permission.role";
		$query .= " ORDER BY  cw_employee_permission.role ASC";
		$query .= " LIMIT  $offset,$limit";
		/* BSK CUSTOM BLOCK END */		
		//FETCH RECORDS DATA
		$search_data   = $this->db->query("CALL sp_a_run ('SELECT','$query')");
		$search_result = $search_data->result();
		$num_rows      = $search_data->num_rows();
		$search_data->next_result();
		$data_rows     = array();
		foreach ($search_result as $search){
			$data_rows[]=get_permission_dbdata_row($search,$this);
		}
		$data_rows=$this->xss_clean($data_rows);		
		echo json_encode(array('total'=>$num_rows,'rows'=>$data_rows));
	}
	
	//SAVE MODEL DATA TO DATA BASE
	public function save(){		
		/*============ BSK GRANTS CUSTOME BLOCK ============*/		
		$access_data = $this->input->post('access') != NULL ? $this->input->post('access') : array();
		$grants_data = $this->input->post('grants') != NULL ? $this->input->post('grants') : array();		
		/*============ BSK GRANTS CUSTOME BLOCK ============*/	
		$update_for_all_employees = $this->input->post('update_for_all_employees');
		if(!$update_for_all_employees){
			$update_for_all_employees = 0;
		}
		if((int)$update_for_all_employees === 1){
			if((int)$this->input->post('role') === 12){
				//Update Grants for Candidate Role
				$query = 'SELECT GROUP_CONCAT(prime_customer_id) as ids from cw_customer';
				$ids_info    = $this->db->query("CALL sp_a_run ('SELECT','$query')");
				$ids_result = $ids_info->result();
				$ids_info->next_result();
				$ids = explode(',',$ids_result[0]->ids);
				foreach ($ids as $logged_id) {
					$success = $this->db->delete('grants_customer', array('prime_customer_id' => $logged_id));
					if($success){
						foreach($grants_data as $permission_id){					
							$add = 0;
							if (in_array("$permission_id::add", $access_data)){
								$add = 1;
							}
							$update = 0;
							if (in_array("$permission_id::update", $access_data)){
								$update = 1;
							}
							$delete = 0;
							if (in_array("$permission_id::delete", $access_data)){
								$delete = 1;
							}
							$search = 0;
							if (in_array("$permission_id::search", $access_data)){
								$search = 1;
							}
							$export = 0;
							if (in_array("$permission_id::export", $access_data)){
								$export = 1;
							}
							$import = 0;
							if (in_array("$permission_id::import", $access_data)){
								$import = 1;
							}				
							$this->db->insert('grants_customer', array('permission_id' => $permission_id, 'prime_customer_id' => $logged_id, 'access_add' => $add, 'access_update' => $update, 'access_delete' => $delete, 'access_search' => $search, 'access_export' => $export, 'access_import' => $import));	
						}
					}
				}
			}else{
				//Update Grants for Other Roles except Candidate Role
				$query = 'SELECT GROUP_CONCAT(prime_employees_id) as ids from cw_employees where cw_employees.role = "'.$this->input->post('role').'"';
				$ids_info    = $this->db->query("CALL sp_a_run ('SELECT','$query')");
				$ids_result = $ids_info->result();
				$ids_info->next_result();
				$ids = explode(',',$ids_result[0]->ids);
				foreach ($ids as $logged_id) {
					$success = $this->db->delete('grants', array('prime_employees_id' => $logged_id));
					if($success){
						foreach($grants_data as $permission_id){					
							$add = 0;
							if (in_array("$permission_id::add", $access_data)){
								$add = 1;
							}
							$update = 0;
							if (in_array("$permission_id::update", $access_data)){
								$update = 1;
							}
							$delete = 0;
							if (in_array("$permission_id::delete", $access_data)){
								$delete = 1;
							}
							$search = 0;
							if (in_array("$permission_id::search", $access_data)){
								$search = 1;
							}
							$export = 0;
							if (in_array("$permission_id::export", $access_data)){
								$export = 1;
							}
							$import = 0;
							if (in_array("$permission_id::import", $access_data)){
								$import = 1;
							}				
							$this->db->insert('grants', array('permission_id' => $permission_id, 'prime_employees_id' => $logged_id, 'access_add' => $add, 'access_update' => $update, 'access_delete' => $delete, 'access_search' => $search, 'access_export' => $export, 'access_import' => $import));	
						}
					}
				}
			}
			
		}
		$delete_success = $this->db->delete('employee_permission', array('role' => $this->input->post('role')));
		if($delete_success){
			foreach($grants_data as $permission_id){					
				$add = 0;
				if (in_array("$permission_id::add", $access_data)){
					$add = 1;
				}
				$update = 0;
				if (in_array("$permission_id::update", $access_data)){
					$update = 1;
				}
				$delete = 0;
				if (in_array("$permission_id::delete", $access_data)){
					$delete = 1;
				}
				$search = 0;
				if (in_array("$permission_id::search", $access_data)){
					$search = 1;
				}
				$export = 0;
				if (in_array("$permission_id::export", $access_data)){
					$export = 1;
				}
				$import = 0;
				if (in_array("$permission_id::import", $access_data)){
					$import = 1;
				}					
				$this->db->insert('employee_permission', array('permission_id' => $permission_id, 'role' => $this->input->post('role'),'update_for_all_employees' => $update_for_all_employees , 'access_add' => $add, 'access_update' => $update, 'access_delete' => $delete, 'access_search' => $search, 'access_export' => $export, 'access_import' => $import));					
			}
			echo json_encode(array('success' => TRUE, 'message' => "Successfully Updated"));
		}
	}
	//UPDATE STATUS TO DELETE IN MODULE PRIMARY TABLE
	public function delete(){
		$delete_ids = implode(",",$this->xss_clean($this->input->post('ids')));
		$created_on = date("Y-m-d h:i:s");
		$prime_upd_query    .= 'trans_deleted_by = "'. $this->logged_id .'",trans_deleted_date = "'.$created_on.'"';
		$prime_update_query  = 'UPDATE cw_employee_permission SET trans_status = 0,'. $prime_upd_query .' WHERE cw_employee_permission.role in ('. $delete_ids .')';
		if($this->db->query("CALL sp_a_run ('UPDATE','$prime_update_query')")){
			echo json_encode(array('success' => TRUE, 'message' => "Successfully Deleted"));
		}else{
			echo json_encode(array('success' => FALSE, 'message' => "Unable to delete"));
		}
	}
	public function get_permission_list(){
		$role = $this->input->post('role');
		/*============ BSK EMPLOYEE CUSTOME BLOCK ============*/
		$modules = array();
		foreach($this->Module->get_all_modules('EMPLOYEES') as $module){
			$module->module_id = $this->xss_clean($module->module_id);
			$module->grant     = $this->xss_clean($this->Module->has_grant('employee_permission',$module->module_id, $role));
			$module->access    = $this->xss_clean($this->Module->has_access('employee_permission',$module->module_id, $role));
			$modules[] = $module;
		}
	$li_line = "";
	foreach($modules as $module){
		$access_add    = $module->access[0]['access_add'];
		$access_update = $module->access[0]['access_update'];
		$access_delete = $module->access[0]['access_delete'];
		$access_search = $module->access[0]['access_search'];
		$access_export = $module->access[0]['access_export'];
		$access_import = $module->access[0]['access_import'];
		$check_box_input = form_checkbox("grants[]", $module->module_id, $module->grant, "class='module'");
		$module_name     = $module->module_name;		
		$add_id          = $module->module_id ."::add";
		$add_checkbox    = form_checkbox(array("name" =>'access[]',"value" => $add_id,   "checked" => ($access_add) ? 1 : 0));
		$update_id       = $module->module_id ."::update";
		$update_checkbox = form_checkbox(array("name" =>'access[]',"value" => $update_id, "checked" => ($access_update) ? 1 : 0));
		$delete_id       = $module->module_id ."::delete";
		$delete_checkbox = form_checkbox(array("name" =>'access[]',"value" => $delete_id, "checked" => ($access_delete) ? 1 : 0));
		$search_id       = $module->module_id ."::search";                                
		$search_checkbox = form_checkbox(array("name" =>'access[]',"value" => $search_id, "checked" => ($access_search) ? 1 : 0));
		$export_id       = $module->module_id ."::export";                                
		$export_checkbox = form_checkbox(array("name" =>'access[]',"value" => $export_id, "checked" => ($access_export) ? 1 : 0));
		$import_id       = $module->module_id ."::import";                                
		$import_checkbox = form_checkbox(array("name" =>'access[]',"value" => $import_id, "checked" => ($access_import) ? 1 : 0));
		
		$access_data  = "<div style='padding:8px 15px;border-bottom:1px dashed #CCCCCC;margin-bottom:15px;background-color: #f2f2f2;'>
							<label class='checkbox-inline'> $add_checkbox Add</label>
							<label class='checkbox-inline'> $update_checkbox Update</label>
							<label class='checkbox-inline'> $delete_checkbox Delete</label>
							<label class='checkbox-inline'> $search_checkbox Search</label>
							<label class='checkbox-inline'> $export_checkbox Export Data</label>
							<label class='checkbox-inline'> $import_checkbox Import Data</label>
						 </div>"; 
		$grand_data   = "<label class='checkbox-inline' style='margin-bottom:6px;'>
							$check_box_input  <span style='color:#1883E9;'><b>$module_name :</b></span> Add, Update, Delete, and Search $module_name
						</label>";
		
		if((int)$role === 1){
			$li_line .=  "<li>
							$grand_data
							$access_data
						</li>";
		}else{
			$admin_module = array("module_setting"=>true,"form_setting"=>true,"tester"=>true,"config"=>true);
			if(!$admin_module[$module->module_id]){
				$li_line .=  "<li>
								$grand_data
								$access_data
							</li>";
			}
		}
	}
	echo $li_line;
	}
}
?>