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/Departments.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');


/**
 * 
 */
class Departments  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->load->model('hrm/departments_model','dm');
    }

    function index(){
        if($this->data['userdata']->user_type=='student' || $this->data['userdata']->user_type=='agent'){
            redirect($this->data['base_url']);
        }
       
        if(session_userdata('isAdminLoggedin')){
            // $add_access= check_access_control($this->data['userdata'],'hrm_department','add');
            // $edit_access= check_access_control($this->data['userdata'],'hrm_department','edit');
            // $delete_access= check_access_control($this->data['userdata'],'hrm_department','delete');
            // $data['add_access']=$add_access;
            // $data['edit_access']=$edit_access;

            $add_edit_view_access = check_access_control($this->data['userdata'], 'hrm_department', ['add', 'edit', 'view']);


            $this->data['add_edit_access'] =$add_edit_view_access;

            $this->data['page_title']='Departments';

            if($this->hrms_access=='yes'){  
                
                if($add_edit_view_access=='yes'){
                    $view='hrm/payroll/vw_departments';
                }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']);
        }
    }

    function indexSubDepartments(){
       
        if(session_userdata('isAdminLoggedin')){

            $this->data['page_title']='Sub Departments';

            if($this->hrms_access=='yes'){
                $_department_id=$this->uri->segment(3,0);

                $_departments=array();

                //echo $_department_id;die;

                if(!empty($_department_id) && $_department_id!=='0'){
                   $department_id=decode_data($_department_id);
                   $departments=$this->dm->get_department(array('department_id'=>$department_id,'department_status'=>'active'));

                    $this->data['departments']=$departments;
                    $this->data['department_id']=$_department_id;
                    $this->theme->title($this->data['page_title'])->load('hrm/payroll/vw_departments_sub', $this->data);
                }else{
                    redirect($this->data['base_url'].'/departments');
                }
            }else{
                $this->theme->title($this->data['page_title'])->load('hrm/vw_permission_denied', $this->data);
            }    
            
        }else{

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

    public function onSearchDepartmentsList(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){
                $add_access= check_access_control($this->data['userdata'],'hrm_department','add');
                $edit_access= check_access_control($this->data['userdata'],'hrm_department','edit');
                $delete_access= check_access_control($this->data['userdata'],'hrm_department','delete');

                $param['column_order'] = array(
                    null,
                    'department_name'
                );
                
                $param['department_institute_id']=$this->inst_id;

                $param['column_search'] = array('department_name');
                $param['order'] = array('department_id' => 'ASC');
                $posts=$this->input->post();

                $list = $this->dm->_get_departments($posts,$param,FALSE,$this->inst_code,FALSE);

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

                $action='';

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

                    $row = array();

                    if(!empty($agent_image) && is_file(FCPATH.$agent_image->media_disk_path)){
                        $image=$this->data['base_url'].$agent_image->media_disk_path;
                    }else{
                        $image=$this->data['no_image'];
                    }

                    $row[]  =   $no;
                    $row[]  =   $dep->department_name;
                    $row[]  =   $dep->department_name_alias;

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

                    $row[]  =   $status;

                    $action='<div class="btn-group btn-group-rounded" role="group" aria-label="Basic example">';

                    //<a href="departments/'.encode_data($dep->department_id).'" class="btn btn-xs btn-dark btn_dep_edit" data-dep_id="'.encode_data($dep->department_id).'">Sub Departments</a>

                    if($edit_access=='yes'  && $delete_access=='yes'){
                        $action.='
                        <button type="button" class="btn btn-xs btn-dark btn_dep_edit" data-dep_id="'.encode_data($dep->department_id).'" data-dep_name="'.$dep->department_name.'" data-dep_name_alias="'.$dep->department_name_alias.'" data-dep_status="'.$dep->department_status.'"><i class="fa fa-edit"></i></button>
                        <button type="button" class="btn btn-xs btn-danger btn_dep_del" data-dep_id="'.encode_data($dep->department_id).'" data-dep_status="'.$dep->department_status.'"><i class="fa fa-trash"></i></button>';
                    }
                    else if($edit_access=='yes'){
                        $action.=   '
                        <button type="button" class="btn btn-xs btn-dark btn_dep_edit" data-dep_id="'.encode_data($dep->department_id).'" data-dep_name="'.$dep->department_name.'" data-dep_name_alias="'.$dep->department_name_alias.'" data-dep_status="'.$dep->department_status.'"><i class="fa fa-edit"></i></button>';
                    }
                    else if($delete_access=='yes'){

                        $action.='<button type="button" class="btn btn-xs btn-danger btn_dep_del" data-dep_id="'.encode_data($dep->department_id).'" data-dep_status="'.$dep->department_status.'"><i class="fa fa-trash"></i></button>';
                    }
                    else{                              
                        $action.='<span class="badge badge-danger">Not permitted</span>';
                    }

                    $action.='</div>';

                    $row[]=$action;

                    $data[] = $row; 
                }

                $output = array(
                    "draw" => isset($posts['draw'])?$posts['draw']:'',
                    "recordsTotal" => $this->dm->_get_departments($posts,$param,TRUE,$this->inst_code),
                    "recordsFiltered" => $this->dm->_get_departments($posts,$param,TRUE,$this->inst_code),
                    "data" => $data,
                );
                
                echo json_encode($output);

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


    public function onAddEditDepartments()
    {
        if (session_userdata('isAdminLoggedin') === TRUE && session_userdata('admin_id')) {
            if ($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD') === 'POST') {
    
                // Load validation library
                $this->load->library('form_validation');
    
                // Define validation rules
                $this->form_validation->set_rules('_department', 'Department ID', 'trim');
                $this->form_validation->set_rules('department_name', 'Department Name', 'trim|required|max_length[100]');
                $this->form_validation->set_rules('department_name_alias', 'Department Alias', 'trim|max_length[50]');
                $this->form_validation->set_rules('department_status', 'Department Status', 'trim|required|in_list[active,inactive]');
    
                if ($this->form_validation->run() === FALSE) {
                    $return['error'] = validation_errors();
                    json_headers($return);
                    return;
                }
    
                $_department = post_data('_department');
                $department_name = post_data('department_name');
                $department_name_alias = post_data('department_name_alias');
                $department_status = post_data('department_status');
    
                $department_instid = $this->data['userdata']->user_id;
    
                if (empty($_department)) {
                    // Check if the department already exists
                    $department_found = $this->dm->get_department([
                        'department_name' => $department_name,
                        'department_institute_id' => $department_instid
                    ]);
    
                    if (empty($department_found)) {
                        $data_to_add = [
                            'department_name' => $department_name,
                            'department_name_alias' => $department_name_alias,
                            'department_institute_id' => $department_instid,
                            'department_status' => $department_status
                        ];
    
                        $added = $this->dm->store_department($data_to_add);
    
                        if ($added) {
                            $return['success'] = 'Department added successfully.';
                        } else {
                            $return['error'] = 'Failed to add department. Please try again.';
                        }
                    } else {
                        $return['error'] = 'Department already exists in the system.';
                    }
                } else {
                    $department_id = decode_data($_department);
    
                    // Check if the department exists for update
                    $department_found = $this->dm->get_department([
                        'department_id' => $department_id,
                        'department_institute_id' => $department_instid
                    ]);
    
                    if (!empty($department_found)) {
                        $data_to_add = [
                            'department_name' => $department_name,
                            'department_name_alias' => $department_name_alias,
                            'department_institute_id' => $department_instid,
                            'department_status' => $department_status
                        ];
    
                        $updated = $this->dm->update_department($data_to_add, [
                            'department_id' => $department_id,
                            'department_institute_id' => $department_instid
                        ]);
    
                        if ($updated) {
                            $return['success'] = 'Department updated successfully.';
                        } else {
                            $return['error'] = 'Failed to update department. Please try again.';
                        }
                    } else {
                        $return['error'] = 'Department not found in the system.';
                    }
                }
    
                json_headers($return);
            } else {
                $return['error'] = 'Invalid request method.';
                json_headers($return);
            }
        } else {
            $return['error'] = 'Unauthorized access. Please log in.';
            json_headers($return);
        }
    }
    


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

                $_departnment=post_data('department_id');

                $department_instid=$this->data['userdata']->user_id;

                if(!empty($_departnment)){
                    $departnment_id=decode_data($_departnment);

                    $department_found=$this->dm->get_department(array('department_id'=>$departnment_id,'department_institute_id'=>$department_instid));

                    if(!empty($department_found)){

                        $deleted=$this->dm->delete_department(array('department_id'=>$departnment_id,'department_institute_id'=>$department_instid));

                        if($deleted){
                            $return['success']='Department deleted successfully.';
                        }else{
                            $return['error']='Department not deleted.';
                        }

                        $return['success']='Department deleted successfully.';
                    }else{
                       $return['error']='Department not found'; 
                    }
                }else{
                    $return['error']='Data manipulation not permitted';
                }


                json_headers($return);

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


    public function onSearchSubDepartmentsList(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){
                $param['column_order'] = array(
                    null,
                    'department_name'
                );

                $param['department_institute_id']=$this->data['userdata']->user_id;

                $param['column_search'] = array('department_name');
                $param['order'] = array('department_sub_id' => 'ASC');
                $posts=$this->input->post();

                $posts['department_id']= decode_data($posts['department_id']);  

                $list = $this->dm->_get_sub_departments($posts,$param,FALSE,FALSE);

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

                $action='';

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

                    $row = array();

                    if(!empty($agent_image) && is_file(FCPATH.$agent_image->media_disk_path)){
                        $image=$this->data['base_url'].$agent_image->media_disk_path;
                    }else{
                        $image=$this->data['no_image'];
                    }

                    $row[]  =   $no;
                    $row[]  =   $dep->department_name;
                    $row[]  =   $dep->department_name_alias;

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

                    $row[]  =   $status;
                    
                    $row[]  =   '
                    <button type="button" class="btn btn-xs btn-dark btn_sub_dep_edit" data-dep_id="'.encode_data($dep->department_sub_id).'" data-dep_name="'.$dep->department_name.'" data-dep_name_alias="'.$dep->department_name_alias.'" data-dep_status="'.$dep->department_status.'"><i class="fa fa-pencil"></i></button>
                    <button type="button" class="btn btn-xs btn-danger btn_sub_dep_del" data-dep_id="'.encode_data($dep->department_sub_id).'" data-dep_status="'.$dep->department_status.'"><i class="fa fa-trash"></i></button>';

                    $data[] = $row; 
                }

                $output = array(
                    "draw" => isset($posts['draw'])?$posts['draw']:'',
                    "recordsTotal" => $this->dm->_get_sub_departments($posts,$param,TRUE),
                    "recordsFiltered" => $this->dm->_get_sub_departments($posts,$param,TRUE),
                    "data" => $data,
                );
                
                echo json_encode($output);

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


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

                $_department=post_data('_sub_department');
                $department_name=post_data('department_name');
                $department_name_alias=post_data('department_name_alias');
                $department_status=post_data('department_status');

                $department_id=post_data('department_id');

                $department_instid=$this->data['userdata']->user_id;

                if(empty($_department)){

                    $department_id=decode_data($department_id);

                    $department_found=$this->dm->get_sub_department(array('department_name'=>$department_name,'department_institute_id'=>$department_instid,'department_pk_id'=>$department_id));

                    if(empty($department_found)){

                        $data_to_add=array(
                            'department_pk_id'=>$department_id,
                            'department_name'=>$department_name,
                            'department_name_alias'=>$department_name_alias,
                            'department_institute_id'=>$department_instid,
                            'department_status'=>$department_status
                        );

                        $added=$this->dm->store_sub_department($data_to_add);

                        if($added){
                            $return['success']='Department added.';
                        }else{
                            $return['error']='Department not added.';
                        }

                    }else{
                        $return['error']='Department already foudn in the system';
                    }
                }else{

                    $sub_department_id=decode_data($_department);
                    $department_id=decode_data($department_id);

                    $department_found=$this->dm->get_sub_department(array('department_sub_id'=>$sub_department_id,'department_pk_id'=>$department_id,'department_institute_id'=>$department_instid));

                    if(!empty($department_found)){
                        $data_to_add=array(
                            'department_name'=>$department_name,
                            'department_name_alias'=>$department_name_alias,
                            'department_institute_id'=>$department_instid,
                            'department_status'=>$department_status
                        );

                        $added=$this->dm->update_sub_department($data_to_add,array('department_sub_id'=>$sub_department_id,'department_pk_id'=>$department_id,'department_institute_id'=>$department_instid));

                        if($added){
                            $return['success']='Department updated.';
                        }else{
                            $return['error']='Department not updated.';
                        }
                    }else{
                        $return['error']='Department data not found in the system.';
                    }
                }

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



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

                $_department=post_data('department_id');
                $_sub_department=post_data('department_sub_id');

                $department_instid=$this->data['userdata']->user_id;

                if(!empty($_department)){
                    $departnment_id=decode_data($_department);

                    $sub_department_id=decode_data($_sub_department);

                    $department_found=$this->dm->get_sub_department(array('department_sub_id'=>$sub_department_id,'department_pk_id'=>$departnment_id,'department_institute_id'=>$department_instid));

                    if(!empty($department_found)){

                        $deleted=$this->dm->delete_sub_department(array('department_sub_id'=>$sub_department_id,'department_pk_id'=>$departnment_id,'department_institute_id'=>$department_instid));

                        if($deleted){
                            $return['success']='Department deleted successfully.';
                        }else{
                            $return['error']='Department not deleted.';
                        }

                        $return['success']='Department deleted successfully.';
                    }else{
                       $return['error']='Department not found'; 
                    }
                }else{
                    $return['error']='Data manipulation not permitted';
                }


                json_headers($return);

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


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

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

                $department_id=post_data('department_id');

                $departments=array();

                //,'department_institute_id'=>$inst_id,'department_institute_type'=>$inst_type

                $_departments=$this->dm->get_department(array('department_status'=>'active'),FALSE);

                //print_obj($_departments);die;

                if(!empty($_departments)){
                    foreach ($_departments as $key => $value) {
                        $departments[]=array(
                            'department_id'=>$value->department_id,
                            'department_name'=>$value->department_name,
                            'selected'=>($value->department_id==$department_id)?'selected':''
                        );
                    }
                }

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

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

                json_headers($return);

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

MMCT - 2023