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/uds.cafsinfotech.in/smart_hrms_dev/application/controllers/Employee_permission.php
<?php if ( ! defined('BASEPATH')) exit('No direct script is allowed');
require_once("Action_controller.php");
class Employee_permission  extends Action_controller{
	
	public function __construct(){
		parent::__construct('employee_permission');
		if(!$this->Appconfig->isAppvalid()){
			redirect('config');
		}
	}
	
	// LOAD PAGE WITH TABLE DATA
	public function index(){
		$data['encKey']       = $this->generateKey();
		$data['table_head']   = json_decode(json_encode(array(array('label_name'=>'role_name','view_name'=>'Category','field_type'=>1))));
		$this->load->view("$this->control_name/manage",$data);
	}
	
	//LOAD MODEL PAGE VIEW WITH DATA
	public function view($form_view_id=-1){
		if($form_view_id !== -1){
			//Decrypt prime id from URL
			$decRslt          = $this->cryptoDecrypt(base64_decode(urldecode($form_view_id)));
			$form_view_id     = $decRslt['prime_id'];
			if(!$form_view_id){
				echo json_encode(array('success' => false,'message' => 'Invalid Request..','table_data' => ""));
				exit(0);
			}
		}
		$role_info[""] = "---- Rights For ----";
		$role_data = $this->get_role();
		foreach($role_data as $row){
		     $role_info[$this->xss_clean($row['prime_user_role_id'])] = $this->xss_clean($row['role_name']);
		}
		$data['role_info'] = $role_info;
		$permissin_info = array();
		$permision_data = $this->get_permision_data();
		foreach($permision_data as $row){
		     $permissin_info[$row['role']] = $row['permission_id'];
		}
		$data['permissin_info'] = $permissin_info;
		
		/*============ BSK EMPLOYEE CUSTOME BLOCK ============*/		
		$arr = array();
		foreach($this->Module->get_all_modules($this->control_name) 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;
			$menu = str_replace(" ","_",strtolower($module->menu_name)); //."_".$module->menu_id
			$submenu = str_replace(" ","_",strtolower($module->sub_menu_name));		
			if(!$submenu){
				$submenu = "sub_".$menu;
			}
			$arr[$menu][$submenu][] = $module;	
		}

		$data['all_modules'] = $arr;
		$data['role_id']     = $form_view_id;
		$data['encKey']      = $this->generateKey();
		/*============ UDY EMPLOYEE CUSTOME BLOCK ============*/
		$this->load->view("$this->control_name/form",$data);
	}	
	public function get_role(){
		$this->db->from('user_role');
		$this->db->where('trans_status',1);
		$this->db->order_by('prime_user_role_id', 'asc');
		return $this->db->get()->result_array();
	}
	
	public function get_permision_data(){
		$this->db->from('employee_permission');
		$this->db->order_by('prime_employee_permission_id', 'asc');
		return $this->db->get()->result_array();
	}
	
	//LOAD PAGE TABLE VIEW WITH DATA BASED ON SEARCH FILTERS
	public function search(){
		$dec_data         = $this->cryptoDecrypt($_POST['Payload']);
		$_POST            = $dec_data['data'];
		if(!$_POST){
			echo json_encode(array('success' => false,'message' => 'Invalid Request..'));
			exit(0);
		}
		$draw         = $this->input->post('draw');
		$start        = $this->input->post('start');
		$per_page     = $this->input->post('length');
		$order        = $this->input->post('order');
		$order_col    = $this->input->post('columns');
		$search       = $this->input->post('search');
		$column       = $order[0]['column'];
		$order_sor    = $order[0]['dir'];
		$order_col    = $order_col[$column]['data'];
		$search       = trim($search['value']);
		$search_query = str_replace("@SELECT@",$this->select_query."role",$this->base_query);
		//ADDED BASIC,FILTER,COMMON QUERY HERE 
		$role_condition   = "";
		if($this->role_condition){
			$role_condition = $this->role_condition;
		}
		
		$fliter_query = "";
		foreach($this->fliter_list as $fliter){
			$label_id         = $fliter['label_id'];
			$label_name       = $fliter['label_name'];
			$field_isdefault  = (int)$fliter['field_isdefault'];
			$array_list       = $fliter['array_list'];
			$field_type       = (int)$fliter['field_type'];			
			if($field_isdefault === 1){
				$column_name = $this->prime_table .".$label_id";				
				$search_val  = $this->input->post("$label_id");
				if($search_val){
					if($field_type === 4){
						$search_val = date('Y-m-d',strtotime($search_val));
						$fliter_query .= " and $column_name = '$search_val'";
					}else
					if(($field_type === 5) || ($field_type === 7)){
						$search_val    = trim(implode(",",$search_val));
						$fliter_query .= " and $column_name in ($search_val)";  
					}else
					if($field_type === 13){
						$search_val = date('Y-m-d H:i:s',strtotime($search_val));
						$fliter_query .= " and $column_name = '$search_val'";
					}else{
						$fliter_query .= " and $column_name LIKE '$search_val%'";
					}
				}
			}
		}
		
		$common_search = "";
		if($search){
			$common_search = ' AND role_name LIKE ("%'.$search.'%") ';
		}
		
		$search_query      = "select cw_employee_permission.role,role_name from cw_employee_permission inner join cw_user_role on cw_user_role.prime_user_role_id = cw_employee_permission.role where $this->prime_table.trans_status = 1 $role_condition $fliter_query $common_search group by cw_employee_permission.role";
		$search_query      .= " ORDER BY  $order_col $order_sor";
		if((int)$per_page !== -1){
			$search_query  .= " LIMIT  $start,$per_page";
		}		
		$search_data        = $this->db->query($search_query);
		$search_result      = $search_data->result();
		//echo "search_query :: \n$search_query\n";		
		$total_count        = count($search_result ?? []);		
		echo json_encode(array("draw" => intval($draw),"recordsTotal" => $total_count,"recordsFiltered" => $total_count,"data" => $search_result));	
	}
	
	//SAVE MODEL DATA TO DATA BASE
	public function save(){
		$encString         = file_get_contents('php://input');
		$_POST             = $this->cryptoDecrypt($encString);
		if(!$_POST){
			echo json_encode(array('success' => false,'message' => 'Invalid Request..','table_data' => ""));
			exit(0);
		}
		$previous_pick_value= $this->input->post("previous_pick_value");
		$previous_data 		= json_decode($previous_pick_value, true);		
		/*============ 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();
		$role = $this->input->post('role');		
		/*============ 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){
			//Update Grants for Other Roles except Candidate Role
			$query = 'SELECT GROUP_CONCAT(prime_employees_id) as ids from cw_employees where cw_employees.user_right = "'.$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->select('menu_id,sub_menu_id');
						$this->db->from('modules');
						$this->db->where('module_id', $permission_id);		
						$menu_data      = $this->db->get()->row();
						$menu_id        = $menu_data->menu_id;
						$sub_menu_id    = $menu_data->sub_menu_id;
						$insert_values .= "(\"$permission_id\",\"$logged_id\",\"$menu_id\",\"$sub_menu_id\",\"$add\",\"$update\",\"$delete\",\"$search\",\"$export\",\"$import\"),";
					}					
				}
			}
			if(isset($insert_values)){
				$insert_values = rtrim($insert_values,",");
				$insert_query  = "INSERT INTO cw_grants (`permission_id`, `prime_employees_id`, `grants_menu_id`, `grants_sub_menu_id`, `access_add`, `access_update`, `access_delete`, `access_search`, `access_export`, `access_import`) VALUES $insert_values";
				$this->db->query("$insert_query");	
			}			
		}
		$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->select('menu_id,sub_menu_id');
				$this->db->from('modules');
				$this->db->where('module_id', $permission_id);		
				$menu_data = $this->db->get()->row();
				$menu_id     = $menu_data->menu_id;
				$sub_menu_id = $menu_data->sub_menu_id;		
				$permission_values .= "(\"$permission_id\",\"$role\",\"$menu_id\",\"$sub_menu_id\",\"$add\",\"$update\",\"$delete\",\"$search\",\"$export\",\"$import\"),";
			}
			if(isset($permission_values)){
				$permission_values = rtrim($permission_values,",");
				$insert_query  = "INSERT INTO cw_employee_permission (`permission_id`, `role`, `grants_menu_id`, `grants_sub_menu_id`, `access_add`, `access_update`, `access_delete`, `access_search`, `access_export`, `access_import`) VALUES $permission_values";
				$this->db->query("$insert_query");		
			}
			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 permission_role_exist($role){
		$role_exist_qry  = 'SELECT count(*) as role_count from cw_employee_permission where role = "'.$role.'" and trans_status = 1';
		$role_exist_info = $this->db->query("CALL sp_a_run ('SELECT','$role_exist_qry')");
		$role_exist_rslt = $role_exist_info->result();
		$role_exist_info->next_result();
		$role_count      = $role_exist_rslt[0]->role_count;
		return $role_count;
	}
	public function get_permission_list(){
		$encString         = file_get_contents('php://input');
		$_POST             = $this->cryptoDecrypt($encString);
		if(!$_POST){
			echo json_encode(array('success' => false,'message' => 'Invalid Request..','table_data' => ""));
			exit(0);
		}
		$role = $this->input->post('role');
		/*============ BSK EMPLOYEE CUSTOME BLOCK ============*/
		$role_exist =  $this->permission_role_exist($role);
		if((int)$role_exist > 0){
			echo json_encode(array('success'=>FALSE,'message'=>'Role Already exist'));
			exit(0);
		}
		$modules = array();
		foreach($this->Module->get_all_modules('EMPLOYEE_PERMISSION') 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;
		}
		$menu_array         = array();
		$menu_data_array    = array();
		$submenu_data_array = array();
		
		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'];
			$grants_menu_id = $module->access[0]['grants_menu_id'];
			$grants_sub_menu_id = $module->access[0]['grants_sub_menu_id'];
			$check_box_input = form_checkbox("grants[]", $module->module_id, $module->grant, "class='module_$module->module_id'");
			$menu_input = form_checkbox("menu_id", $module->menu_id, $grants_menu_id,"id='".str_replace(" ","_",strtolower($module->menu_name))."'", "class='menu_id'");
			$sub_menu_input = form_checkbox("sub_menu_id", $module->sub_menu_id, $grants_sub_menu_id,"id='".str_replace(" ","_",strtolower($module->sub_menu_name."_".$module->menu_id))."'", "class='sub_menu_id'");
			$menu_name       = $module->menu_name;
			$sub_menu_name   = $module->sub_menu_name;
			$module_name     = $module->module_name;
			$add_id          = $module->module_id ."::add";
			$add_checkbox    = form_checkbox(array("name" =>'access[]',"value" => $add_id, "class" =>'module_'.$module->module_id, "checked" => ($access_add) ? 1 : 0));
			$update_id       = $module->module_id ."::update";
			$update_checkbox = form_checkbox(array("name" =>'access[]',"value" => $update_id, "class" =>'module_'.$module->module_id, "checked" => ($access_update) ? 1 : 0));
			$delete_id       = $module->module_id ."::delete";
			$delete_checkbox = form_checkbox(array("name" =>'access[]',"value" => $delete_id, "class" =>'module_'.$module->module_id, "checked" => ($access_delete) ? 1 : 0));
			$search_id       = $module->module_id ."::search";                                
			$search_checkbox = form_checkbox(array("name" =>'access[]',"value" => $search_id, "class" =>'module_'.$module->module_id, "checked" => ($access_search) ? 1 : 0));
			$export_id       = $module->module_id ."::export";                                
			$export_checkbox = form_checkbox(array("name" =>'access[]',"value" => $export_id, "class" =>'module_'.$module->module_id, "checked" => ($access_export) ? 1 : 0));
			$import_id       = $module->module_id ."::import";                                
			$import_checkbox = form_checkbox(array("name" =>'access[]',"value" => $import_id, "class" =>'module_'.$module->module_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 class='prime_color'><b>$module_name :</b></span> Add, Update, Delete, and Search $module_name
							</label>";
			$menu_data    = "<label class='checkbox-inline' style='margin-bottom:6px;'>
								$menu_input  <span style='color:#000000;Font-size:16px;'><b>$menu_name</b></span> 
							</label>";
			$sub_menu_data    = "<label class='checkbox-inline' style='margin-bottom:6px;'>
								$sub_menu_input  <span style='color:#4dc147;Font-size:14px;'><b>$sub_menu_name</b></span> 
							</label>";
			if((int)$form_view->role === 1){
				$sub_menu_name = str_replace(" ","_",strtolower($sub_menu_name."_".$module->menu_id));
	
				$menu_array[$menu_name][$sub_menu_name][] = array("access_data"=>$access_data,"grand_data"=>$grand_data,"menu_data"=>$menu_data,'sub_menu_data'=>$sub_menu_data);
				$menu_data_array[$menu_name]        = $menu_data;
				$submenu_data_array[$sub_menu_name] = $sub_menu_data;
			}else{
				$sub_menu_name = str_replace(" ","_",strtolower($sub_menu_name."_".$module->menu_id));
				$admin_module = array("module_setting"=>true,"tester"=>true,"config"=>true);
				if(!$admin_module[$module->module_id]){
					$menu_array[$menu_name][$sub_menu_name][] = array("access_data"=>$access_data,"grand_data"=>$grand_data,"menu_data"=>$menu_data,'sub_menu_data'=>$sub_menu_data);
					$menu_data_array[$menu_name]        = $menu_data;
					$submenu_data_array[$sub_menu_name] = $sub_menu_data;
				}
			}
		}
		$li_line = "";
		foreach ($menu_array as $menu_name => $value) {
			$menu = $menu_data_array[$menu_name];
			$name = str_replace(" ","_",strtolower($menu_name));
			$sub_line = "";
			foreach ($value as $sub_menu_name => $data) {
				$sub_menu = $submenu_data_array[$sub_menu_name];
				$tr_line = "";

				foreach ($data as $key => $tr_value) {
					$grand_data  = $tr_value['grand_data'];
					$access_data = $tr_value['access_data'];
					$menu_data   = $tr_value['menu_data'];
					$sub_menu_data = $tr_value['sub_menu_data'];
					
					$tr_line .=  "<li>
										$menu_data
										$sub_menu_data
										$grand_data
										$access_data
									</li>";
				}	
				$tr_line = "<ul id='ul_$sub_menu_name' style='display:none;'>$tr_line</ul>";
				$sub_line .= "<li>	
								$sub_menu
								$tr_line
							</li>";
			}	
	
			$sub_line = "<ul id='ul_$name' style='display:none;'>$sub_line</ul>";
			$li_line .= "<li>	
							$menu
							$sub_line
						</li>";
		}
		echo json_encode(array('success'=>TRUE,'message'=>'','li_line'=>$li_line));
	}
}
?>