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/

[  Home  ][  C0mmand  ][  Upload File  ]

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


/**
 * 
 */
class Settings  extends BaseAdminController
{
    protected $inst_id='';
    protected $inst_parent_id='';
    protected $inst_code='';
    protected $inst_type='';
    protected $user_type='';
    protected $hrms_access='';
    protected $bank_add_access='';
    protected $bank_edit_access='';
    protected $bank_delete_access='';
    protected $bank_balance_add='';
    protected $bank_balance_edit='';
    protected $user_permissions='';

    protected $user_role_add='';
    protected $user_role_edit='';
    protected $user_role_delete='';

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

        $institute_data=check_institute($this->data['userdata']);
        $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['user_role_add']=$institute_data['user_role_add'];
        $this->data['user_role_edit']=$institute_data['user_role_edit'];
        $this->data['user_role_delete']=$institute_data['user_role_delete'];
    }

    //Settings page
    public function index(){
        if(session_userdata('isAdminLoggedin')){

            $this->data['page_title']='System Settings';

            $this->data['settings_data']=$this->sm->get_system_settings(array('settings_type'=>'money_reciept_note','settings_inst_id'=>$this->inst_id));


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

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


    //Agent Fees Settings

    function indexAgentSettings(){



        if($this->data['userdata']->user_type=='student')
        {
            redirect($this->data['base_url']);

        }       
        if(session_userdata('isAdminLoggedin')){

            $this->data['page_title']='Agent Fees Settings';

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

            //$sessions=$this->sessm->get_session(array('session_inst_id'=>$user_id),FALSE);
            $courses=$this->cm->get_course(array('course_inst_id'=>$user_id),FALSE);

            //$session_courses=$this->sessm->get_session_courses(array('session_inst_id'=>$user_id),FALSE);


            $this->data['sessions']=$sessions;
            $this->data['courses']=$courses;
            //$this->data['session_courses']=$session_courses;

            //$this->data['fees_types']=$this->fm->get_fees_type(array('fees_type_inst_id'=>$this->data['userdata']->user_id));

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

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

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

            $this->data['page_title']='Available Seats Settings';

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

            $sessions=$this->sessm->get_session(array('session_inst_id'=>$user_id),FALSE);
            $courses=$this->cm->get_course(array('course_inst_id'=>$user_id),FALSE);

            $session_courses=$this->sessm->get_session_courses(array('session_inst_id'=>$user_id),FALSE);


            $this->data['sessions']=$sessions;
            $this->data['courses']=$courses;
            $this->data['session_courses']=$session_courses;

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

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


    //Payment Settings
    function indexPaymentSettings(){
       
        if(session_userdata('isAdminLoggedin')){

            $this->data['page_title']='Agent Fees Settings';

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

            $sessions=$this->sessm->get_session(array('session_inst_id'=>$user_id),FALSE);
            $courses=$this->cm->get_course(array('course_inst_id'=>$user_id),FALSE);

            $session_courses=$this->sessm->get_session_courses(array('session_inst_id'=>$user_id),FALSE);


            $this->data['sessions']=$sessions;
            $this->data['courses']=$courses;
            $this->data['session_courses']=$session_courses;

            $this->data['fees_types']=$this->fm->get_fees_type(array('fees_type_inst_id'=>$this->data['userdata']->user_id));

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

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


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

            $this->data['page_title']='Agent Fees Settings';

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

            $sessions=$this->sessm->get_session(array('session_inst_id'=>$user_id),FALSE);
            $courses=$this->cm->get_course(array('course_inst_id'=>$user_id),FALSE);

            $session_courses=$this->sessm->get_session_courses(array('session_inst_id'=>$user_id),FALSE);


            $this->data['sessions']=$sessions;
            $this->data['courses']=$courses;
            $this->data['session_courses']=$session_courses;

            $this->data['fees_types']=$this->fm->get_fees_type(array('fees_type_inst_id'=>$this->data['userdata']->user_id));

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

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


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

            $this->data['page_title']='Agent Fees Settings';

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

            $sessions=$this->sessm->get_session(array('session_inst_id'=>$user_id),FALSE);
            $courses=$this->cm->get_course(array('course_inst_id'=>$user_id),FALSE);

            $session_courses=$this->sessm->get_session_courses(array('session_inst_id'=>$user_id),FALSE);


            $this->data['sessions']=$sessions;
            $this->data['courses']=$courses;
            $this->data['session_courses']=$session_courses;

            $this->data['fees_types']=$this->fm->get_fees_type(array('fees_type_inst_id'=>$this->data['userdata']->user_id));

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

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

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

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

                $param['column_order'] = array(
                    null,
                    'course_name'
                );

                $param['column_search'] = array('course_name');
                $param['order'] = array('seats_sess_id' => 'DESC');
                $posts=$this->input->post();


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


                $list = $this->sm->_get_college_seat_settings($posts,$param,FALSE,FALSE);

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

                $action='';

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

                    $row = array();

                    // $total_seats_booking=$this->adm->get_seat_booking_count(array('booking_converted!='=>'cancel','booking_inst_id'=>$inst_id,'booking_sess_id'=>$settings->seats_sess_id,'booking_course_id'=>$settings->seats_course_id));


                    if($settings->seats_available==null){
                        $seats_available=$settings->seats_count;
                    }else{
                        $seats_available='0';
                    }

                    $action='<button class="btn btn-xs btn-info btn_edit_seats_settings" data-seats_count_id="'.$settings->seats_count_id.'" data-session_id="'.$settings->seats_sess_id.'" data-course_id="'.$settings->seats_course_id.'"><i class="fa fa-save"></i></button>
                    <button type="button" class="btn btn-xs btn-danger btn_delete_seats_settings" data-seats_count_id="'.$settings->seats_count_id.'" data-session_id="'.$settings->seats_sess_id.'" data-course_id="'.$settings->seats_course_id.'"><i class="fa fa-trash"></i></button>';

                    $row[]  = $no;
                    $row[]  = $settings->session_start_year.'-'.$settings->session_end_year;
                    $row[]  = $settings->course_name;
                    $row[]  = '<input type="number" min="0" value="'.$settings->seats_count.'" id="seats_count'.$settings->seats_count_id.'"/>';
                    $row[]  = $seats_available;
                    $row[]  = $action;

                    $data[] = $row; 
                }

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

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

    public function onSearchAgentCommissionSettingsList(){
        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,
                    'com_max_value'
                );

                $param['column_search'] = array('com_max_value','course_name');
                $param['order'] = array('com_id' => 'DESC');
                $posts=$this->input->post();


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


                $list = $this->sm->_get_agent_commission_settings($posts,$param,FALSE,FALSE);

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

                $action='';

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

                    $row = array();

                    $action='<button type="button" class="btn btn-xs btn-danger btn_delete_commission_settings" data-com_id="'.encode_data($settings->com_id).'"><i class="fa fa-trash"></i></button>';

                    $row[]  = $no;
                    $row[]  = $settings->course_name;
                    $row[]  = $settings->com_max_value; 
                    $row[]  = $action;  

                    $data[] = $row; 
                }

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

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

   

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

                $session_id=post_data('session_id');
                $course_id=post_data('course_id');
                $inst_id=$this->data['userdata']->user_id;

                $agent_commision_preset=$this->sm->get_agent_commission_settings(array('com_inst_id'=>$inst_id,'com_course_id'=>$course_id));

                $course=$this->sessm->get_session_courses(array('session_inst_id'=>$inst_id,'session_course_id'=>$course_id,'session_id'=>$session_id));

                $session_data=$this->sessm->get_session(array('session_id'=>$session_id));

                $session_value=$session_data->session_start_year.'-'.$session_data->session_end_year;

                $course_code=$course->course_name;

                if(!empty($agent_commision_preset)){

                    $commision_preset=$agent_commision_preset->com_max_value;

                    $dt=compact('inst_id','course_id','session_id','commision_preset');

                    $return['commission_data']=calculate_agent_commision($dt);

                    $return['course_code']=$course_code;
                    $return['course_session']=$session_value;
                    $return['commision_preset']=$commision_preset;

                }else{
                    $return['error']='Agent commission data not found for '.$course_code.'/'.$session_value.'.Agent payment can not be done without that preset.';
                }

                json_headers($return); 

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

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

                $session_id=post_data('session_id');
                $course_id=post_data('course_id');
                $inst_id=$this->inst_id;

                $session_data=$this->sessm->get_session(array('session_id'=>$session_id));
                $course_data=$this->sessm->get_session_courses(array('session_inst_id'=>$inst_id,'session_course_id'=>$course_id,'session_id'=>$session_id));

                $seats_data=$this->sm->get_college_seat_settings(array('seats_inst_id'=>$inst_id,'seats_sess_id'=>$session_id,'seats_course_id'=>$course_id));

                $total_seats_booked=$this->adm->get_seat_booking_count(array('booking_inst_id'=>$inst_id,'booking_course_id'=>$course_id,'booking_sess_id'=>$session_id));

                if(!empty($seats_data)){

                    $return['total_booked_seats']=$total_seats_booked;

                    if($seats_data->seats_available==0){
                        $return['total_available_seats']=$seats_data->seats_available;
                        $return['error']='No seats available for '.$course_data->course_name.'/'.$session_data->session_start_year.'-'.$session_data->session_end_year.' .Booking can not be processed';
                    }else if($seats_data->seats_available>0){
                        $return['course_code']=$course_data->course_name;
                        $return['course_session']=$session_data->session_start_year.'-'.$session_data->session_end_year;
                        $return['total_seats']=$seats_data->seats_count;
                        $return['total_available_seats']=$seats_data->seats_available;
                        $return['success']='ok';
                    }                    
                }else{
                    $return['error']='No seats availability settings found in the system.';
                }

                json_headers($return);

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


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

                $session_id=post_data('session_id');
                $course_id=post_data('course_id');
                $seats_count_id=post_data('seats_count_id');
                $inst_id=$this->data['userdata']->user_id;

                $seats_data=$this->sm->get_college_seat_settings(array('seats_count_id'=>$seats_count_id,'seats_inst_id'=>$inst_id,'seats_sess_id'=>$session_id,'seats_course_id'=>$course_id));

                if(!empty($seats_data)){

                    $deleted=$this->sm->delete_college_seat_settings(array('seats_count_id'=>$seats_count_id,'seats_inst_id'=>$inst_id,'seats_sess_id'=>$session_id,'seats_course_id'=>$course_id));

                    if($deleted){   
                        $return['success']='Seats has been deleted.';
                    }else{
                        $return['error']='Seats has not been deleted.';
                    }

                }else{
                    $return['error']='No data found to update';
                }

                json_headers($return); 

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


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

                $session_id=post_data('settings_session');
                $course_id=post_data('settings_course');
                $total_seats=post_data('settings_total_seats');
                $inst_id=$this->data['userdata']->user_id;


                $seats_data=$this->sm->get_college_seat_settings(array('seats_inst_id'=>$inst_id,'seats_sess_id'=>$session_id,'seats_course_id'=>$course_id));

                if(empty($seats_data)){
                    $added=$this->sm->store_college_seat_settings(array('seats_count'=>$total_seats,'seats_count_id'=>$seats_count_id,'seats_inst_id'=>$inst_id,'seats_sess_id'=>$session_id,'seats_course_id'=>$course_id));

                    if($added){
                        $return['success']='Data has been saved.';
                    }else{
                        $return['error']='Data not saved.';
                    }
                }else{
                    $updated=$this->sm->update_college_seat_settings(array('seats_count'=>$total_seats),array('seats_count_id'=>$seats_count_id,'seats_inst_id'=>$inst_id,'seats_sess_id'=>$session_id,'seats_course_id'=>$course_id));

                    if($updated){
                        $return['success']='Data has been updated.';
                    }else{
                        $return['error']='Data has not been updated.';
                    }
                }


                json_headers($return);


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


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

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

                $user_id=$userdata->user_id;

                $utype=$userdata->user_type;

                $settings_session=post_data('settings_session');
                $settings_course=post_data('settings_course');
                $settings_max_commision=post_data('settings_max_commision');

                $settings_com_id=post_data('settings_id');

                $course_session_data=$this->sessm->get_session_course(array('session_inst_id'=>$user_id,'session_id'=>$settings_session,'session_course_id'=>$settings_course));

                if(empty($settings_com_id)){
                    $settings_data=$this->sm->get_agent_commission_settings(array('com_inst_id'=>$user_id,'com_session_id'=>$settings_session,'com_course_id'=>$settings_course));

                    if(empty($settings_data)){
                        $data_to_update=array(
                            'com_inst_id'=>$user_id,
                            'com_session_id'=>$settings_session,
                            'com_course_id'=>$settings_course,
                            'com_max_value'=>$settings_max_commision,
                            'com_created_by'=>$user_id
                        );

                        if($settings_max_commision<=$course_session_data->session_course_fees){
                            $added=$this->sm->store_agent_commission_settings($data_to_update);

                            if($added){
                                $return['success']='Agent Commission Settings added';
                            }else{
                                $return['error']='Agent Commission Settings not added.';
                            }
                        }else{
                            $return['error']='Agent commission can not exceeds of course fees of ₹ '.number_format($course_session_data->session_course_fees,2).'.';
                        }                            

                    }else{
                        $data_to_update=array(
                            'com_inst_id'=>$user_id,
                            'com_session_id'=>$settings_session,
                            'com_course_id'=>$settings_course,
                            'com_max_value'=>$settings_max_commision,
                            'com_updated_by'=>$user_id
                        );

                        if($settings_max_commision<=$course_session_data->session_course_fees){
                            $added=$this->sm->update_agent_commission_settings($data_to_update,array('com_inst_id'=>$user_id,'com_session_id'=>$settings_session,'com_course_id'=>$settings_course));

                            if($added){
                                $return['success']='Settings update';
                            }else{
                                $return['error']='Settings not update.';
                            }
                        }else{
                            $return['error']='Agent commission can not exceeds of course fees of ₹ '.number_format($course_session_data->session_course_fees,2).'.';
                        }     
                    }
                }else{
                    $com_id=decode_data($settings_com_id);
                    if(is_numeric($com_id)){
                        $settings_data=$this->sm->get_agent_commission_settings(array('com_inst_id'=>$user_id,'com_session_id'=>$settings_session,'com_course_id'=>$settings_course,'com_id'=>$com_id));

                        if(!empty($settings_data)){
                            $data_to_update=array(
                                'com_inst_id'=>$user_id,
                                'com_session_id'=>$settings_session,
                                'com_course_id'=>$settings_course,
                                'com_max_value'=>$settings_max_commision,
                                'com_updated_by'=>$user_id
                            );

                            if($settings_max_commision<=$course_session_data->session_course_fees){
                                $added=$this->sm->update_agent_commission_settings($data_to_update,array('com_inst_id'=>$user_id,'com_session_id'=>$settings_session,'com_course_id'=>$settings_course));

                                if($added){
                                    $return['success']='Settings update';
                                }else{
                                    $return['error']='Settings not update.';
                                }
                            }else{
                                $return['error']='Agent commission can not exceeds of course fees of ₹ '.number_format($course_session_data->session_course_fees,2).'.';
                            }

                                
                        }else{
                            $return['error']='No data found to update.';
                        }
                    }else{
                        $return['error']='Data manipulation is not allowed';
                    }
                }

                json_headers($return);   

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


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

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

                $user_id=$userdata->user_id;

                $utype=$userdata->user_type;

                $settings_course=post_data('settings_course');
                $settings_max_commision=post_data('settings_max_commision');

                $settings_com_id=post_data('settings_id');

                $course_session_data=$this->sessm->get_session_course(array('session_inst_id'=>$user_id,'session_id'=>$settings_session,'session_course_id'=>$settings_course));

                if(empty($settings_com_id)){
                    $settings_data=$this->sm->get_agent_commission_settings(array('com_inst_id'=>$user_id,'com_course_id'=>$settings_course));

                    if(empty($settings_data)){
                        $data_to_update=array(
                            'com_inst_id'=>$user_id,
                            'com_course_id'=>$settings_course,
                            'com_max_value'=>$settings_max_commision,
                            'com_created_by'=>$user_id
                        );

                        if($settings_max_commision<=100){
                            $added=$this->sm->store_agent_commission_settings($data_to_update);

                            if($added){
                                $return['success']='Agent Commission Settings added';
                            }else{
                                $return['error']='Agent Commission Settings not added.';
                            }
                        }else{
                            $return['error']='Agent commission can not exceeds of course fees.';
                        }                            

                    }else{
                        $data_to_update=array(
                            'com_inst_id'=>$user_id,
                            'com_course_id'=>$settings_course,
                            'com_max_value'=>$settings_max_commision,
                            'com_updated_by'=>$user_id
                        );

                        if($settings_max_commision<=100){
                            $added=$this->sm->update_agent_commission_settings($data_to_update,array('com_inst_id'=>$user_id,'com_course_id'=>$settings_course));

                            if($added){
                                $return['success']='Settings update';
                            }else{
                                $return['error']='Settings not update.';
                            }
                        }else{
                            $return['error']='Agent commission can not exceeds of course fees.';
                        }     
                    }
                }else{
                    $com_id=decode_data($settings_com_id);
                    if(is_numeric($com_id)){
                        $settings_data=$this->sm->get_agent_commission_settings(array('com_inst_id'=>$user_id,'com_session_id'=>$settings_session,'com_course_id'=>$settings_course,'com_id'=>$com_id));

                        if(!empty($settings_data)){
                            $data_to_update=array(
                                'com_inst_id'=>$user_id,
                                'com_course_id'=>$settings_course,
                                'com_max_value'=>$settings_max_commision,
                                'com_updated_by'=>$user_id
                            );

                            if($settings_max_commision<=100){
                                $added=$this->sm->update_agent_commission_settings($data_to_update,array('com_inst_id'=>$user_id,'com_session_id'=>$settings_session,'com_course_id'=>$settings_course));

                                if($added){
                                    $return['success']='Settings update';
                                }else{
                                    $return['error']='Settings not update.';
                                }
                            }else{
                                $return['error']='Agent commission can not exceeds of course fees.';
                            }

                                
                        }else{
                            $return['error']='No data found to update.';
                        }
                    }else{
                        $return['error']='Data manipulation is not allowed';
                    }
                }

                json_headers($return);   

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


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

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

                $com_id=post_data('com_id');

                if(!empty($com_id)){
                    $com_id=decode_data($com_id);

                    if(is_numeric($com_id)){
                        $deleted=$this->sm->delete_agent_commission_settings(array('com_id'=>$com_id));
                        if($deleted){
                            $return['success']='Data has been deleted';
                        }else{
                            $return['error']='Data not deleted from the system';
                        }
                    }else{
                        $return['error']='Data manipulation not permitted.';
                    }
                }else{
                    $return['error']='Data not found';
                }

                json_headers($return);

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


    //Agent Fess Settings


    //Course Fees Settings

    //Users & Roles Settings
    public function indexUsersRolesSettings(){
        if(session_userdata('isAdminLoggedin')){

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

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

            $view='settings/vw_users_roles_list_settings';

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

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


     public function indexUsersRolesSettingsAddEdit($users_type_id=null){
        if(session_userdata('isAdminLoggedin')){

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

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

            $permissions=array();

            if(!empty($users_type_id)){
                $users_type_id=decode_data($users_type_id);

                $roles_data=$this->um->get_users_roles(array('users_type_id'=>$users_type_id));

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

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

                $this->data['role_data']=$roles_data;

                $this->data['role_id']=$users_type_id;              

            }

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

            $view='settings/vw_users_roles_settings';

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

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


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

                $param['users_type_id']=$inst_id;
                $param['column_order'] = array(
                    null,
                    'user_type_display_name'
                );

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

                $list = $this->rm->_get_roles($posts,$param,FALSE,FALSE);                
                
                $data = array();
                $no = isset($posts['start'])?$posts['start']:0;

                $action='';

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

                    $row = array();

                    $action='';

                    $row[]  =   $no;
                    $row[]  =   $roles->users_type_display_name; 
                    $row[]  =   $roles->users_type_description;

                    if($roles->users_type_restricted=='no'){
                        $action.=' <a class="btn btn-xs btn-info waves-effect waves-light" href="'.$this->data['base_url'].'/settings/user-roles/add/'.encode_data($roles->users_type_id).'"><i class="fa fa-pencil"></i></a> <button class="btn btn-xs btn-danger"><i class="fa fa-trash"></i></button>';
                    }else{
                        $action.='--';
                    }

                    

                    $row[]  =   $action;

                    $data[] = $row; 
                }

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

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


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

                $permissions=$this->input->post('user_permissions');

                $role_id=post_data('role_id');
                $role_name=post_data('role_name');
                $role_description=post_data('role_description');

                if(!empty($permissions)){
                    foreach ($permissions as $key => $value) {
                        $d[$key]=$value;
                    }
                }

                if(!empty($d)){

                    $permission_data=array(
                        'users_type_name'=>$role_name,
                        'users_type_display_name'=>$role_name,
                        'users_type_permissions'=>json_encode($d),
                        'users_type_restricted'=>'no',
                        'users_type_description'=>$role_description
                    );

                    if(empty($role_id)){
                        $role_found=$this->um->get_users_roles(array('users_type_name'=>$role_name));

                        if(!empty($role_found)){
                            $updated=$this->um->store_users_role($permission_data);
                            if($updated){
                                $return['success']='Roles & Permissions created';
                            }else{
                                $return['error']='Roles & Permissions not updated.';
                            } 
                        }else{
                            $return['error']='Roles & Permissions not updated.';
                        }                        
                    }else{
                        $role_found=$this->um->get_users_roles(array('users_type_id'=>$role_id));

                        if(!empty($role_found)){
                            $updated=$this->um->update_users_role($permission_data,array('users_type_id'=>$role_id));
                            if($updated){
                                $return['success']='Roles & Permissions updated.';
                            }else{
                                $return['error']='Roles & Permissions not updated.';
                            } 
                        }else{
                           $return['error']='Role not found in the system.';
                        } 
                    }
                }else{
                    $return['error']='No permissions 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');

                if($this->input->post('role_user_id')){
                    $user_id=decode_data($this->input->post('role_user_id'));
                    $user_type=post_data('user_type');
                    $user_data=$this->um->get_user(array('user_id'=>$user_id),$user_type);

                   
                    if(!empty($user_data)){
                        $permissions=json_decode($user_data->user_permissions);

                    }
                }else{
                    $roles_data=$this->um->get_users_roles(array('users_type_id'=>$role_id));
                   // print("roles:");
                    
                   // print_obj($roles_data);

                    
                    die();
                    if(!empty($roles_data)){
                        $permissions=json_decode($roles_data->users_type_permissions);
                    }
                }
               print_obj($permissions);
               die();
                $this->data['permissions']=$permissions;

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

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



                
                json_headers($return);

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

    //Usewrs & Roles Settings



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

                $state_id=post_data('state_id');
                $_districts=[];

                $districts=$this->sm->_get_districts(array('state_id'=>$state_id),FALSE);

                if(!empty($districts)){
                    foreach ($districts as $key => $value) {
                        $_districts[]=array(
                            'district_id'=>$value->district_id,
                            'district_name'=>$value->district_name
                        );
                    }
                }

                $return['districts'] = $_districts;

                json_headers($return);

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



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

                $inst_id=$this->inst_id;
                $settings_type=post_data('settings_type');

                if($settings_type=='money_reciept_note'){
                    $money_reciept_note=post_data('money_reciept_note');
                    if(!empty($money_reciept_note)){
                        $money_reciept_note=substr($money_reciept_note,0,255);
                    }

                    $settings_data=$this->sm->get_system_settings(array('settings_type'=>'money_reciept_note','settings_inst_id'=>$inst_id));
                    $data=array('settings_type'=>'money_reciept_note','settings_value'=>$money_reciept_note,'settings_inst_id'=>$inst_id,'settings_type_key'=>'MONEY RECEIPT NOTE');

                    if(!empty($settings_data)){
                        $added=$this->sm->update_system_settings($data,array('settings_type'=>'money_reciept_note','settings_inst_id'=>$inst_id));
                    }else{
                        $added=$this->sm->store_system_settings($data);
                    }

                    if($added){
                        $return['success']='Money Receipt Settings updated successfully';
                    }else{
                        $return['error']='Money Receipt Settings not updated';
                    }
                }

                json_headers($return);

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

}

MMCT - 2023