MMCT TEAM
Server IP : 103.191.208.50  /  Your IP : 216.73.216.53
Web Server : LiteSpeed
System : Linux orion.herosite.pro 4.18.0-553.53.1.lve.el8.x86_64 #1 SMP Wed May 28 17:01:02 UTC 2025 x86_64
User : celkcksm ( 1031)
PHP Version : 7.4.33
Disable Function : show_source, system, shell_exec, passthru, popen, exec
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /home/celkcksm/ecampus.ncriptech.com/application/controllers/admin/hrm/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /home/celkcksm/ecampus.ncriptech.com/application/controllers/admin/hrm/Roles.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');


/**
 * 
 */
class Roles  extends BaseAdminController
{

    protected $inst_id='';
    protected $inst_parent_id='';
    protected $inst_code='';
    protected $inst_type='';
    protected $hrms_access='';

    function __construct()
    {
        parent::__construct();

        $institute_data=check_institute($this->data['userdata']);

        //print_obj($institute_data);die;

        $this->inst_id=$institute_data['institute_id'];
        $this->inst_parent_id=$institute_data['inst_parent_id'];
        $this->inst_code=$institute_data['inst_code'];
        $this->inst_type=$institute_data['inst_type'];

        $this->hrms_access=$institute_data['hrms_access'];
        $this->data['module_name']='System Roles & Permissions Management';

        $this->load->model(array('hrm/employee_model'=>'em','hrm/roles_model'=>'hrmrm'));
    }


    public function index(){
        
        if(session_userdata('isAdminLoggedin')){

            $this->data['page_title']='Roles & Permissions';

            if($this->hrms_access=='yes'){ 
                $this->data['add_edit_access'] = check_access_control($this->data['userdata'], 'hrm_roles', ['add','edit']);   
                $view_access = check_access_control($this->data['userdata'], 'hrm_roles', ['view']);  
                
                if($view_access=='yes'){
                    
                    $view='hrm/roles/vw_roles';
                }else{
                    $view='hrm/vw_permission_denied';
                }
            }else{
                $view='hrm/vw_permission_denied';
            }

            $this->theme->title($this->data['page_title'])->load($view, $this->data);
                
        }else{

            redirect($this->data['base_url']);
        }
    }


    public function indexAddEdit($role_id=null){
        if(session_userdata('isAdminLoggedin')){

            $this->data['page_title']='Roles & Permissions';

            $role_permissions=array();
            $role_data=array();

            if($this->hrms_access=='yes'){
                $view_access = check_access_control($this->data['userdata'], 'hrm_roles', ['view']);

                if($view_access=='yes'){
                    $add_edit_access = check_access_control($this->data['userdata'], 'hrm_roles', ['add', 'edit']);

                    if($add_edit_access=='yes'){
                        if(!empty($role_id)){
                            $role_id=decode_data($role_id);

                            $role_data=$this->hrmrm->get_role(array('role_id'=>$role_id),TRUE,$this->inst_code);

                            if(!empty($role_data) && !empty($role_data->role_permissions)){
                                $role_permissions=json_decode($role_data->role_permissions);
                            }
                        }

                        $i=0;

                        $this->data['role_data']=$role_data;
                        $this->data['permissions']=$role_permissions; 
                        $view='hrm/roles/vw_roles_add_edit';
                    }else{
                        $view='hrm/vw_permission_denied';
                    }

                    
                }else{
                    $view='hrm/vw_permission_denied';
                }
            }else{
                $view='hrm/vw_permission_denied';
            }

            $this->theme->title($this->data['page_title'])->load($view, $this->data);
                
        }else{

            redirect($this->data['base_url']);
        }
    }


    public function onAddEditRolesPermissions(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                if($this->hrms_access=='yes'){

                    $role_id=post_data('_role_id');
                    $role_name=post_data('hrm_role_name');
                    $role_display_name=post_data('hrm_role_display_name');
                    $hrm_role_status=post_data('hrm_role_status');
                    $role_permissions=$this->input->post('hrm_role_permissions');

                    $perm_values=[];

                    if(!empty($role_permissions)){
                        foreach ($role_permissions as $k => $v) {
                            $perm_values[$k]=$v;
                        }
                    }

                    $roles_data=array(
                        'role_name'=>$role_name,
                        'role_display_name'=>$role_display_name,
                        'role_inst_id'=>$this->inst_id,
                        'role_inst_type'=>$this->inst_type,
                        'role_status'=>$hrm_role_status,
                        'is_editable_deletable'=>'yes',
                        'role_permissions'=>(!empty(perm_values))?json_encode($perm_values):null
                    );

                    if(empty($role_id)){
                        $get_role=$this->hrmrm->get_role(array('role_name'=>$role_name,'role_inst_id'=>$this->inst_id,'role_inst_type'=>$this->inst_type));

                        if(empty($get_role)){
                            $added=$this->hrmrm->store_role($roles_data);
                            if($added){
                                $return['success']='Role & Permissions added successfully';
                            }else{
                                $return['error']='Role & Permissions not added.';
                            }
                        }else{
                            $return['error']='Role already exists';
                        }
                    }else{
                        $role_id=decode_data($role_id);

                        $get_role=$this->hrmrm->get_role(array('role_inst_id'=>$this->inst_id,'role_inst_type'=>$this->inst_type,'role_id'=>$role_id));

                        if(!empty($get_role)){
                            $_get_role=$this->hrmrm->get_role(array('role_name'=>$role_name,'role_inst_id'=>$this->inst_id,'role_inst_type'=>$this->inst_type,'role_id!='=>$role_id));

                            if(empty($_get_role)){
                                if(is_numeric($role_id)){
                                    $updated=$this->hrmrm->update_role($roles_data,array('role_id'=>$role_id));
                                    if($updated){
                                        $return['success']='Role & Permissions updated successfully';
                                    }else{
                                        $return['error']='Role & Permissions not updated.';
                                    }
                                }else{
                                    $return['error']='Data not found to edit';
                                }
                            }else{
                                $return['error']='Role already exists 1';
                            }
                        }else{
                            $return['error']='Role already exists 2';
                        }
                    }
                }else{
                    $return['error']='Permission denied';
                }

                json_headers($return);

            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }


    public function onSearchEmployeesRolesList(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                $edit_access = check_access_control($this->data['userdata'], 'hrm_roles', ['edit']);
                $delete_access = check_access_control($this->data['userdata'], 'hrm_roles', ['delete']);

                if($this->hrms_access=='yes'){
                    $param['column_order'] = array(
                        null,
                        'role_name',
                        'role_display_name'
                    );

                    $param['role_inst_id']=$this->inst_id;
                    $param['role_inst_type']=$this->inst_type;

                    $param['column_search'] = array('role_name','role_display_name');
                    $param['order'] = array('role_id' => 'ASC');
                    $posts=$this->input->post();

                    $list = $this->hrmrm->_get_roles($posts,$param,FALSE,$this->inst_code,FALSE);
                    

                    $data = array();
                    $no = isset($posts['start'])?$posts['start']:0;

                    $action='';

                    foreach ($list as $role){
                        $no++;

                        $row = array();

                        $row[]  =   $no;
                        $row[]  =   $role->role_name;
                        $row[]  =   $role->role_display_name;

                        if($role->role_status=='active'){
                            $status='<span class="badge badge-sm badge-success">Active</span>';
                        }else if($role->role_status=='inactive'){
                            $status='<span class="badge badge-sm badge-danger">Inactive</span>';
                        }

                        $row[]  =   $status;

                        if($role->is_editable_deletable=='yes'){
                            if($edit_access=='yes' && $delete_access=='yes'){
                                $row[]  =   '<a class="btn btn-xs btn-dark" href="'.$this->data['base_url'].'/hrm/employees/roles/add/'.encode_data($role->role_id).'"><i class="fa fa-edit"></i></a>
                                <button type="button" class="btn btn-xs btn-danger btn_delete_canteen_vendor" data-role_id="'.encode_data($role->role_id).'"><i class="fa fa-trash"></i></button>';
                            }else if($edit_access=='no' && $delete_access=='yes'){
                                $row[]  =   '<button type="button" class="btn btn-xs btn-danger btn_delete_canteen_vendor" data-role_id="'.encode_data($role->role_id).'"><i class="fa fa-trash"></i></button>';
                            }else if($edit_access=='yes' && $delete_access=='no'){
                                $row[]  =   '<a class="btn btn-xs btn-dark" href="'.$this->data['base_url'].'/hrm/employees/roles/add/'.encode_data($role->role_id).'"><i class="fa fa-edit"></i></a>';
                            }else{
                                $row[]='<span class="badge badge-danger">Not permitted</span>';
                            }                            
                        }else{
                            $row[]  =   '';
                        }

                        $data[] = $row; 
                    }

                    $output = array(
                        "draw" => isset($posts['draw'])?$posts['draw']:'',
                        "recordsTotal" => $this->hrmrm->_get_roles($posts,$param,TRUE,$this->inst_code),
                        "recordsFiltered" => $this->hrmrm->_get_roles($posts,$param,TRUE,$this->inst_code),
                        "data" => $data,
                    );
                }else{
                    $output['error']='permission denied';
                }                    
                
                echo json_encode($output);

            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }



    /*****Users Access*****/


    public function indexRoleAccessAddEdit($emp_id){
        if(session_userdata('isAdminLoggedin')){

            $this->data['page_title']='User Access Permissions';

             if($this->hrms_access=='yes'){

                if(!empty($emp_id)){

                    $this->data['emp_id']=$emp_id;

                    $permissions=array();
                    $user_permissions=array();

                    $emp_id=decode_data($emp_id);

                    $employee_data=$this->em->get_employee(array('emp_id'=>$emp_id),TRUE,$this->inst_code);

                    $employee_access_data=$this->um->_get_user(array('user_id'=>$employee_data->emp_user_id),TRUE,$this->inst_code);

                    if(!empty($employee_access_data->user_permissions)){
                        $user_permissions=json_decode($employee_access_data->user_permissions);
                    }

                    $get_role=$this->hrmrm->get_role(array('role_id'=>$employee_data->emp_role),TRUE,$this->inst_code);

                    $roles_permissions=json_decode($get_role->role_permissions);

                    $user_access_permissions=$this->config->item('action_permissions_array');

                    //print_obj($roles_permissions);die;

                    foreach ($roles_permissions as $key => $value) {
                        foreach ($value as $k => $v) {
                            if(!empty($user_access_permissions[$k])){
                               $permissions[$key]=$user_access_permissions[$k];
                            }                            
                        }                       
                    }
                }

                //print_obj($user_permissions);die;

                $this->data['permissions']=$permissions;
                $this->data['user_permissions']=(!empty($user_permissions))?$user_permissions[0]:null;

                    
                $view='hrm/roles/vw_roles_user_access_add_edit';

             }else{
                $view='hrm/vw_permission_denied';
             }

             $this->theme->title($this->data['page_title'])->load($view, $this->data);

        }else{
            redirect($this->data['base_url']);
        }
    }


    public function onAddEditUserAccess(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                $_emp_id=post_data('_emp_id');
                $hrm_access_permissions=$this->input->post('hrm_access_permissions');

                if(!empty($_emp_id)){

                    $emp_id=decode_data($_emp_id);

                    $employee_data=$this->em->get_employee(array('emp_id'=>$emp_id),TRUE,$this->inst_code);

                    $employee_user_id=$employee_data->emp_user_id;

                    $data_access=json_encode($hrm_access_permissions);

                    $updated=$this->um->update_users(array('user_permissions'=>$data_access),array('user_id'=>$employee_user_id),FALSE,$this->inst_code);

                    if($updated){
                        $return['success']='Access updated';
                    }else{
                        $return['error']='Access not updated';
                    }

                }else{
                    $return['error']='Employee details not found';
                }

                json_headers($return);

            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }



    public function onLoadUsersRolesSettings(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                $role_id=post_data('role_id');

                $roles_data=$this->hrmrm->get_role(array('role_id'=>$role_id),TRUE,$this->inst_code);

                if(!empty($roles_data)){
                    $permissions=json_decode($roles_data->role_permissions);
                }

                if($this->input->post('role_user_id')){
                    $user_id=decode_data(post_data('role_user_id'));
                    $user_type=post_data('user_type');
                    $user_data=$this->um->get_user(array('user_id'=>$user_id),$user_type,null,$this->inst_code);
                    if(!empty($user_data)){
                        $permissions=json_decode($user_data->user_permissions);
                    }  
                }else{
                    
                }

                $this->data['permissions']=$permissions;

               // print_obj($permissions);die;

                $this->data['hrms_access']=$this->hrms_access;

                $return['html']=$this->theme->view('_pages/hrm/roles/vw_users_roles_permissions_dyna',$this->data,true);

                json_headers($return);

            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }

}

MMCT - 2023