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

//require_once(APPPATH.'third_party/vendor/paytm/paytmchecksum/PaytmChecksum.php');
//use paytm\checksum\PaytmChecksumLibrary;


/**
 * 
 */
class Admission  extends BaseAdminController
{
    protected $inst_id='';
    protected $inst_parent_id='';
    protected $branch_parent_inst_id='';
    protected $user_id='';
    protected $inst_code='';
    protected $inst_ph='';
    protected $inst_email='';
    protected $inst_type='';
    protected $user_type='';
    protected $admission_view_access='';
    protected $student_upload_limit='';
    protected $student_data_can_be_uploaded='no';
    protected $course_fees_edit_access='no';
    protected $course_booking_fees_edit_access='no';
    protected $user_has_online_pay_mode='no';
    protected $user_has_split_pay_mode='no';
    protected $inst_sem_payment_restriction='yes';

    protected $inst_lateral_course_applicable='no';

    protected $inst_lateral_sem_start='0';

    protected $inst_student_data_excel_format='1';

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

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

        //print_obj($institute_data);die;

        $this->user_type=$institute_data['user_type'];

        $this->inst_id=$institute_data['institute_id'];
        $this->inst_parent_id=$institute_data['inst_parent_id'];
        $this->branch_parent_inst_id=$institute_data['branch_parent_inst_id'];
        $this->inst_ph=$institute_data['inst_ph'];
        $this->inst_email=$institute_data['inst_email'];
        $this->user_id=$institute_data['user_id'];
        $this->inst_code=$institute_data['inst_code'];
        $this->inst_type=$institute_data['inst_type'];
        $this->admission_view_access=$institute_data['admission_view_access'];
        $this->admission_add_access=$institute_data['admission_add_access'];
        $this->student_upload_limit=$institute_data['student_upload_limit'];
        $this->student_data_can_be_uploaded=$institute_data['student_data_can_be_uploaded'];
        $this->course_fees_edit_access=$institute_data['course_fees_edit'];
        $this->course_booking_fees_edit_access=$institute_data['course_booking_fees_edit'];
        $this->ams_access=$institute_data['ams_access'];
        $this->user_has_online_pay_mode=$institute_data['user_has_online_pay_mode'];
        $this->user_has_split_pay_mode=$institute_data['user_has_split_pay_mode'];
        $this->inst_in_bill_print=$institute_data['inst_in_bill_print'];
        $this->inst_sem_payment_restriction=$institute_data['inst_sem_payment_restriction'];

        $this->inst_phonepay_txn_required=$institute_data['inst_phonepay_txn_required'];

        $this->inst_lateral_sem_start=$institute_data['inst_lateral_sem_start'];
        
        $this->inst_lateral_course_applicable=$institute_data['inst_lateral_course_applicable'];

        $this->inst_student_data_excel_format=$institute_data['inst_student_data_excel_format'];

    }

    function index(){
       
        if(session_userdata('isAdminLoggedin')){
            $userdata=$this->data['userdata'];
            $db_group=$userdata->user_code;
            $this->data['bredcrumb_data']='Admission';
            $this->data['page_title']='Admission';

            if($this->data[userdata]->user_role=='1'){
                $this->admission_view_access='yes';
            }

            if($this->admission_view_access=='yes'){
              
                $data_access=check_access_control($this->data['userdata'],'admission_process',['view']);

                if($this->data[userdata]->user_role=='1'){
                    $data_access='yes';
                }

                if($data_access=='yes'){
                    $inst_permissions=array();

                    $paytmParams = array();

                    $sessions=$this->sessm->get_session_specific('session_id,session_inst_id,session_start_year,session_end_year,session_status',array('session_inst_id'=>$this->inst_id,'session_status'=>'active'),FALSE);

                    $courses=$this->cm->get_course(array('course_inst_id'=>$this->inst_id),FALSE);

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

                    $get_institute_permissions=$this->um->get_institute_permissions(array('permission_inst_id'=>$this->inst_id,'permission_inst_type'=>$this->inst_type,'permission_status'=>'active'),FALSE,FALSE);

                    if(!empty($get_institute_permissions)){
                        foreach ($get_institute_permissions as $key => $value) {
                            $inst_permissions[]=$value->permission_value;
                        }
                    }

                    if(in_array('admission_process', $inst_permissions)){
                        $module_permitted='yes';
                    }else{
                        $module_permitted='no';
                    }

                    $check_upload_limit=check_max_upload_limit($this->data['userdata'],$db_group);
                    $check_account=check_account_renewal_status($this->data['userdata']);                    

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

                    $this->data['student_upload_limit']=$this->student_upload_limit;//$check_upload_limit['student_upload_limit'];
                    $this->data['student_data_can_be_uploaded']=$this->student_data_can_be_uploaded;//$check_upload_limit['student_data_can_be_uploaded'];
                    $this->data['module_permitted']=$module_permitted;

                    $this->data['expiry_message']=$check_account['expiry_message'];
                    $this->data['expired_message']=$check_account['expired_message'];

                    $this->data['excel_type']='direct_admission';

                    if($this->inst_student_data_excel_format==1){
                        $excel_format=base_url('uploads/app/samples/sample-student-excel-1.xlsx');
                    }else if($this->inst_student_data_excel_format==2){
                        $excel_format=base_url('uploads/app/samples/sample-student-excel-2.xlsx');
                    }

                    $this->data['excel_type']=$this->inst_student_data_excel_format;

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

                    //print_obj($this->data);die;

                    $this->theme->title($this->data['page_title'])->add_partial('partial_upload_direct_admission_excel_modal',$this->data)->add_partial('partial_temp_exceldata_load_modal',$this->data)->load('admission/vw_admission', $this->data);
                }else{
                    $this->theme->title($this->data['page_title'])->load('admission/vw_permission_denied', $this->data);
                }
                
            }else{
                $this->theme->title($this->data['page_title'])->load('admission/vw_permission_denied', $this->data);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }


    function indexRegister(){
       
        if(session_userdata('isAdminLoggedin')){
            $userdata=$this->data['userdata'];
            $db_group=$userdata->user_code;
            $this->data['page_title']='Admission';
            $this->data['bredcrumb_data']='Admission';

            //print_obj($this->data);die;

            if($this->data['userdata']->user_role=='1'){
                $this->admission_add_access='yes';
            }

            if($this->admission_add_access=='yes'){
                $data_access=check_access_control($this->data['userdata'],'admission_process',['add']);

                if($this->data['userdata']->user_type=='institute'){
                    $data_access='yes';
                }else if($this->data['userdata']->user_type=='agent'){
                    $data_access='yes';
                }

                if($data_access=='yes'){
                    $_hostels=array();

                    $_hostels_arr[]=array(
                        'hostel_id'=>'no',
                        'hostel_name'=>'Not want to avail'
                    );

                    $countries=$this->sm->_get_countries(null,FALSE);
                    $states=$this->sm->_get_states(null,FALSE);

                    $admission_type=$this->sm->_get_booking_types(null,FALSE);
                    $application_type=$this->sm->_get_application_types(array('application_type_inst_id'=>$this->inst_id),FALSE);
                    $caste_category=$this->cst->get_caste_category(null,FALSE);
                    $sections=$this->sec->get_section(array('section_institute_id'=>$this->inst_id),FALSE);
                    $religions=$this->cst->get_religion(null,FALSE);

                    $sessions=$this->sessm->get_session(array('session_inst_id'=>$this->inst_id),FALSE);

                    $courses=$this->cm->get_course(array('course_inst_id'=>$this->inst_id),FALSE);

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

                    $blood_groups=$this->sm->_get_blood_groups(null,FALSE);

                    $occupations=$this->sm->_get_occupations(null,FALSE);

                    $hostels=$this->hm->get_hostel(array('hostel_inst_id'=>$this->inst_id),FALSE);

                    if(!empty($hostels)){
                        foreach ($hostels as $key => $value) {
                            $_hostels[]=array(
                                'hostel_id'=>$value->hostel_id,
                                'hostel_name'=>$value->hostel_name,
                            );
                        }
                    }

                    $this->data['hostels']=array_merge($_hostels_arr, $_hostels);

                    $banks=$this->sm->get_banks(array('bank_inst_id'=>$this->inst_id));

                    $genders=array(
                        'Male'=>'',
                        'Female'=>'',
                        'Other'=>''
                    );

                    $this->data['agents']=$this->um->get_agents(array('agent_inst_id' =>$this->inst_id,'agent_approval_status'=>'approved'),FALSE);

                    //print_obj($this->data['agents']);die;


                    $fees_types=$this->fm->__get_fees_type(array('fees_type_inst_id'=>$this->inst_id,'fees_type_group'=>'Admission'),FALSE);

                    $check_upload_limit=check_max_upload_limit($this->data['userdata'],$db_group);


                    $check_account=check_account_renewal_status($this->data['userdata']);

                    $this->data['tenth_boards']= $this->config->item('tenth_boards');
                    $this->data['twelfth_boards']= $this->config->item('twelfth_boards');

                    $this->data['student_upload_limit']=$this->student_upload_limit;//$check_upload_limit['student_upload_limit'];
                    $this->data['student_data_can_be_uploaded']=$this->student_data_can_be_uploaded;//$check_upload_limit['student_data_can_be_uploaded'];

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

                    $this->data['expiry_message']=$check_account['expiry_message'];
                    $this->data['expired_message']=$check_account['expired_message'];

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

                    $this->data['countries']=$countries;
                    $this->data['states']=$states;
                    $this->data['admission_type']=$admission_type;
                    $this->data['application_type']=$application_type;
                    $this->data['cate_category']=$caste_category;
                    $this->data['sections']=$sections;
                    $this->data['religions']=$religions;
                    $this->data['blood_groups']=$blood_groups;
                    $this->data['genders']=$genders;
                    $this->data['sessions']=$sessions;
                    $this->data['courses']=$courses;
                    $this->data['session_courses']=$session_courses;
                    $this->data['occupations']=$occupations;
                    $this->data['banks']=$banks;
                    $this->data['inst_in_bill_print']=$this->inst_in_bill_print;

                    if($userdata->user_type=='agent'){
                        $view='admission/vw_admission_register_agent';
                    }else{
                        $view='admission/vw_admission_register'; 
                    }

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

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

    public function indexAdmissionExcelData($file_id=null){
        if(session_userdata('isAdminLoggedin')){

            if($file_id!=null){
                $file_id=decode_data($file_id);

                $excel_file_type=$this->inst_student_data_excel_format;

                $this->data['excel_temp_data']=$this->um->get_excel_temp_students(array('temp_status_id'=>$file_id),FALSE,$this->inst_code);

                //$this->data['session_id']=$session;
                //$this->data['course_id']=$course;
                //$this->data['subject_id']=$subject;
                $this->data['states']=$this->sm->_get_states(null,FALSE,$this->inst_code);
                $this->data['courses']=$this->cm->get_course(array('course_inst_id'=>$this->inst_id),FALSE,$this->inst_code);
                $this->data['sessions']=$this->sessm->get_session(null,FALSE,$this->inst_code);
                $this->data['castes']=$this->cst->get_caste_category(null,FALSE,$this->inst_code);
                $this->data['excel_file_type']=$excel_file_type;
                $this->data['file_id']=encode_data($file_id);

                if($excel_file_type==1){
                    $view='admission/vw_admission_excel_temp_data_type_one';
                }else if($excel_file_type==2){
                    $view='admission/vw_admission_excel_temp_data';
                }

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

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


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

                //if($this->admission_add_access=='yes'){
                    $institute_data=check_institute($this->data['userdata']);
                    $inst_id=$institute_data['institute_id'];
                    $inst_type=$institute_data['inst_type'];
                    $inst_email=$institute_data['inst_email'];
                    $inst_ph=$institute_data['inst_ph'];
                    $parent_inst_id=$institute_data['inst_parent_id'];
                    $inst_code=$institute_data['inst_code'];
                    $storage_dir='institutes/'.$inst_code.'/students/'.date('Y'); 
                   
                   $booking_type=post_data('booking_type');
                   $booking_id=post_data('booking_id');

                   $admission_type=post_data('admission_type');
                   $admission_date=post_data('admission_date');
                   $admission_session=post_data('admission_session');
                   $admission_course=post_data('admission_course');
                   $admission_course_fees=post_data('admission_course_fees');
                   $admission_section='0';//post_data('admission_section');
                   $admission_agent=post_data('admission_agent');
                   $booking_agent_payout_amount=post_data('admission_agent_payout_amount');
                   

                   $admission_subject=post_data('admission_subject');

                   $admission_avail_hostel=post_data('admission_avail_hostel');

                   $admission_avail_hostel='no';


                   if($admission_avail_hostel!=='no'){
                    $avail_hostel='yes';
                    $hostel_id=$admission_avail_hostel;

                    $hostel_admission_fees_data=$this->hm->get_hostel_admission_fees(array('admission_hostel_id'=>$hostel_id));

                   }else{
                    $avail_hostel='no';
                    $hostel_id=null;
                    $hostel_admission_fees_data=null;
                   }

                    $total_admissions=$this->adm->get_total_admissions(array('admission_inst_id'=>$inst_id,'DATE(created_at)'=>date('Y-m-d')));

                    if ($total_admissions > 0) {
                        $code_to_add = $total_admissions + 1;
                    } else {
                        $code_to_add = '1';
                    }

                   //$admission_code=ge_rand_code('ADM',2,TRUE).$code_to_add;
                   $admission_code=ge_rand_code('ADM');

                   $stu_first_name=post_data('stu_first_name');
                   $stu_middle_name=post_data('stu_middle_name');
                   $stu_last_name=post_data('stu_last_name');
                   $stu_dob=post_data('stu_dob');
                   $stu_gender=post_data('stu_gender');
                   $stu_religion=post_data('stu_religion');
                   $stu_caste=post_data('stu_caste');
                   $stu_blood_grp=post_data('stu_blood_grp');
                   $stu_aadhar_no=post_data('stu_aadhar_no');
                   $stu_ph_no=post_data('stu_ph_no');
                   $stu_whatsapp_no=post_data('stu_whatsapp_no');
                   $stu_email_address=post_data('stu_email_address');
                   $stu_has_illness=post_data('stu_has_illness');


                   $stu_illness_remarks=post_data('stu_illness_remarks');
                   $stu_identiy_mark=post_data('stu_identiy_mark');
                   $stu_nationality=post_data('stu_nationality');

                   $stu_10th_board=post_data('stu_10th_board');
                   $stu_10th_yop=post_data('stu_10th_year_of_passing');
                   $stu_10th_total_marks=post_data('stu_10th_total_marks');
                   $stu_10th_percentage_marks=post_data('stu_10th_percentage_marks');
                   $stu_10th_division=post_data('stu_10th_division');
                   $stu_10th_subjects=post_data('stu_10th_subjects');
                   $stu_10_2_board=post_data('stu_10_2_board');
                   $stu_10_2_yop=post_data('stu_10_2_year_of_passing');
                   $stu_10_2_total_marks=post_data('stu_10_2_total_marks');
                   $stu_10_2_percentage_marks=post_data('stu_10_2_percentage_marks');
                   $stu_10_2_division=post_data('stu_10_2_division');
                   $stu_10_2_subjects=post_data('stu_10_2_subjects');

                   $stu_grad_board=post_data('stu_grad_board');
                   $stu_grad_yop=post_data('stu_grad_year_of_passing');
                   $stu_grad_total_marks=post_data('stu_grad_total_marks');
                   $stu_grad_percentage_marks=post_data('stu_grad_percentage_marks');
                   $stu_grad_division=post_data('stu_grad_division');
                   $stu_grad_subjects=post_data('stu_grad_subjects');

                   $stu_post_grad_board=post_data('stu_post_grad_board');
                   $stu_post_grad_yop=post_data('stu_post_grad_year_of_passing');
                   $stu_post_grad_total_marks=post_data('stu_post_grad_total_marks');
                   $stu_post_grad_percentage_marks=post_data('stu_post_grad_percentage_marks');
                   $stu_post_grad_division=post_data('stu_post_grad_division');
                   $stu_post_grad_subjects=post_data('stu_post_grad_subjects');


                   $stu_other_grad_board=post_data('stu_other_grad_board');
                   $stu_other_grad_yop=post_data('stu_other_grad_year_of_passing');
                   $stu_other_grad_total_marks=post_data('stu_other_grad_total_marks');
                   $stu_other_grad_percentage_marks=post_data('stu_other_grad_percentage_marks');
                   $stu_other_grad_division=post_data('stu_other_grad_division');
                   $stu_other_grad_subjects=post_data('stu_other_grad_subjects');

                   $stu_father_first_name=post_data('stu_father_first_name');
                   $stu_father_mid_name=post_data('stu_father_mid_name');
                   $stu_father_last_name=post_data('stu_father_last_name');
                   $stu_father_occupation=post_data('stu_father_occupation');
                   $stu_father_mobile=post_data('stu_father_mobile');
                   $stu_father_email_address=post_data('stu_father_email_address');
                   $stu_father_income=post_data('stu_father_income');


                   $stu_mother_first_name=post_data('stu_mother_first_name');
                   $stu_mother_mid_name=post_data('stu_mother_mid_name');
                   $stu_mother_last_name=post_data('stu_mother_last_name');
                   $stu_mother_occupation=post_data('stu_mother_occupation');
                   $stu_mother_mobile=post_data('stu_mother_mobile');
                   $stu_mother_email_address=post_data('stu_mother_email_address');
                   $stu_mother_income=post_data('stu_mother_income');


                   $stu_guardian_first_name=post_data('stu_guardian_first_name');
                   $stu_guardian_mid_name=post_data('stu_guardian_mid_name');
                   $stu_guardian_last_name=post_data('stu_guardian_last_name');
                   $stu_guardian_occupation=post_data('stu_guardian_occupation');
                   $stu_guardian_mobile=post_data('stu_guardian_mobile');
                   $stu_guardian_email_address=post_data('stu_guardian_email_address');
                   $stu_guardian_income=post_data('stu_guardian_income');

                   $stu_c_o=post_data('stu_c_o');
                   $stu_city_village=post_data('stu_city_village');
                   $stu_district=post_data('stu_district');
                   $stu_state=post_data('stu_state');
                   $stu_p_s=post_data('stu_p_s');
                   $stu_p_o=post_data('stu_p_o');
                   $stu_pincode=post_data('stu_pincode');
                   $stu_address_landmark=post_data('stu_address_landmark');

                   $stu_perma_c_o=post_data('stu_perma_c_o');
                   $stu_perma_city_village=post_data('stu_perma_city_village');
                   $stu_perma_district=post_data('stu_perma_district');
                   $stu_perma_state=post_data('stu_perma_state');
                   $stu_perma_p_s=post_data('stu_perma_p_s');
                   $stu_perma_p_o=post_data('stu_perma_p_o');
                   $stu_perma_pincode=post_data('stu_perma_pincode');
                   $stu_perma_address_landmark=post_data('stu_perma_address_landmark');

                   $admission_course_is_lateral=post_data('admission_course_is_lateral');

                   $address_same_as=post_data('address_same_as');

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

                    if($this->data['userdata']->user_type=='institute'){
                        $parent_inst_id=$this->data['userdata']->user_id;
                        $storage_dir='institutes/'.$this->data['userdata']->user_code.'/students/'.date('Y');
                    }else if($this->data['userdata']->user_type=='institute_branch'){
                        $parent_inst_id=$this->data['userdata']->branch_parent_inst_id;
                        $inst_data=$this->um->get_institute(array('user_pk_id'=>$parent_inst_id));
                        $storage_dir='institutes/'.$inst_data->user_code.'/students/'.date('Y');
                    }             

                    if(!empty($admission_subject) && $admission_subject==0){
                        $subject_required=true;
                        $admission_subject_id=null;
                    }else if(!empty($subject_data) && $admission_subject>0){
                        $subject_required=false;
                        $admission_subject_id=$admission_subject;
                    }else{
                        $subject_required=false;
                        $admission_subject_id=null;
                    }

                    if($subject_required==true){
                        $subject_data=$this->cm->get_subject(array('subject_id'=>$admission_subject_id,'subject_inst_id'=>$inst_id,'subject_course_id'=>$admission_course),TRUE);
                    }                    

                    $course_data=$this->cm->get_course(array('course_id'=>$admission_course,'course_inst_id'=>$this->data['userdata']->user_id));

                    $session_data=$this->sessm->get_session(array('session_id'=>$admission_session,'session_inst_id'=>$this->data['userdata']->user_id));

                    if($subject_required==false){
                        if(!empty($stu_email_address)){
                            $student_found=$this->um->get_duplicate_student(array('stu_email'=>$stu_email_address),array('stu_ph_no'=>$stu_ph_no),null,null,FALSE);
                        }else{
                            $student_found=$this->um->get_duplicate_student(array('stu_ph_no'=>$stu_ph_no),null,null,null,FALSE);
                        }
                        
                        if($admission_agent>0 && $booking_agent_payout_amount<$admission_course_fees){
                            $agent_data_valid=true;
                        }else{
                            $agent_data_valid=false;
                        }

                       if($student_found[0]->counted==0){

                            $total_students=$this->um->get_count_students(array('stu_inst_id'=>$inst_id));

                            $college_id=$inst_id;
                            $stu_inst_parent_id=$parent_inst_id;

                            $student_data=compact('college_id','parent_inst_id','stu_first_name','stu_middle_name','stu_last_name','stu_email_address','stu_ph_no','stu_whatsapp_no','stu_aadhar_no','stu_dob','stu_gender','stu_religion','stu_caste','stu_blood_grp','stu_nationality','stu_has_illness','stu_illness_remarks','stu_identiy_mark','stu_father_first_name','stu_father_mid_name','stu_father_last_name','stu_father_mobile','stu_father_email_address','stu_father_income','stu_father_occupation','stu_mother_first_name','stu_mother_mid_name','stu_mother_last_name','stu_mother_mobile','stu_mother_email_address','stu_mother_income','stu_mother_occupation','stu_guardian_first_name','stu_guardian_mid_name','stu_guardian_last_name','stu_guardian_mobile','stu_guardian_email_address','stu_guardian_income','stu_guardian_occupation','stu_c_o','stu_nationality','stu_state','stu_city_village','stu_district','stu_pincode','stu_p_s','stu_p_o','stu_address_landmark','stu_perma_c_o','stu_nationality','stu_perma_state','stu_perma_city_village','stu_perma_district','stu_perma_pincode','stu_perma_p_s','stu_perma_p_o','stu_perma_address_landmark','address_same_as','admission_type','avail_hostel','user_id');

                            $student_id=store_students($student_data);

                            if($student_id){

                                $student_id_val=$total_students+1;

                                $student_code_settings=$this->data['student_code_settings'];
                                $course_code=($admission_course_is_lateral=='yes')?$course_data->course_code.'(L)':$course_data->course_code;
                                $session_start_year=$session_data->session_start_year;
                                $session_end_year=$session_data->session_end_year;
                                $user_code=$this->data['user_code'];

                                $code_data=compact('student_code_settings','course_code','session_start_year','session_end_year','user_code','student_id_val');

                                $stu_user_code=generate_stu_code($code_data);

                                $this->um->update_students(array('stu_user_code'=>$stu_user_code),array('stu_id'=>$student_id));

                                $stu_password=post_data('stu_password');

                                $password=generate_password($stu_password);

                                $stu_username=post_data('stu_username');

                                if(!empty($stu_username)){
                                    $user_name=$stu_username;
                                }else{
                                    $user_name=$stu_ph_no;
                                }

                                $student_userdata=array(
                                    'user_name'=>$user_name,
                                    'user_code'=>$this->inst_code,
                                    'user_password'=>$password,
                                    'user_password_visible'=>encode_data($stu_password),
                                    'user_type'=>'student',
                                    'user_permissions'=>null,
                                    'user_status'=>'active',
                                    'created_by_type'=>'ntadmin',
                                    'created_by'=>$this->data['userdata']->user_id,
                                    'created_at'=>date('Y-m-d')
                                );

                                $student_user_id=$this->um->store_users($student_userdata);

                                if($student_user_id){
                                    $this->um->update_students(array('stu_user_id'=>$student_user_id),array('stu_id'=>$student_id));//die;


                                    //Hostel & Hostel Fees Assign

                                    if($avail_hostel=='yes' && !empty($hostel_admission_fees_data)){
                                        $hostel_assign_data=$this->hm->get_hostel_admission_fees_assign_data(array('assign_stu_id'=>$student_user_id,'assign_hostel_id'=>$hostel_id));

                                        if(empty($hostel_assign_data)){
                                            $this->hm->store_hostel_admission_fees_assign_data(
                                                array(
                                                    'assign_stu_id'=>$student_user_id,
                                                    'assign_hostel_id'=>$hostel_id,
                                                    'assign_hostel_admission_fees_id'=>$hostel_admission_fees_data->admission_fees_id,
                                                    'assign_fees_paid'=>'no'
                                                )
                                            );
                                        }
                                    }
                                }

                                $academic_data=compact('student_user_id','college_id','parent_inst_id','stu_10th_board','stu_10th_yop','stu_10th_total_marks','stu_10th_percentage_marks','stu_10th_division','stu_10th_subjects','stu_10_2_board','stu_10_2_yop','stu_10_2_total_marks','stu_10_2_percentage_marks','stu_10_2_division','stu_10_2_subjects','stu_grad_board','stu_grad_yop','stu_grad_total_marks','stu_grad_percentage_marks','stu_grad_division','stu_grad_subjects','stu_post_grad_board','stu_post_grad_yop','stu_post_grad_total_marks','stu_post_grad_percentage_marks','stu_post_grad_division','stu_post_grad_subjects','stu_other_grad_board','stu_other_grad_yop','stu_other_grad_total_marks','stu_other_grad_percentage_marks','stu_other_grad_division','stu_other_grad_subjects','user_id');

                                store_students_academics($academic_data);


                                if(isset($_FILES['stu_addhar_card_file']) && $_FILES['stu_addhar_card_file']['name']!=''){

                                    $addhar_file=array(
                                        'file_size'=>'0.05',
                                        'file_name'=>'stu_addhar_card_file',
                                        'file_types'=>'png,jpg,jpeg',
                                        'file_storage_type'=>'aadhar_card',
                                        'file_storage_dir'=>$storage_dir,
                                        'file_storage_type_id'=>$student_user_id,
                                        'file_parent_id'=>$college_id,
                                        'file_compress'=>false,
                                        'file_operation_type'=>'new',
                                        'file_uploaded_by'=>$this->data['userdata']->user_id
                                    );

                                    $this->onUploadFiles($addhar_file);
                                }



                                if(isset($_FILES['stu_madhyamik_admit_card_file']) && $_FILES['stu_madhyamik_admit_card_file']['name']!=''){

                                    $madhyamik_admitcard=array(
                                        'file_size'=>'0.05',
                                        'file_name'=>'stu_madhyamik_admit_card_file',
                                        'file_types'=>'png,jpg,jpeg,pdf',
                                        'file_storage_type'=>'madhyamik_admit_card',
                                        'file_storage_dir'=>$storage_dir,
                                        'file_storage_type_id'=>$student_user_id,
                                        'file_parent_id'=>$college_id,
                                        'file_compress'=>false,
                                        'file_operation_type'=>'new',
                                        'file_uploaded_by'=>$this->data['userdata']->user_id
                                    );

                                    $this->onUploadFiles($madhyamik_admitcard);
                                }


                                if(isset($_FILES['stu_madhyamik_result_file']) && $_FILES['stu_madhyamik_result_file']['name']!=''){

                                    $madhyamik_result=array(
                                        'file_size'=>'5',
                                        'file_name'=>'stu_madhyamik_result_file',
                                        'file_types'=>'png,jpg,jpeg,pdf',
                                        'file_storage_type'=>'madhyamik_result_card',
                                        'file_storage_dir'=>$storage_dir,
                                        'file_storage_type_id'=>$student_user_id,
                                        'file_parent_id'=>$college_id,
                                        'file_compress'=>false,
                                        'file_operation_type'=>'new',
                                        'file_uploaded_by'=>$this->data['userdata']->user_id
                                    );

                                    $this->onUploadFiles($madhyamik_result);
                                }



                                if(isset($_FILES['stu_madhyamik_rank_file']) && $_FILES['stu_madhyamik_rank_file']['name']!=''){

                                    $madhyamik_rank_card=array(
                                        'file_size'=>'0.05',
                                        'file_name'=>'stu_madhyamik_rank_file',
                                        'file_types'=>'png,jpg,jpeg,pdf',
                                        'file_storage_type'=>'madhyamik_rank_card',
                                        'file_storage_dir'=>$storage_dir,
                                        'file_storage_type_id'=>$student_user_id,
                                        'file_parent_id'=>$college_id,
                                        'file_compress'=>false,
                                        'file_operation_type'=>'new',
                                        'file_uploaded_by'=>$this->data['userdata']->user_id
                                    );

                                    $this->onUploadFiles($madhyamik_rank_card);
                                }


                                if(isset($_FILES['stu_madhyamik_reg_card_file']) && $_FILES['stu_madhyamik_reg_card_file']['name']!=''){

                                    $madhyamik_reg_card=array(
                                        'file_size'=>'0.03',
                                        'file_name'=>'stu_madhyamik_reg_card_file',
                                        'file_types'=>'png,jpg,jpeg,pdf',
                                        'file_storage_type'=>'madhyamik_registration_card',
                                        'file_storage_dir'=>$storage_dir,
                                        'file_storage_type_id'=>$student_user_id,
                                        'file_parent_id'=>$college_id,
                                        'file_compress'=>false,
                                        'file_operation_type'=>'new',
                                        'file_uploaded_by'=>$this->data['userdata']->user_id
                                    );

                                    $this->onUploadFiles($madhyamik_reg_card);
                                }


                                if(isset($_FILES['stu_post_signature_file']) && $_FILES['stu_post_signature_file']['name']!=''){

                                    $profile_signature=array(
                                        'file_size'=>'0.01',
                                        'file_name'=>'stu_post_signature_file',
                                        'file_types'=>'png,jpg,jpeg,pdf',
                                        'file_storage_type'=>'student_signature_photo',
                                        'file_storage_dir'=>$storage_dir,
                                        'file_storage_type_id'=>$student_user_id,
                                        'file_parent_id'=>$college_id,
                                        'file_compress'=>false,
                                        'file_operation_type'=>'new',
                                        'file_uploaded_by'=>$this->data['userdata']->user_id
                                    );

                                    $this->onUploadFiles($profile_signature);
                                }


                                 if(isset($_FILES['stu_profile_photo_file']) && $_FILES['stu_profile_photo_file']['name']!=''){

                                    $profile_photo=array(
                                        'file_size'=>'0.01',
                                        'file_name'=>'stu_profile_photo_file',
                                        'file_types'=>'png,jpg,jpeg,pdf',
                                        'file_storage_type'=>'student_profile_photo',
                                        'file_storage_dir'=>$storage_dir,
                                        'file_storage_type_id'=>$student_user_id,
                                        'file_parent_id'=>$college_id,
                                        'file_compress'=>false,
                                        'file_operation_type'=>'new',
                                        'file_uploaded_by'=>$this->data['userdata']->user_id
                                    );

                                    $this->onUploadFiles($profile_photo);
                                }


                                if(isset($_FILES['stu_12th_result_file']) && $_FILES['stu_12th_result_file']['name']!=''){

                                    $hs_result=array(
                                        'file_size'=>'0.05',
                                        'file_name'=>'stu_12th_result_file',
                                        'file_types'=>'png,jpg,jpeg,pdf',
                                        'file_storage_type'=>'12th_result_card',
                                        'file_storage_dir'=>$storage_dir,
                                        'file_storage_type_id'=>$student_user_id,
                                        'file_parent_id'=>$college_id,
                                        'file_compress'=>false,
                                        'file_operation_type'=>'new',
                                        'file_uploaded_by'=>$this->data['userdata']->user_id
                                    );

                                    $this->onUploadFiles($hs_result);
                                }

                                if(isset($_FILES['stu_grad_result_file']) && $_FILES['stu_grad_result_file']['name']!=''){

                                    $grad_result=array(
                                        'file_size'=>'0.05',
                                        'file_name'=>'stu_grad_result_file',
                                        'file_types'=>'png,jpg,jpeg,pdf',
                                        'file_storage_type'=>'grad_result_card',
                                        'file_storage_dir'=>$storage_dir,
                                        'file_storage_type_id'=>$student_user_id,
                                        'file_parent_id'=>$college_id,
                                        'file_compress'=>false,
                                        'file_operation_type'=>'new',
                                        'file_uploaded_by'=>$this->data['userdata']->user_id
                                    );

                                    $this->onUploadFiles($grad_result);
                                }


                                if(isset($_FILES['stu_post_grad_result_file']) && $_FILES['stu_post_grad_result_file']['name']!=''){

                                    $post_grad_result=array(
                                        'file_size'=>'0.05',
                                        'file_name'=>'stu_post_grad_result_file',
                                        'file_types'=>'png,jpg,jpeg,pdf',
                                        'file_storage_type'=>'post_grad_result_card',
                                        'file_storage_dir'=>$storage_dir,
                                        'file_storage_type_id'=>$student_user_id,
                                        'file_parent_id'=>$college_id,
                                        'file_compress'=>false,
                                        'file_operation_type'=>'new',
                                        'file_uploaded_by'=>$this->data['userdata']->user_id
                                    );

                                    $this->onUploadFiles($post_grad_result);
                                }


                                if(isset($_FILES['stu_other_certificate_file']) && $_FILES['stu_other_certificate_file']['name']!=''){

                                    $other_certificate=array(
                                        'file_size'=>'0.05',
                                        'file_name'=>'stu_other_certificate_file',
                                        'file_types'=>'png,jpg,jpeg,pdf',
                                        'file_storage_type'=>'other_certificate_card',
                                        'file_storage_dir'=>$storage_dir,
                                        'file_storage_type_id'=>$student_user_id,
                                        'file_parent_id'=>$college_id,
                                        'file_compress'=>false,
                                        'file_operation_type'=>'new',
                                        'file_uploaded_by'=>$this->data['userdata']->user_id
                                    );

                                    $this->onUploadFiles($other_certificate);
                                }


                                $admission_application_type='new_admission';

                                $admission_details=compact('booking_type','booking_id','student_user_id','college_id','parent_inst_id','admission_session','admission_course','admission_subject_id','admission_section','admission_type','admission_application_type','admission_agent','admission_code','avail_hostel','hostel_id','admission_date','user_id');

                                $admission_id=store_admission_data($admission_details);

                                if($admission_id){

                                    //Store student course fees data
                                    //if(empty($admission_course_fees) && $admission_course_fees>0){
                                        $stu_course_data=array(
                                            'session_id'=>$admission_session,
                                            'session_inst_id'=>$this->inst_id,
                                            'session_stu_id'=>$student_user_id,
                                            'session_course_id'=>$admission_course,
                                            'session_course_fees'=>$admission_course_fees,
                                            'is_lateral'=>$admission_course_is_lateral,
                                            'session_course_booking_fee'=>0
                                        );

                                        $this->sessm->store_session_course_student_wise($stu_course_data);
                                    //}

                                    if(!empty($stu_middle_name)){
                                        $student_name=$stu_first_name.' '.$stu_middle_name.' '.$stu_last_name;
                                    }else{
                                        $student_name=$stu_first_name.' '.$stu_last_name;
                                    }

                                    if($agent_data_valid==true){
                                        if(!empty($booking_agent_payout_amount) && $booking_agent_payout_amount>0){
                                            $agent_payment_data=compact('inst_id','parent_inst_id','admission_agent','admission_session','admission_course','student_user_id','admission_subject_id','admission_id','admission_code','booking_agent_payout_amount');

                                            //print_obj($agent_payment_data);
                                            store_agent_payment($agent_payment_data,'admission');
                                        }
                                    }
                                    

                                    $mail_data['inst_id']=$inst_id;
                                    $mail_data['mail_from']='webmaster';
                                    $mail_data['to_email']=$stu_email_address;
                                    $mail_data['mail_from_name']=$inst_name;
                                    $mail_data['mail_subject']=ucwords($inst_name).' Admission Registration Details';
                                    $mail_data['mail_type']='html';
                                    $mail_data['mail_custom_type']='html';
                                    $mail_data['log_type']='admission';
                                    $mail_data['log_user_type']='student';
                                    $mail_data['log_user_id']=$student_user_id;

                                    $mail_data['mail_data']=array(
                                        'stu_name'=>ucwords($student_name),
                                        'stu_email'=>$stu_email_address,
                                        'stu_ph'=>$stu_ph_no,
                                        'booking_code'=>$admission_code,
                                        'booking_session'=>$session_data->session_start_year.'-'.$session_data->session_end_year,
                                        'booking_course'=>$course_data->course_name,
                                        'booking_subject'=>(!empty($subject_data))?$subject_data->subject_name:'N/A',
                                        'user_name'=>$username,
                                        'user_password'=>$stu_password,
                                        'portal_url'=>$this->data['base_url'],
                                        'portal_logo'=>$inst_logo_url,
                                        'portal_inst_name'=>$inst_name,
                                        'college_email'=>$inst_email,
                                        'college_phone'=>$inst_ph,
                                        'default_logo_small'=>$this->data['default_logo_small'],
                                        'created_at'=>date('d-m-Y',strtotime($admission_date))
                                    );
                                    
                                    $mail_data['mail_view']='_pages/mails/vw_admission_book_mail';

                                    $mail_msg=$this->onSendMail($mail_data);

                                    if($avail_hostel=='yes'){

                                        $this->adm->update_admission_data(array('admission_avail_hostel'=>'yes','admission_hostel_id'=>$hostel_id),array('admission_stu_id'=>$student_user_id));
                                    }
                                }

                                $return['success']='Registration successfull.Payment can be recieved now or later.'.$mail_msg;

                                $return['registration_admission_id']=encode_data($admission_id);
                                $return['document_verification']='I am giving my consent that all documents and data has been verified and checked.';
                                $return['redirect_payment']=$this->data['base_url'].'/admission/payments/'.encode_data($admission_id);
                            }else{
                                $return['error']='Error occurred.';
                            }


                       }else{
                        $return['error']='Data alreday found with same email or phone no.';
                       }
                    }else{
                        $return['error']='Select subject';
                    } 
                // }else{
                //     $return['error']='You do not have the permission';
                // }                     

                json_headers($return);

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


    public function onDeleteAdmission(){
        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'];

                $admission_id=post_data('admission_id');

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

                    $adm_data=$this->adm->get_admission_data(array('admission_id'=>$admission_id));

                    if(!empty($adm_data)){
                        $deleted=$this->adm->delete_admission_data(array('admission_id'=>$admission_id));

                        if($deleted){                            
                          
                            $logs_data=array(
                                'log_user_type'=>$userdata->user_type,
                                'log_user_id'=>$userdata->user_id,
                                'log_stu_id'=>$adm_data->admission_stu_id,
                                'log_user_code'=>$userdata->user_code,
                                'admission_data'=>$adm_data
                            );

                            create_admission_data_delete_log($logs_data);
                            
                            $return['success']='Data Deleted';
                        }else{
                            $return['error']='data not deleted';
                        }
                        
                    }else{
                        $return['error']='Admission_data not';
                    }
                }else{
                    $return['error']='Data manipulation not allowed';
                }

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


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

                $data_field_to_update=post_data('data_field');
                $data_value=post_data('data_value');
                $admission_id=post_data('admission_id');

                $admission_id=decode_data($admission_id);

                $admission_data=$this->adm->get_admission_data(array('admission_id'=>$admission_id));

                if(!empty($admission_data)){

                    $student_data=$this->um->get_user(array('user_id'=>$admission_data->admission_stu_id),'student');

                    if($student_data->stu_mid_name!=''){
                        $stu_name=$student_data->stu_first_name.' '.$student_data->stu_mid_name.' '.$student_data->stu_last_name;
                    }else{
                        $stu_name=$student_data->stu_first_name.' '.$student_data->stu_last_name;
                    }



                    if($data_field_to_update=='admission_docs_completed'){
                        $updated=$this->adm->update_admission_data(array($data_field_to_update=>$data_value,'admission_payment_can_be_scheduled'=>'yes','admission_docs_verified_by'=>$this->data['userdata']->user_id),array('admission_id'=>$admission_id));

                       /* $mail_data['inst_id']=$student_data->stu_inst_id;
                        $mail_data['mail_from']='webmaster';
                        $mail_data['to_email']=$this->data['userdata']->user_email;
                        $mail_data['mail_from_name']='Autobot';
                        $mail_data['mail_subject']=$stu_name.'['.$admission_data->admission_code.'] documents approval.';
                        $mail_data['mail_type']='text';
                        $mail_data['mail_data']=$stu_name.' uploaded documents has been approved.';
                        $mail_data['mail_log']='true';
                        $mail_data['inst_parent_id']='';
                        $mail_data['notify_type']='stu_data_approved';
                        $mail_data['notify_type_data']=$stu_name;
                        $mail_data['notify_type_id']=$student_data->stu_user_id;
                        $mail_data['notify_has_attachment']='no';
                        $mail_data['notify_status']='unread';

                        $mail_msg=$this->onSendMail($mail_data);*/

                    }else{
                        $updated=$this->adm->update_admission_data(array($data_field_to_update=>$data_value),array('admission_id'=>$admission_id));
                    }

                    

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


                json_headers($return);

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


    /**
     * This function is used to search the admissions list with the given parameters. It uses the datatables library to generate the list.
     * @param array $posts It contains the parameters for the search.
     * @param array $param It contains the parameters for the search.
     * @return array It returns the data for the datatables library.
     */ 
    public function onSearchAdmissionsList(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){
                $db_group=$this->data['userdata']->user_code;

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

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

                $param['column_search'] = array('admission_code','stu_first_name','stu_mid_name','stu_last_name','course_name');
                $param['order'] = array('admission_id' => 'ASC');
                $posts=$this->input->post();

                if(isset($posts['admission_session']) && $posts['admission_session']>0){
                    $param['admission_session']=$posts['admission_session'];
                }


                if(isset($posts['admission_course']) && $posts['admission_course']>0){
                    $param['admission_course']=$posts['admission_course'];
                }

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

                $action='';

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

                    $row = array();

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

                    if($stu->stu_mid_name!=''){
                        $student_name=$stu->stu_first_name.' '.$stu->stu_mid_name.' '.$stu->stu_last_name;
                    }else{
                        $student_name=$stu->stu_first_name.' '.$stu->stu_last_name;
                    }

                    $course_fees=$this->sessm->__get_session_course_student_wise(array('session_stu_id'=>$stu->stu_user_id),'session_course_id,session_course_fees',TRUE);

                    $course_fees_amount = isset($course_fees->session_course_fees) ? number_format($course_fees->session_course_fees, 2) : 'N/A';

                    $row[]  =   $no;

                    $agent_name[$stu->stu_user_id]='';

                    if($stu->agent_name!=null){
                        $agent_name[$stu->stu_user_id].='<br><b>Consultant:'.$stu->agent_name.'</b>';                             
                    }

                    if($stu->admission_docs_completed=='no'){
                        $admission_code  =   $stu->admission_code.'<br><a href="'.$this->data['base_url'].'/students/register/'.encode_data($stu->stu_id).'" class="btn btn-xs btn-dark">Check & Approve Data</a>';
                    }else{

                        if($stu->admission_completed=='no'){
                            $admission_code  =   $stu->admission_code.'<br><button type="button" data-admission_id="" class="btn btn-xs btn-warning btn_update_admission_status" style="color:#000000;">Update Admission Status:Pending</button>';  
                        }else{
                            $admission_code  =   $stu->admission_code;
                        }                                              
                    }

                    $session_and_course=$stu->course_code.'/'.$stu->session_start_year.'-'.$stu->session_end_year.'<br>Fee:'.$course_fees_amount;

                    //$stu->stu_email.'<br>'.$stu->stu_ph_no.'
                    
                    $row[]  =   $student_name.'<br>'.$stu->stu_user_code.'<br>'.$admission_code.$agent_name[$stu->stu_user_id];
                    $row[]  =   $session_and_course;

                    $admission_date=(!empty($stu->admission_date) || $stu->admission_date!=NULL)?date('d-m-Y',strtotime($stu->admission_date)):'N/A';
                    $row[]  =  $admission_date ;
                    $row[]  =   date('d-m-Y',strtotime($stu->created_at));

                   /* if($stu->is_old_data=='yes'){
                        // $row[]  =   '<a class="btn btn-xs btn-dark" href="'.$this->data['base_url'].'/bills?type=installments_old_fees&code='.encode_data($stu->admission_id).'" target="_blank"><i class="fa fa-print"></i> Print Bill</a>';
                        $row[]  =   '<button data-admission_id='.encode_data($stu->admission_id).'" type="button" class="btn btn-xs btn-dark"><i class="fa fa-eye"></i></button>';
                    }else{*/
                        if($stu->admission_docs_completed=='yes'){
                            $action  .=   '<a class="btn btn-xs btn-dark" href="'.$this->data['base_url'].'/admission/payments/'.encode_data($stu->admission_id).'" data-id="'.$stu->admission_id.'"> Payments</a>';
                        }else{
                            if($stu->admission_payment_can_be_scheduled=='yes'){
                                $action .=   '<a class="btn btn-dark d-none d-lg-block m-l-15" href="'.$this->data['base_url'].'/admission/payments/'.encode_data($stu->admission_id).'"> Schedule Payment</a>';
                            }else{
                                $action .=   '<span class="badge badge-danger"> Documents Not Updated Yet</span>';
                            }                        
                        }
                    //}
                    
                    $action.='<button type="button" class="btn btn-xs btn-danger btn_del_admission" data-admission_id="'.encode_data($stu->admission_id).'"><i class="fa fa-trash"></i></button>';

                    $action.='</div>';

                    $row[]=$action;

                    $data[] = $row; 
                }

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

            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }
    
    public function onUploadAdmissionExcelFiles_v1(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){
                //$this->load->config('cms_config');

                $user_id=decode_data(session_userdata('admin_id'));
                $data_imported=FALSE;

                $today=date('Y-m-d');

                $tempdata=array();

                $institute_data=check_institute($this->data['userdata']);
                $tenth_boards= $this->config->item('tenth_boards_arr');

                $inst_id=$this->inst_id;
                $inst_type=$this->inst_type;
                $inst_parent_id=$this->inst_parent_id;
                $inst_code=$this->inst_code;
                $max_student_upload_limit=$institute_data['student_upload_limit'];
                $course_is_lateral='no';
                $session=0;
                //$this->inst_student_data_excel_format

                $course_data=[];

                //$course=post_data('booking_course');
                if($this->input->post('booking_session')){
                    $session=post_data('booking_session');
                }
                
                // $subject=post_data('booking_subject');

                $excel_type=post_data('excel_type');

                $excel_upload_type=$this->inst_student_data_excel_format;

                if($excel_upload_type>0){

                    $table_rows='';

                    //$course_data=$this->cm->get_course(array('course_id'=>$course,'course_inst_id'=>$inst_id));

                    $session_data=$this->sessm->get_session(array('session_id'=>$session,'session_inst_id'=>$inst_id),TRUE,$inst_code);

                    //$course_session_data=$this->sessm->get_session_course(array('session_inst_id'=>$inst_id,'session_id'=>$session,'session_course_id'=>$course));

                    // $get_college_seat_settings=$this->sm->get_college_seat_settings(array('seats_inst_id'=>$inst_id,'seats_sess_id'=>$session,'seats_course_id'=>$course));

                    $get_college_seat_settings=$this->sm->get_college_seat_settings(array('seats_inst_id'=>$inst_id,'seats_sess_id'=>$session),TRUE,$inst_code);

                    if(!empty($get_college_seat_settings)){
                        $available_seats=$get_college_seat_settings->seats_available;
                    }else{
                        $available_seats='0';
                    }

                    if(isset($_FILES['excel_file']) && $_FILES['excel_file']['name']!=''){
                        // $get_excel_tempstatus_students=$this->um->get_excel_tempstatus_students(array('session_id'=>$session,'course_id'=>$course,'inst_id'=>$inst_id,'excel_file_name'=>$_FILES['excel_file']['name']));

                        $get_excel_tempstatus_students=$this->um->get_excel_tempstatus_students(array('session_id'=>$session,'inst_id'=>$inst_id,'excel_file_name'=>$_FILES['excel_file']['name']),$inst_code);

                        if(empty($get_excel_tempstatus_students)){
                            $excel_data=array(
                                'file_size'=>'10',
                                'file_name'=>'excel_file',
                                'file_types'=>'xls,xlsx',
                            );

                            $file_path=$this->onUploadExcelFiles($excel_data);                              
                            
                           
                            if(is_file($file_path)){
                                $validated=validate_admission_excel($file_path,'Xlsx',$max_student_upload_limit,$excel_upload_type);

                                //print_obj($validated);die;

                                if($validated['validated']==200){

                                    $exceldata=$validated['exceldata'];

                                    if(!empty($exceldata)){

                                        $temp_status_data_to_add=array(
                                            'inst_id'=>$inst_id,
                                            'session_id'=>$session,
                                            'course_id'=>0,
                                            'subject_id'=>0,
                                            'excel_upload_type'=>$excel_type,
                                            'excel_file_name'=>$_FILES['excel_file']['name'],
                                            'excel_upload_status'=>'uploaded_not_imported',
                                            'excel_uploaded_by'=>$user_id
                                        );

                                        $status_added=$this->um->store_excel_tempstatus_students($temp_status_data_to_add,FALSE,$inst_code);

                                        if($status_added){

                                            if($excel_upload_type=='1'){
                                                foreach ($exceldata as $key => $value){

                                                    $row=$key+1;

                                                    $f_name             =   isset($value[2])?strip_javascript(xss_clean(trim($value[2]))):'';
                                                    $m_name             =   isset($value[3])?strip_javascript(xss_clean(trim($value[3]))):'';
                                                    $l_name             =   isset($value[4])?strip_javascript(xss_clean(trim($value[4]))):'';

                                                    $father_name        =   isset($value[5])?strip_javascript(xss_clean(trim($value[5]))):'';
                                                    $mother_name        =   isset($value[6])?strip_javascript(xss_clean(trim($value[6]))):'';

                                                    $dob                =   isset($value[7])?strip_javascript(xss_clean(trim($value[7]))):'';
                                                    $gender             =   isset($value[8])?strip_javascript(xss_clean(trim($value[8]))):'';
                                                    $cast               =   isset($value[9])?strip_javascript(xss_clean(trim($value[9]))):'';
                                                    
                                                    $blood_group        =   isset($value[10])?strip_javascript(xss_clean(trim($value[10]))):'';
                                                    $aadhar             =   isset($value[11])?strip_javascript(xss_clean(trim($value[11]))):'';
                                                    $phno               =   isset($value[12])?strip_javascript(xss_clean(trim($value[12]))):'';
                                                    $gaurdian_phno      =   isset($value[13])?strip_javascript(xss_clean(trim($value[13]))):'';
                                                    $whatsapp_no        =   isset($value[14])?strip_javascript(xss_clean(trim($value[14]))):'';

                                                    $email              =   isset($value[15])?strip_javascript(xss_clean(trim($value[15]))):'';
                                                    $permanent_address  =   isset($value[16])?strip_javascript(xss_clean(trim($value[16]))):'';

                                                    $city_village       =   isset($value[17])?strip_javascript(xss_clean(trim($value[17]))):'';
                                                    $district           =   isset($value[18])?strip_javascript(xss_clean(trim($value[18]))):'';
                                                    $po                 =   isset($value[19])?strip_javascript(xss_clean(trim($value[19]))):'';

                                                    $ps                 =   isset($value[20])?strip_javascript(xss_clean(trim($value[20]))):'';
                                                    $state              =   isset($value[21])?strip_javascript(xss_clean(trim($value[21]))):'';
                                                    
                                                    if(in_array($state, array('wb','W.B','w.b','west bengal','West Bengal'))){
                                                        $state='West Bengal';
                                                        $state_data=$this->sm->_get_states(array('state_name'=>$state),TRUE,$inst_code);

                                                        if(!empty($state_data)){
                                                            $state_id=$state_data->state_id;
                                                        }else{
                                                            $state_id=0;
                                                        }
                                                    }else{
                                                        $state_id=0;
                                                    }                                                

                                                    $pin              =   isset($value[22])?strip_javascript(xss_clean(trim($value[22]))):'';
                                                    $qualification    =   isset($value[23])?strip_javascript(xss_clean(trim($value[23]))):'';
                                                    $total_marks      =   isset($value[24])?strip_javascript(xss_clean(trim($value[24]))):'';
                                                    $marksobtained    =   isset($value[25])?strip_javascript(xss_clean(trim($value[25]))):'';
                                                    $percentage       =   isset($value[26])?strip_javascript(xss_clean(trim($value[26]))):'';
                                                    $board            =   isset($value[27])?strip_javascript(xss_clean(trim($value[27]))):'';
                                                    $school           =   isset($value[28])?strip_javascript(xss_clean(trim($value[28]))):'';
                                                    $yearofpass       =   isset($value[29])?strip_javascript(xss_clean(trim($value[29]))):'';                                                

                                                    $course           =   isset($value[30])?strip_javascript(xss_clean(trim($value[30]))):'';

                                                    if(!empty($course)){
                                                        $course_data      =   $this->cm->get_course(array('course_code' => $course));
                                                    }
                                                    

                                                    if(!empty($course_data)){
                                                        $course_id=$course_data->course_id;
                                                    }else{
                                                        $course_id=0;
                                                    }

                                                    $course_is_lateral              =   isset($value[31])?strip_javascript(xss_clean(trim($value[31]))):'';

                                                    if( in_array($course_is_lateral, array('yes','Yes','YES','y','Y'))){
                                                        $is_lateral='yes';
                                                    }else{
                                                        $is_lateral='no';
                                                    }

                                                    $fees                           =   isset($value[32])?strip_javascript(xss_clean(trim($value[32]))):'';
                                                    $admission_date                 =   isset($value[33])?strip_javascript(xss_clean(trim($value[33]))):'';
                                                    $seat_book_fee                  =   isset($value[34])?strip_javascript(xss_clean(trim($value[34]))):'';

                                                    $admission_fee                  =   isset($value[35])?strip_javascript(xss_clean(trim($value[35]))):'';
                                                    $discount                       =   isset($value[36])?strip_javascript(xss_clean(trim($value[36]))):'';

                                                    $first_installment              =   isset($value[37])?strip_javascript(xss_clean(trim($value[37]))):'';
                                                    $first_installment_due_date     =   isset($value[38])?strip_javascript(xss_clean(trim($value[38]))):'';
                                                    $first_installment_pay_date     =   isset($value[39])?strip_javascript(xss_clean(trim($value[39]))):'';
                                                    $first_installment_paid         =   isset($value[40])?strip_javascript(xss_clean(trim($value[40]))):'';

                                                    $second_installment             =   isset($value[41])?strip_javascript(xss_clean(trim($value[41]))):'';
                                                    $second_installment_due_date    =   isset($value[42])?strip_javascript(xss_clean(trim($value[42]))):'';
                                                    $second_installment_pay_date    =   isset($value[43])?strip_javascript(xss_clean(trim($value[43]))):'';
                                                    $second_installment_paid        =   isset($value[44])?strip_javascript(xss_clean(trim($value[44]))):'';

                                                    $third_installment              =   isset($value[45])?strip_javascript(xss_clean(trim($value[45]))):'';
                                                    $third_installment_due_date     =   isset($value[46])?strip_javascript(xss_clean(trim($value[46]))):'';
                                                    $third_installment_pay_date     =   isset($value[47])?strip_javascript(xss_clean(trim($value[47]))):'';
                                                    $third_installment_paid         =   isset($value[48])?strip_javascript(xss_clean(trim($value[48]))):'';

                                                    $fourth_installment             =   isset($value[49])?strip_javascript(xss_clean(trim($value[49]))):'';
                                                    $fourth_installment_due_date    =   isset($value[50])?strip_javascript(xss_clean(trim($value[50]))):'';
                                                    $fourth_installment_pay_date    =   isset($value[51])?strip_javascript(xss_clean(trim($value[51]))):'';
                                                    $fourth_installment_paid        =   isset($value[52])?strip_javascript(xss_clean(trim($value[52]))):'';

                                                    $fifth_installment             =   isset($value[53])?strip_javascript(xss_clean(trim($value[53]))):'';
                                                    $fifth_installment_due_date    =   isset($value[54])?strip_javascript(xss_clean(trim($value[54]))):'';
                                                    $fifth_installment_pay_date    =   isset($value[55])?strip_javascript(xss_clean(trim($value[55]))):'';
                                                    $fifth_installment_paid        =   isset($value[56])?strip_javascript(xss_clean(trim($value[56]))):'';


                                                    $sixth_installment             =   isset($value[57])?strip_javascript(xss_clean(trim($value[57]))):'';
                                                    $sixth_installment_due_date    =   isset($value[58])?strip_javascript(xss_clean(trim($value[58]))):'';
                                                    $sixth_installment_pay_date    =   isset($value[59])?strip_javascript(xss_clean(trim($value[59]))):'';
                                                    $sixth_installment_paid        =   isset($value[60])?strip_javascript(xss_clean(trim($value[60]))):'';

                                                    $seventh_installment           =   isset($value[61])?strip_javascript(xss_clean(trim($value[61]))):'';
                                                    $seventh_installment_due_date  =   isset($value[62])?strip_javascript(xss_clean(trim($value[62]))):'';
                                                    $seventh_installment_pay_date  =   isset($value[63])?strip_javascript(xss_clean(trim($value[63]))):'';
                                                    $seventh_installment_paid      =   isset($value[64])?strip_javascript(xss_clean(trim($value[64]))):'';

                                                    $eighth_installment            =   isset($value[65])?strip_javascript(xss_clean(trim($value[65]))):'';
                                                    $eighth_installment_due_date   =   isset($value[66])?strip_javascript(xss_clean(trim($value[66]))):'';
                                                    $eighth_installment_pay_date   =   isset($value[67])?strip_javascript(xss_clean(trim($value[67]))):'';
                                                    $eighth_installment_paid       =   isset($value[68])?strip_javascript(xss_clean(trim($value[68]))):'';

                                                    // $total_paid                     =   isset($value[48])?strip_javascript(xss_clean(trim($value[48]))):'';
                                                    // $total_due                      =   isset($value[49])?strip_javascript(xss_clean(trim($value[49]))):'';
                                                    
                                                    $agent_fee                      =   isset($value[69])?strip_javascript(xss_clean(trim($value[69]))):'';
                                                    $agent_code                     =   isset($value[70])?strip_javascript(xss_clean(trim($value[70]))):'';
                                                    
                                                    //$payment_date                   =   isset($value[35])?strip_javascript(xss_clean(trim($value[35]))):'';
                                                
                                                    if(in_array($gender, array('m','M','male','Male','MALE'))){
                                                        $gender='male';
                                                    }else if(in_array($gender, array('f','F','female','Female','FEMALE'))){
                                                        $gender='female';
                                                    }else{
                                                        $gender='others';
                                                    }

                                                    $cast_data=$this->cst->get_caste_category(array('caste_name'=>$cast));

                                                    if(!empty($cast_data)){
                                                        $caste_id=$cast_data->caste_id;
                                                    }else{
                                                        $caste_id=$this->cst->store_ucaste_category(array('caste_name'=>$cast));
                                                    }

                                                    $father_name=split_name($father_name);
                                                    $mother_name=split_name($mother_name);

                                                    $dob=(!empty($dob))?date('Y-m-d',strtotime($dob)):'';

                                                    $tempdata[]=array(
                                                        'inst_id'=>$inst_id,
                                                        'inst_parent_id'=>$inst_parent_id,
                                                        'inst_type'=>$inst_type,
                                                        'inst_code'=>$inst_code,
                                                        'temp_status_id'=>$status_added,
                                                        'first_name'=>$f_name,
                                                        'middle_name'=>$m_name,
                                                        'last_name'=>$l_name,
                                                        'email'=>$email,
                                                        'phone_no'=>$phno,
                                                        'whatsapp_no'=>$whatsapp_no,
                                                        'dob'=>$dob,
                                                        'caste'=>$caste_id,
                                                        'blood_group'=>$blood_group,
                                                        'aadhar'=>$aadhar,
                                                        'gender'=>$gender,
                                                        'address'=>$address,
                                                        'city'=>$city,
                                                        'state'=>$state_id,
                                                        'district'=>$district,
                                                        'po_box'=>$po,
                                                        'police_station'=>$ps,
                                                        'pincode'=>$pincode,
                                                        'password'=>$password,
                                                        'father_first_name'=>$father_name[0],
                                                        'father_middle_name'=>$father_name[1],
                                                        'father_last_name'=>$father_name[2],
                                                        'mother_first_name'=>$mother_name[0],
                                                        'mother_middle_name'=>$mother_name[1],
                                                        'mother_last_name'=>$mother_name[2],
                                                        'course_session'=>$session,
                                                        'course'=>$course_id,
                                                        'course_is_lateral'=>$is_lateral,
                                                        'fee'=>$fees,
                                                        'admission_fee'=>$admission_fee,
                                                        'discount'=>$discount,
                                                        'seat_booking_fee'=>$seat_book_fee,
                                                        'first_installment'=>$first_installment,
                                                        'second_installment'=>$second_installment,
                                                        'third_installment'=>$third_installment,
                                                        'fourth_installment'=>$fourth_installment,
                                                        'fifth_installment'=>$fifth_installment,
                                                        'sixth_installment'=>$sixth_installment,
                                                        'seventh_installment'=>$seventh_installment,
                                                        'eighth_installment'=>$eighth_installment,
                                                        'first_installment_date'=>$first_installment_due_date,
                                                        'second_installment_date'=>$second_installment_due_date,
                                                        'third_installment_date'=>$third_installment_due_date,
                                                        'fourth_installment_date'=>$fourth_installment_due_date,
                                                        'fifth_installment_date'=>$fifth_installment_due_date,
                                                        'sixth_installment_date'=>$sixth_installment_due_date,
                                                        'seventh_installment_date'=>$seventh_installment_due_date,
                                                        'eighth_installment_date'=>$eighth_installment_due_date,
                                                        'first_installment_payment_date'=>$first_installment_pay_date,
                                                        'second_installment_payment_date'=>$second_installment_pay_date,
                                                        'third_installment_payment_date'=>$third_installment_pay_date,
                                                        'fourth_installment_payment_date'=>$fourth_installment_pay_date,
                                                        'fifth_installment_payment_date'=>$fifth_installment_pay_date,
                                                        'sixth_installment_payment_date'=>$sixth_installment_pay_date,
                                                        'seventh_installment_payment_date'=>$seventh_installment_pay_date,
                                                        'eighth_installment_payment_date'=>$eighth_installment_pay_date,
                                                        'first_installment_paid'=>$first_installment_paid,
                                                        'second_installment_paid'=>$second_installment_paid,
                                                        'third_installment_paid'=>$third_installment_paid,
                                                        'fourth_installment_paid'=>$fourth_installment_paid,
                                                        'fifth_installment_paid'=>$fifth_installment_paid,
                                                        'sixth_installment_paid'=>$sixth_installment_paid,
                                                        'seventh_installment_paid'=>$seventh_installment_paid,
                                                        'eighth_installment_paid'=>$eighth_installment_paid,
                                                        'agent_fee'=>$agent_fee,
                                                        'agent_code'=>$agent_code,
                                                        'admission_date'=>$admission_date,
                                                        'data_imported'=>'no',
                                                        'created_by'=>$this->data['userdata']->user_id
                                                    );

                                                    $lastIndex = count($tempdata) - 1; // Get the index of the last inserted element

                                                    // Merge the additional data for 'tenth_board', 'tenth_passing_year', etc.
                                                    if (in_array($board, $tenth_boards)) {                                                    
                                                        $tempdata[$lastIndex]['tenth_board'] = $board;
                                                        $tempdata[$lastIndex]['tenth_passing_year'] = $yearofpass;
                                                        $tempdata[$lastIndex]['tenth_total_marks'] = $total_marks;
                                                        $tempdata[$lastIndex]['tenth_passing_marks'] = $marksobtained;                                                    
                                                        $tempdata[$lastIndex]['tenth_percentage'] = $percentage;
                                                    }else{
                                                        $tempdata[$lastIndex]['tenth_board'] = null;
                                                        $tempdata[$lastIndex]['tenth_passing_year'] = null;
                                                        $tempdata[$lastIndex]['tenth_total_marks'] = null;
                                                        $tempdata[$lastIndex]['tenth_passing_marks'] = null;
                                                        $tempdata[$lastIndex]['tenth_percentage'] = null;
                                                    }
                                                }

                                                if(!empty($tempdata)){
                                                    $added=$this->um->store_excel_temp_students($tempdata,TRUE);

                                                    if($added){
                                                        $this->data['excel_temp_data']=$this->um->get_excel_temp_students(array('temp_status_id'=>$status_added),FALSE);

                                                        $this->data['session_id']=$session;
                                                        //$this->data['course_id']=$course;
                                                        //$this->data['subject_id']=$subject;
                                                        $this->data['states']=$this->sm->_get_states(null,FALSE);
                                                        $this->data['courses']=$this->sessm->get_session_courses(array('session_id'=>$session),FALSE);
                                                        $this->data['castes']=$this->cst->get_caste_category(null,FALSE);
                                                        $return['html']=$this->theme->view('_pages/admission/vw_admission_excel_temp_data',$this->data,true);
                                                        //$return['success']='Excel data uploaded.You need to verify the data in next popup for final data import';
                                                        $return['success']='Excel data uploaded to the system stack successfully.System will now verify each data and update the system in the background.Please wait for the update to complete.Eventually uploaded data can be seen in the Admission List page on reloading the page.';
                                                    }else{
                                                        $return['error']='Error occurred.Try after some time.';
                                                    }
                                                }else{
                                                    $return['error']='No data found to import';
                                                } 
                                            }else if($excel_upload_type=='2'){

                                                //print_obj($exceldata);die;
                                               
                                                foreach ($exceldata as $key => $value){

                                                    $row=$key+1;

                                                    //New
                                                    $admission_date   =   isset($value[2])?strip_javascript(xss_clean(trim($value[2]))):'';
                                                    $course           =   isset($value[3])?strip_javascript(xss_clean(trim($value[3]))):'';

                                                    if(!empty($course)){
                                                        $course_data      =   $this->cm->get_course(array('course_code' => $course),TRUE,$inst_code);
                                                    }
                                                    

                                                    if(!empty($course_data)){
                                                        $course_id=$course_data->course_id;
                                                    }else{
                                                        $course_id=0;
                                                    }

                                                    $is_lateral='no';

                                                    $method             =   isset($value[4])?strip_javascript(xss_clean(trim($value[4]))):'';
                                                    $second_method      =   isset($value[5])?strip_javascript(xss_clean(trim($value[5]))):'';
                                                    $batch              =   isset($value[6])?strip_javascript(xss_clean(trim($value[6]))):'';

                                                    if (!empty($batch)) {
                                                        $batch_exp = char_separated_to_array($batch, '-');
                                                    
                                                        if (count($batch_exp) === 2) {
                                                            $batch_start_year = $batch_exp[0];
                                                            $batch_end_year = $batch_exp[1];
                                                    
                                                            if (preg_match('/^\d{4}$/', $batch_start_year) && preg_match('/^\d{4}$/', $batch_end_year)) {
                                                                $session_data=$this->sessm->get_session(array('session_start_year'=>$batch_start_year,'session_end_year'=>$batch_end_year),TRUE,$db_group);

                                                                if(!empty($session_data)){
                                                                    $session=$session_data->session_id;
                                                                }
                                                            }
                                                        }
                                                    }

                                                    if($course_id>0 && $session>0){
                                                        $f_name             =   isset($value[7])?strip_javascript(xss_clean(trim($value[7]))):'';
                                                        $m_name             =   isset($value[8])?strip_javascript(xss_clean(trim($value[8]))):'';
                                                        $l_name             =   isset($value[9])?strip_javascript(xss_clean(trim($value[9]))):'';
                                                        

                                                        $father_name        =   isset($value[10])?strip_javascript(xss_clean(trim($value[10]))):'';
                                                        $mother_name        =   isset($value[11])?strip_javascript(xss_clean(trim($value[11]))):'';

                                                        //echo $f_name;die;

                                                        $dob                =   isset($value[12])?strip_javascript(xss_clean(trim($value[12]))):'';
                                                        $gender             =   isset($value[13])?strip_javascript(xss_clean(trim($value[13]))):'';
                                                        $cast               =   isset($value[14])?strip_javascript(xss_clean(trim($value[14]))):'';
                                                        
                                                        $blood_group        =   isset($value[15])?strip_javascript(xss_clean(trim($value[15]))):'';

                                                        //New
                                                        $college_roll_no    =   isset($value[16])?strip_javascript(xss_clean(trim($value[16]))):'';
                                                        $enrollment_no      =   isset($value[17])?strip_javascript(xss_clean(trim($value[17]))):'';
                                                        $reg_no             =   isset($value[18])?strip_javascript(xss_clean(trim($value[18]))):'';

                                                        $aadhar             =   isset($value[19])?strip_javascript(xss_clean(trim($value[19]))):'';

                                                        //New
                                                        $pan                =   isset($value[20])?strip_javascript(xss_clean(trim($value[20]))):'';

                                                        $phno               =   isset($value[21])?strip_javascript(xss_clean(trim($value[21]))):'';
                                                        $gaurdian_phno      =   isset($value[22])?strip_javascript(xss_clean(trim($value[24]))):'';
                                                        $whatsapp_no        =   isset($value[23])?strip_javascript(xss_clean(trim($value[23]))):'';

                                                        $email              =   isset($value[24])?strip_javascript(xss_clean(trim($value[24]))):'';
                                                        $permanent_address  =   isset($value[25])?strip_javascript(xss_clean(trim($value[25]))):'';

                                                        $city_village       =   isset($value[26])?strip_javascript(xss_clean(trim($value[26]))):'';
                                                        $district           =   isset($value[27])?strip_javascript(xss_clean(trim($value[27]))):'';
                                                        $po                 =   isset($value[28])?strip_javascript(xss_clean(trim($value[28]))):'';

                                                        $ps                 =   isset($value[29])?strip_javascript(xss_clean(trim($value[29]))):'';
                                                        $state              =   isset($value[30])?strip_javascript(xss_clean(trim($value[30]))):'';
                                                        
                                                        if(in_array($state, array('wb','W.B','w.b','west bengal','West Bengal'))){
                                                            $state='West Bengal';
                                                            $state_data=$this->sm->_get_states(array('state_name'=>$state),TRUE,$inst_code);

                                                            if(!empty($state_data)){
                                                                $state_id=$state_data->state_id;
                                                            }else{
                                                                $state_id=0;
                                                            }
                                                        }else{
                                                            $state_id=0;
                                                        }                                                

                                                        $pin              =   isset($value[31])?strip_javascript(xss_clean(trim($value[31]))):'';
                                                        $qualification    =   isset($value[32])?strip_javascript(xss_clean(trim($value[32]))):'';
                                                        $yearofpass       =   isset($value[33])?strip_javascript(xss_clean(trim($value[33]))):'';

                                                        $total_marks      =   isset($value[34])?strip_javascript(xss_clean(trim($value[34]))):'';
                                                        $marksobtained    =   isset($value[35])?strip_javascript(xss_clean(trim($value[35]))):'';
                                                        $percentage       =   isset($value[36])?strip_javascript(xss_clean(trim($value[36]))):'';

                                                        //New
                                                        $subject          =   isset($value[37])?strip_javascript(xss_clean(trim($value[37]))):''; 
                                                        $hons_pass        =   isset($value[38])?strip_javascript(xss_clean(trim($value[38]))):'';

                                                        $board            =   isset($value[39])?strip_javascript(xss_clean(trim($value[39]))):'';
                                                        $school           =   isset($value[40])?strip_javascript(xss_clean(trim($value[40]))):'';
                                                        $school_yop       =   isset($value[41])?strip_javascript(xss_clean(trim($value[41]))):'';                                                                                                 
                                                        

                                                        $course_fees                    =   isset($value[42])?strip_javascript(xss_clean(trim($value[42]))):'';
                                                        $seatbooking_date               =   isset($value[43])?strip_javascript(xss_clean(trim($value[43]))):'';
                                                        $seat_book_fee                  =   isset($value[44])?strip_javascript(xss_clean(trim($value[44]))):'';
                                                        $admission_fee                  =   isset($value[45])?strip_javascript(xss_clean(trim($value[45]))):'';
                                                        $discount                       =   isset($value[46])?strip_javascript(xss_clean(trim($value[46]))):'';

                                                        $first_installment              =   isset($value[47])?strip_javascript(xss_clean(trim($value[47]))):'';
                                                        $first_installment_due_date     =   isset($value[48])?strip_javascript(xss_clean(trim($value[48]))):'';
                                                        $first_installment_pay_date     =   isset($value[49])?strip_javascript(xss_clean(trim($value[49]))):'';
                                                        $first_installment_paid         =   isset($value[50])?strip_javascript(xss_clean(trim($value[50]))):'';

                                                        $second_installment             =   isset($value[51])?strip_javascript(xss_clean(trim($value[51]))):'';
                                                        $second_installment_due_date    =   isset($value[52])?strip_javascript(xss_clean(trim($value[52]))):'';
                                                        $second_installment_pay_date    =   isset($value[53])?strip_javascript(xss_clean(trim($value[53]))):'';
                                                        $second_installment_paid        =   isset($value[54])?strip_javascript(xss_clean(trim($value[54]))):'';

                                                        $third_installment              =   isset($value[55])?strip_javascript(xss_clean(trim($value[55]))):'';
                                                        $third_installment_due_date     =   isset($value[56])?strip_javascript(xss_clean(trim($value[56]))):'';
                                                        $third_installment_pay_date     =   isset($value[57])?strip_javascript(xss_clean(trim($value[57]))):'';
                                                        $third_installment_paid         =   isset($value[58])?strip_javascript(xss_clean(trim($value[58]))):'';

                                                        $fourth_installment             =   isset($value[59])?strip_javascript(xss_clean(trim($value[59]))):'';
                                                        $fourth_installment_due_date    =   isset($value[60])?strip_javascript(xss_clean(trim($value[60]))):'';
                                                        $fourth_installment_pay_date    =   isset($value[61])?strip_javascript(xss_clean(trim($value[61]))):'';
                                                        $fourth_installment_paid        =   isset($value[62])?strip_javascript(xss_clean(trim($value[62]))):'';

                                                        $fifth_installment             =   isset($value[63])?strip_javascript(xss_clean(trim($value[63]))):'';
                                                        $fifth_installment_due_date    =   isset($value[64])?strip_javascript(xss_clean(trim($value[64]))):'';
                                                        $fifth_installment_pay_date    =   isset($value[65])?strip_javascript(xss_clean(trim($value[65]))):'';
                                                        $fifth_installment_paid        =   isset($value[66])?strip_javascript(xss_clean(trim($value[66]))):'';


                                                        $sixth_installment             =   isset($value[67])?strip_javascript(xss_clean(trim($value[67]))):'';
                                                        $sixth_installment_due_date    =   isset($value[68])?strip_javascript(xss_clean(trim($value[68]))):'';
                                                        $sixth_installment_pay_date    =   isset($value[69])?strip_javascript(xss_clean(trim($value[69]))):'';
                                                        $sixth_installment_paid        =   isset($value[70])?strip_javascript(xss_clean(trim($value[70]))):'';

                                                        $seventh_installment           =   isset($value[71])?strip_javascript(xss_clean(trim($value[71]))):'';
                                                        $seventh_installment_due_date  =   isset($value[72])?strip_javascript(xss_clean(trim($value[72]))):'';
                                                        $seventh_installment_pay_date  =   isset($value[73])?strip_javascript(xss_clean(trim($value[73]))):'';
                                                        $seventh_installment_paid      =   isset($value[74])?strip_javascript(xss_clean(trim($value[74]))):'';

                                                        $eighth_installment            =   isset($value[75])?strip_javascript(xss_clean(trim($value[75]))):'';
                                                        $eighth_installment_due_date   =   isset($value[76])?strip_javascript(xss_clean(trim($value[76]))):'';
                                                        $eighth_installment_pay_date   =   isset($value[77])?strip_javascript(xss_clean(trim($value[77]))):'';
                                                        $eighth_installment_paid       =   isset($value[78])?strip_javascript(xss_clean(trim($value[78]))):'';

                                                        $nineth_installment            =   isset($value[79])?strip_javascript(xss_clean(trim($value[79]))):'';
                                                        $nineth_installment_due_date   =   isset($value[80])?strip_javascript(xss_clean(trim($value[80]))):'';
                                                        $nineth_installment_pay_date   =   isset($value[81])?strip_javascript(xss_clean(trim($value[81]))):'';
                                                        $nineth_installment_paid       =   isset($value[82])?strip_javascript(xss_clean(trim($value[82]))):'';

                                                        $tenth_installment            =   isset($value[82])?strip_javascript(xss_clean(trim($value[82]))):'';
                                                        $tenth_installment_due_date   =   isset($value[83])?strip_javascript(xss_clean(trim($value[83]))):'';
                                                        $tenth_installment_pay_date   =   isset($value[84])?strip_javascript(xss_clean(trim($value[84]))):'';
                                                        $tenth_installment_paid       =   isset($value[85])?strip_javascript(xss_clean(trim($value[85]))):'';

                                                        $eleventh_installment            =   isset($value[86])?strip_javascript(xss_clean(trim($value[86]))):'';
                                                        $eleventh_installment_due_date   =   isset($value[87])?strip_javascript(xss_clean(trim($value[87]))):'';
                                                        $eleventh_installment_pay_date   =   isset($value[88])?strip_javascript(xss_clean(trim($value[88]))):'';
                                                        $eleventh_installment_paid       =   isset($value[89])?strip_javascript(xss_clean(trim($value[89]))):'';

                                                        $twelfth_installment            =   isset($value[90])?strip_javascript(xss_clean(trim($value[90]))):'';
                                                        $twelfth_installment_due_date   =   isset($value[91])?strip_javascript(xss_clean(trim($value[91]))):'';
                                                        $twelfth_installment_pay_date   =   isset($value[92])?strip_javascript(xss_clean(trim($value[92]))):'';
                                                        $twelfth_installment_paid       =   isset($value[93])?strip_javascript(xss_clean(trim($value[93]))):'';
                                                        
                                                        $agent_fee                      =   isset($value[94])?strip_javascript(xss_clean(trim($value[94]))):'';
                                                        $agent_code                     =   isset($value[95])?strip_javascript(xss_clean(trim($value[95]))):'';
                                                        
                                                        //$payment_date                   =   isset($value[35])?strip_javascript(xss_clean(trim($value[35]))):'';
                                                    
                                                        if(in_array($gender, array('m','M','male','Male','MALE'))){
                                                            $gender='male';
                                                        }else if(in_array($gender, array('f','F','female','Female','FEMALE'))){
                                                            $gender='female';
                                                        }else{
                                                            $gender='others';
                                                        }

                                                        $cast_data=$this->cst->get_caste_category(array('caste_name'=>$cast));

                                                        if(!empty($cast_data)){
                                                            $caste_id=$cast_data->caste_id;
                                                        }else{
                                                            $caste_id=$this->cst->store_ucaste_category(array('caste_name'=>$cast));
                                                        }

                                                        $father_name=split_name($father_name);
                                                        $mother_name=split_name($mother_name);

                                                        $dob=(!empty($dob))?date('Y-m-d',strtotime($dob)):'';

                                                        $tempdata[]=array(
                                                            'inst_id'=>$inst_id,
                                                            'inst_parent_id'=>$inst_parent_id,
                                                            'inst_type'=>$inst_type,
                                                            'inst_code'=>$inst_code,
                                                            'temp_status_id'=>$status_added,
                                                            'first_name'=>$f_name,
                                                            'middle_name'=>$m_name,
                                                            'last_name'=>$l_name,
                                                            'email'=>$email,
                                                            'phone_no'=>$phno,
                                                            'whatsapp_no'=>$whatsapp_no,
                                                            'dob'=>$dob,
                                                            'caste'=>$caste_id,
                                                            'blood_group'=>$blood_group,
                                                            'college_roll_no'=>$college_roll_no,
                                                            'enrollment_no'=>$enrollment_no,
                                                            'reg_no'=>$reg_no,
                                                            'aadhar'=>$aadhar,
                                                            'pan_no'=>$pan,
                                                            'gender'=>$gender,
                                                            'address'=>$address,
                                                            'city'=>$city,
                                                            'state'=>$state_id,
                                                            'district'=>$district,
                                                            'po_box'=>$po,
                                                            'police_station'=>$ps,
                                                            'pincode'=>$pincode,
                                                            'password'=>$password,
                                                            'father_first_name'=>$father_name[0],
                                                            'father_middle_name'=>$father_name[1],
                                                            'father_last_name'=>$father_name[2],
                                                            'mother_first_name'=>$mother_name[0],
                                                            'mother_middle_name'=>$mother_name[1],
                                                            'mother_last_name'=>$mother_name[2],
                                                            'course_session'=>$session,
                                                            'course'=>$course_id,
                                                            'course_fees'=>$course_fees,
                                                            'course_is_lateral'=>$is_lateral,
                                                            'fee'=>$fees,
                                                            'method'=>$method,
                                                            'second_method'=>$second_method,
                                                            'batch'=>$batch,
                                                            'admission_fee'=>$admission_fee,
                                                            'discount'=>$discount,
                                                            'seat_booking_fee'=>$seat_book_fee,
                                                            'seat_booking_date'=>$seatbooking_date,
                                                            'subject'=>$subject,
                                                            'hons_pass'=>$hons_pass,
                                                            'first_installment'=>$first_installment,
                                                            'second_installment'=>$second_installment,
                                                            'third_installment'=>$third_installment,
                                                            'fourth_installment'=>$fourth_installment,
                                                            'fifth_installment'=>$fifth_installment,
                                                            'sixth_installment'=>$sixth_installment,
                                                            'seventh_installment'=>$seventh_installment,
                                                            'eighth_installment'=>$eighth_installment,
                                                            'nineth_installment'=>$eighth_installment,
                                                            'tenth_installment'=>$tenth_installment,
                                                            'eleventh_installment'=>$eleventh_installment,
                                                            'twelfth_installment'=>$twelfth_installment,


                                                            'first_installment_date'=>$first_installment_due_date,
                                                            'second_installment_date'=>$second_installment_due_date,
                                                            'third_installment_date'=>$third_installment_due_date,
                                                            'fourth_installment_date'=>$fourth_installment_due_date,
                                                            'fifth_installment_date'=>$fifth_installment_due_date,
                                                            'sixth_installment_date'=>$sixth_installment_due_date,
                                                            'seventh_installment_date'=>$seventh_installment_due_date,
                                                            'eighth_installment_date'=>$eighth_installment_due_date,
                                                            'first_installment_payment_date'=>$first_installment_pay_date,
                                                            'second_installment_payment_date'=>$second_installment_pay_date,
                                                            'third_installment_payment_date'=>$third_installment_pay_date,
                                                            'fourth_installment_payment_date'=>$fourth_installment_pay_date,
                                                            'fifth_installment_payment_date'=>$fifth_installment_pay_date,
                                                            'sixth_installment_payment_date'=>$sixth_installment_pay_date,
                                                            'seventh_installment_payment_date'=>$seventh_installment_pay_date,
                                                            'eighth_installment_payment_date'=>$eighth_installment_pay_date,

                                                            'nineth_installment_payment_date'=>$nineth_installment_pay_date,
                                                            'tenth_installment_payment_date'=>$tenth_installment_pay_date,
                                                            'eleventh_installment_payment_date'=>$eleventh_installment_pay_date,
                                                            'twelfth_installment_payment_date'=>$twelfth_installment_pay_date,

                                                            'first_installment_paid'=>$first_installment_paid,
                                                            'second_installment_paid'=>$second_installment_paid,
                                                            'third_installment_paid'=>$third_installment_paid,
                                                            'fourth_installment_paid'=>$fourth_installment_paid,
                                                            'fifth_installment_paid'=>$fifth_installment_paid,
                                                            'sixth_installment_paid'=>$sixth_installment_paid,
                                                            'seventh_installment_paid'=>$seventh_installment_paid,
                                                            'eighth_installment_paid'=>$eighth_installment_paid,

                                                            'nineth_installment_paid'=>$nineth_installment_paid,
                                                            'tenth_installment_paid'=>$tenth_installment_paid,
                                                            'eleventh_installment_paid'=>$eleventh_installment_paid,
                                                            'twelfth_installment_paid'=>$twelfth_installment_paid,

                                                            'last_qualification'=>$qualification,
                                                            'year_of_passing'=>$yearofpass,
                                                            'obtained_marks'=>$marksobtained,
                                                            'total_marks'=>$total_marks,
                                                            'obtained_percentage'=>$percentage,
                                                            'cgpa'=>$percentage,
                                                            'university_board'=>$board,

                                                            'school_name'=>$school,
                                                            'school_yop'=>$school_yop,

                                                            'agent_fee'=>$agent_fee,
                                                            'agent_code'=>$agent_code,
                                                            'admission_date'=>$admission_date,
                                                            'data_imported'=>'no',
                                                            'created_by'=>$this->data['userdata']->user_id
                                                        );

                                                        $lastIndex = count($tempdata) - 1; // Get the index of the last inserted element

                                                        // Merge the additional data for 'tenth_board', 'tenth_passing_year', etc.
                                                        if (in_array($board, $tenth_boards)) {                                                    
                                                            $tempdata[$lastIndex]['tenth_board'] = $board;
                                                            $tempdata[$lastIndex]['tenth_passing_year'] = $yearofpass;
                                                            $tempdata[$lastIndex]['tenth_total_marks'] = $total_marks;
                                                            $tempdata[$lastIndex]['tenth_passing_marks'] = $marksobtained;                                                    
                                                            $tempdata[$lastIndex]['tenth_percentage'] = $percentage;
                                                        }else{
                                                            $tempdata[$lastIndex]['tenth_board'] = null;
                                                            $tempdata[$lastIndex]['tenth_passing_year'] = null;
                                                            $tempdata[$lastIndex]['tenth_total_marks'] = null;
                                                            $tempdata[$lastIndex]['tenth_passing_marks'] = null;
                                                            $tempdata[$lastIndex]['tenth_percentage'] = null;
                                                        }
                                                    }else{
                                                        $return['error']='Course & Session/Batch not found';
                                                    }
                                                }

                                                // print_obj($tempdata);die;

                                                if(!empty($tempdata)){
                                                    $added=$this->um->store_excel_temp_students($tempdata,TRUE,$inst_code);

                                                    if($added){
                                                        $this->data['excel_temp_data']=$this->um->get_excel_temp_students(array('temp_status_id'=>$status_added),FALSE,$inst_code);

                                                        $this->data['session_id']=$session;
                                                        //$this->data['course_id']=$course;
                                                        //$this->data['subject_id']=$subject;
                                                        $this->data['states']=$this->sm->_get_states(null,FALSE,$inst_code);
                                                        $this->data['courses']=$this->sessm->get_session_courses(array('session_id'=>$session),FALSE,'session_inst_id','ASC',$inst_code);
                                                        $this->data['castes']=$this->cst->get_caste_category(null,FALSE,$inst_code);
                                                        $return['html']=$this->theme->view('_pages/admission/vw_admission_excel_temp_data',$this->data,true);
                                                        //$return['success']='Excel data uploaded.You need to verify the data in next popup for final data import';
                                                        $return['success']='Excel data uploaded to the system stack successfully.System will now verify each data and update the system in the background.Please wait for the update to complete.Eventually uploaded data can be seen in the Admission List page on reloading the page.';
                                                    }else{
                                                        $return['error']='Error occurred.Try after some time.';
                                                    }
                                                }else{
                                                    $return['error']='No data found to import';
                                                } 
                                            }
                                                                                      

                                        }else{
                                            $return['error']='Excel can not be uploadede now.Try after sometime.';
                                        }

                                    }else{
                                        $return['error']='Data can not be imported now.Try after sometime.';
                                    }

                                }else{
                                    $return['error']=$validated['error'];
                                }
                            }else{
                                $return['error']='File upload error';
                            }

                        }else{
                            $this->data['excel_temp_data']=$this->um->get_excel_temp_students(array('temp_status_id'=>$get_excel_tempstatus_students->excel_status_id),FALSE);
                            $this->data['session_id']=$get_excel_tempstatus_students->session_id;
                            //$this->data['course_id']=$get_excel_tempstatus_students->course_id;
                            //$this->data['subject_id']=$get_excel_tempstatus_students->subject_id;
                            $return['html']=$this->theme->view('_pages/admission/vw_admission_seatbook_excel_temp_data',$this->data,true);
                            $return['error']='Excel file already uploaded with same file name.Please check again.';
                        }


                    }else{
                        $return['error']='Excel file is missing';
                    }

                }else{
                    $return['error']='Upload type not defined';
                }

                header('Content-Type: application/json');

                echo json_encode($return);

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

    public function onUploadAdmissionExcelFiles(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){
                $user_id=decode_data(session_userdata('admin_id'));
                $data_imported=FALSE;

                $today=date('Y-m-d');

                $tempdata=array();

                $tenth_boards= $this->config->item('tenth_boards_arr');

                $inst_id=$this->inst_id;
                $inst_type=$this->inst_type;
                $inst_parent_id=$this->inst_parent_id;
                $inst_code=$this->inst_code;
                $max_student_upload_limit=$this->student_upload_limit;
                $course_is_lateral='no';
                $session=0;

                $excel_type=post_data('excel_type');

                $excel_upload_type=$this->inst_student_data_excel_format;

                if(isset($_FILES['excel_file']) && $_FILES['excel_file']['name']!=''){
                    $get_excel_tempstatus_students=$this->um->get_excel_tempstatus_students(array('inst_id'=>$inst_id,'excel_file_type'=>$excel_upload_type,'excel_file_name'=>$_FILES['excel_file']['name']),$inst_code);                    

                    if(empty($get_excel_tempstatus_students)){
                        $excel_data=array(
                            'file_size'=>'10',
                            'file_name'=>'excel_file',
                            'file_types'=>'xls,xlsx',
                        );

                        $file_path=$this->onUploadExcelFiles($excel_data);                              
                        
                       
                        if(is_file($file_path)){

                            $validated=validate_admission_excel($file_path,'Xlsx',$max_student_upload_limit,$excel_upload_type);

                            if($validated['validated']==200){

                                $exceldata=$validated['exceldata'];

                                if(!empty($exceldata)){

                                    $temp_status_data_to_add=array(
                                        'excel_file_type'=>$excel_upload_type,
                                        'inst_id'=>$inst_id,
                                        'session_id'=>$session,
                                        'course_id'=>0,
                                        'subject_id'=>0,
                                        'excel_upload_type'=>$excel_type,
                                        'excel_file_name'=>$_FILES['excel_file']['name'],
                                        'excel_upload_status'=>'uploaded_not_imported',
                                        'excel_uploaded_by'=>$user_id
                                    );

                                    $status_added=$this->um->store_excel_tempstatus_students($temp_status_data_to_add,FALSE,$inst_code);                                    

                                    if($status_added){
                                        if($excel_upload_type==1){
                                            $session=post_data('booking_session');
                                        }else if($excel_upload_type==2){
                                            foreach ($exceldata as $key => $value){

                                                $row=$key+1;

                                                //New
                                                $admission_date   =   isset($value[2])?strip_javascript(xss_clean(trim($value[2]))):'';
                                                $course           =   isset($value[3])?strip_javascript(xss_clean(trim($value[3]))):'';

                                                if(!empty($course)){
                                                    $course_data      =   $this->cm->get_course(array('course_code' => $course),TRUE,$inst_code);
                                                }
                                                

                                                if(!empty($course_data)){
                                                    $course_id=$course_data->course_id;
                                                }else{
                                                    $course_id=0;
                                                }

                                                $is_lateral='no';

                                                $method             =   isset($value[4])?strip_javascript(xss_clean(trim($value[4]))):'';
                                                $second_method      =   isset($value[5])?strip_javascript(xss_clean(trim($value[5]))):'';
                                                $batch              =   isset($value[6])?strip_javascript(xss_clean(trim($value[6]))):'';

                                                if (!empty($batch)) {
                                                    $batch_exp = char_separated_to_array($batch, '-');
                                                
                                                    if (count($batch_exp) === 2) {
                                                        $batch_start_year = $batch_exp[0];
                                                        $batch_end_year = $batch_exp[1];
                                                
                                                        if (preg_match('/^\d{4}$/', $batch_start_year) && preg_match('/^\d{4}$/', $batch_end_year)) {
                                                            $session_data=$this->sessm->get_session(array('session_start_year'=>$batch_start_year,'session_end_year'=>$batch_end_year),TRUE,$db_group);

                                                            if(!empty($session_data)){
                                                                $session=$session_data->session_id;
                                                            }
                                                        }
                                                    }
                                                }

                                                
                                                $f_name             =   isset($value[7])?strip_javascript(xss_clean(trim($value[7]))):'';
                                                $m_name             =   isset($value[8])?strip_javascript(xss_clean(trim($value[8]))):'';
                                                $l_name             =   isset($value[9])?strip_javascript(xss_clean(trim($value[9]))):'';
                                                

                                                $father_name        =   isset($value[10])?strip_javascript(xss_clean(trim($value[10]))):'';
                                                $mother_name        =   isset($value[11])?strip_javascript(xss_clean(trim($value[11]))):'';

                                                //echo $f_name;die;

                                                $dob                =   isset($value[12])?strip_javascript(xss_clean(trim($value[12]))):'';
                                                $gender             =   isset($value[13])?strip_javascript(xss_clean(trim($value[13]))):'';
                                                $cast               =   isset($value[14])?strip_javascript(xss_clean(trim($value[14]))):'';
                                                
                                                $blood_group        =   isset($value[15])?strip_javascript(xss_clean(trim($value[15]))):'';

                                                //New
                                                $college_roll_no    =   isset($value[16])?strip_javascript(xss_clean(trim($value[16]))):'';
                                                $enrollment_no      =   isset($value[17])?strip_javascript(xss_clean(trim($value[17]))):'';
                                                $reg_no             =   isset($value[18])?strip_javascript(xss_clean(trim($value[18]))):'';

                                                $aadhar             =   isset($value[19])?strip_javascript(xss_clean(trim($value[19]))):'';

                                                //New
                                                $pan                =   isset($value[20])?strip_javascript(xss_clean(trim($value[20]))):'';

                                                $phno               =   isset($value[21])?strip_javascript(xss_clean(trim($value[21]))):'';
                                                $gaurdian_phno      =   isset($value[22])?strip_javascript(xss_clean(trim($value[24]))):'';
                                                $whatsapp_no        =   isset($value[23])?strip_javascript(xss_clean(trim($value[23]))):'';

                                                $email              =   isset($value[24])?strip_javascript(xss_clean(trim($value[24]))):'';
                                                $permanent_address  =   isset($value[25])?strip_javascript(xss_clean(trim($value[25]))):'';

                                                $city_village       =   isset($value[26])?strip_javascript(xss_clean(trim($value[26]))):'';
                                                $district           =   isset($value[27])?strip_javascript(xss_clean(trim($value[27]))):'';
                                                $po                 =   isset($value[28])?strip_javascript(xss_clean(trim($value[28]))):'';

                                                $ps                 =   isset($value[29])?strip_javascript(xss_clean(trim($value[29]))):'';
                                                $state              =   isset($value[30])?strip_javascript(xss_clean(trim($value[30]))):'';
                                                
                                                if(in_array($state, array('wb','W.B','w.b','west bengal','West Bengal'))){
                                                    $state='West Bengal';
                                                    $state_data=$this->sm->_get_states(array('state_name'=>$state),TRUE,$inst_code);

                                                    if(!empty($state_data)){
                                                        $state_id=$state_data->state_id;
                                                    }else{
                                                        $state_id=0;
                                                    }
                                                }else{
                                                    $state_id=0;
                                                }                                                

                                                $pin              =   isset($value[31])?strip_javascript(xss_clean(trim($value[31]))):'';
                                                $qualification    =   isset($value[32])?strip_javascript(xss_clean(trim($value[32]))):'';
                                                $yearofpass       =   isset($value[33])?strip_javascript(xss_clean(trim($value[33]))):'';

                                                $total_marks      =   isset($value[34])?strip_javascript(xss_clean(trim($value[34]))):'';
                                                $marksobtained    =   isset($value[35])?strip_javascript(xss_clean(trim($value[35]))):'';
                                                $percentage       =   isset($value[36])?strip_javascript(xss_clean(trim($value[36]))):'';

                                                //New
                                                $subject          =   isset($value[37])?strip_javascript(xss_clean(trim($value[37]))):''; 
                                                $hons_pass        =   isset($value[38])?strip_javascript(xss_clean(trim($value[38]))):'';

                                                $board            =   isset($value[39])?strip_javascript(xss_clean(trim($value[39]))):'';
                                                $school           =   isset($value[40])?strip_javascript(xss_clean(trim($value[40]))):'';
                                                $school_yop       =   isset($value[41])?strip_javascript(xss_clean(trim($value[41]))):'';                                                                                                 
                                                

                                                $course_fees                    =   isset($value[42])?strip_javascript(xss_clean(trim($value[42]))):'';
                                                $seatbooking_date               =   isset($value[43])?strip_javascript(xss_clean(trim($value[43]))):'';
                                                $seat_book_fee                  =   isset($value[44])?strip_javascript(xss_clean(trim($value[44]))):'';
                                                $admission_fee                  =   isset($value[45])?strip_javascript(xss_clean(trim($value[45]))):'';
                                                $discount                       =   isset($value[46])?strip_javascript(xss_clean(trim($value[46]))):'';

                                                $first_installment              =   isset($value[47])?strip_javascript(xss_clean(trim($value[47]))):'';
                                                $first_installment_due_date     =   isset($value[48])?strip_javascript(xss_clean(trim($value[48]))):'';
                                                $first_installment_pay_date     =   isset($value[49])?strip_javascript(xss_clean(trim($value[49]))):'';
                                                $first_installment_paid         =   isset($value[50])?strip_javascript(xss_clean(trim($value[50]))):'';

                                                $second_installment             =   isset($value[51])?strip_javascript(xss_clean(trim($value[51]))):'';
                                                $second_installment_due_date    =   isset($value[52])?strip_javascript(xss_clean(trim($value[52]))):'';
                                                $second_installment_pay_date    =   isset($value[53])?strip_javascript(xss_clean(trim($value[53]))):'';
                                                $second_installment_paid        =   isset($value[54])?strip_javascript(xss_clean(trim($value[54]))):'';

                                                $third_installment              =   isset($value[55])?strip_javascript(xss_clean(trim($value[55]))):'';
                                                $third_installment_due_date     =   isset($value[56])?strip_javascript(xss_clean(trim($value[56]))):'';
                                                $third_installment_pay_date     =   isset($value[57])?strip_javascript(xss_clean(trim($value[57]))):'';
                                                $third_installment_paid         =   isset($value[58])?strip_javascript(xss_clean(trim($value[58]))):'';

                                                $fourth_installment             =   isset($value[59])?strip_javascript(xss_clean(trim($value[59]))):'';
                                                $fourth_installment_due_date    =   isset($value[60])?strip_javascript(xss_clean(trim($value[60]))):'';
                                                $fourth_installment_pay_date    =   isset($value[61])?strip_javascript(xss_clean(trim($value[61]))):'';
                                                $fourth_installment_paid        =   isset($value[62])?strip_javascript(xss_clean(trim($value[62]))):'';

                                                $fifth_installment             =   isset($value[63])?strip_javascript(xss_clean(trim($value[63]))):'';
                                                $fifth_installment_due_date    =   isset($value[64])?strip_javascript(xss_clean(trim($value[64]))):'';
                                                $fifth_installment_pay_date    =   isset($value[65])?strip_javascript(xss_clean(trim($value[65]))):'';
                                                $fifth_installment_paid        =   isset($value[66])?strip_javascript(xss_clean(trim($value[66]))):'';


                                                $sixth_installment             =   isset($value[67])?strip_javascript(xss_clean(trim($value[67]))):'';
                                                $sixth_installment_due_date    =   isset($value[68])?strip_javascript(xss_clean(trim($value[68]))):'';
                                                $sixth_installment_pay_date    =   isset($value[69])?strip_javascript(xss_clean(trim($value[69]))):'';
                                                $sixth_installment_paid        =   isset($value[70])?strip_javascript(xss_clean(trim($value[70]))):'';

                                                $seventh_installment           =   isset($value[71])?strip_javascript(xss_clean(trim($value[71]))):'';
                                                $seventh_installment_due_date  =   isset($value[72])?strip_javascript(xss_clean(trim($value[72]))):'';
                                                $seventh_installment_pay_date  =   isset($value[73])?strip_javascript(xss_clean(trim($value[73]))):'';
                                                $seventh_installment_paid      =   isset($value[74])?strip_javascript(xss_clean(trim($value[74]))):'';

                                                $eighth_installment            =   isset($value[75])?strip_javascript(xss_clean(trim($value[75]))):'';
                                                $eighth_installment_due_date   =   isset($value[76])?strip_javascript(xss_clean(trim($value[76]))):'';
                                                $eighth_installment_pay_date   =   isset($value[77])?strip_javascript(xss_clean(trim($value[77]))):'';
                                                $eighth_installment_paid       =   isset($value[78])?strip_javascript(xss_clean(trim($value[78]))):'';

                                                $nineth_installment            =   isset($value[79])?strip_javascript(xss_clean(trim($value[79]))):'';
                                                $nineth_installment_due_date   =   isset($value[80])?strip_javascript(xss_clean(trim($value[80]))):'';
                                                $nineth_installment_pay_date   =   isset($value[81])?strip_javascript(xss_clean(trim($value[81]))):'';
                                                $nineth_installment_paid       =   isset($value[82])?strip_javascript(xss_clean(trim($value[82]))):'';

                                                $tenth_installment            =   isset($value[82])?strip_javascript(xss_clean(trim($value[82]))):'';
                                                $tenth_installment_due_date   =   isset($value[83])?strip_javascript(xss_clean(trim($value[83]))):'';
                                                $tenth_installment_pay_date   =   isset($value[84])?strip_javascript(xss_clean(trim($value[84]))):'';
                                                $tenth_installment_paid       =   isset($value[85])?strip_javascript(xss_clean(trim($value[85]))):'';

                                                $eleventh_installment            =   isset($value[86])?strip_javascript(xss_clean(trim($value[86]))):'';
                                                $eleventh_installment_due_date   =   isset($value[87])?strip_javascript(xss_clean(trim($value[87]))):'';
                                                $eleventh_installment_pay_date   =   isset($value[88])?strip_javascript(xss_clean(trim($value[88]))):'';
                                                $eleventh_installment_paid       =   isset($value[89])?strip_javascript(xss_clean(trim($value[89]))):'';

                                                $twelfth_installment            =   isset($value[90])?strip_javascript(xss_clean(trim($value[90]))):'';
                                                $twelfth_installment_due_date   =   isset($value[91])?strip_javascript(xss_clean(trim($value[91]))):'';
                                                $twelfth_installment_pay_date   =   isset($value[92])?strip_javascript(xss_clean(trim($value[92]))):'';
                                                $twelfth_installment_paid       =   isset($value[93])?strip_javascript(xss_clean(trim($value[93]))):'';
                                                
                                                $agent_fee                      =   isset($value[94])?strip_javascript(xss_clean(trim($value[94]))):'';
                                                $agent_code                     =   isset($value[95])?strip_javascript(xss_clean(trim($value[95]))):'';
                                                
                                                //$payment_date                   =   isset($value[35])?strip_javascript(xss_clean(trim($value[35]))):'';
                                            
                                                if(in_array($gender, array('m','M','male','Male','MALE'))){
                                                    $gender='male';
                                                }else if(in_array($gender, array('f','F','female','Female','FEMALE'))){
                                                    $gender='female';
                                                }else{
                                                    $gender='others';
                                                }

                                                $cast_data=$this->cst->get_caste_category(array('caste_name'=>$cast));

                                                if(!empty($cast_data)){
                                                    $caste_id=$cast_data->caste_id;
                                                }else{
                                                    $caste_id=$this->cst->store_ucaste_category(array('caste_name'=>$cast));
                                                }

                                                $father_name=split_name($father_name);
                                                $mother_name=split_name($mother_name);

                                                $dob=(!empty($dob))?date('Y-m-d',strtotime($dob)):'';

                                                $tempdata[]=array(
                                                    'inst_id'=>$inst_id,
                                                    'inst_parent_id'=>$inst_parent_id,
                                                    'inst_type'=>$inst_type,
                                                    'inst_code'=>$inst_code,
                                                    'temp_status_id'=>$status_added,
                                                    'first_name'=>$f_name,
                                                    'middle_name'=>$m_name,
                                                    'last_name'=>$l_name,
                                                    'email'=>$email,
                                                    'phone_no'=>$phno,
                                                    'whatsapp_no'=>$whatsapp_no,
                                                    'dob'=>$dob,
                                                    'caste'=>$caste_id,
                                                    'blood_group'=>$blood_group,
                                                    'college_roll_no'=>$college_roll_no,
                                                    'enrollment_no'=>$enrollment_no,
                                                    'reg_no'=>$reg_no,
                                                    'aadhar'=>$aadhar,
                                                    'pan_no'=>$pan,
                                                    'gender'=>$gender,
                                                    'address'=>$address,
                                                    'city'=>$city,
                                                    'state'=>$state_id,
                                                    'district'=>$district,
                                                    'po_box'=>$po,
                                                    'police_station'=>$ps,
                                                    'pincode'=>$pincode,
                                                    'password'=>$password,
                                                    'father_first_name'=>$father_name[0],
                                                    'father_middle_name'=>$father_name[1],
                                                    'father_last_name'=>$father_name[2],
                                                    'mother_first_name'=>$mother_name[0],
                                                    'mother_middle_name'=>$mother_name[1],
                                                    'mother_last_name'=>$mother_name[2],
                                                    'course_session'=>$session,
                                                    'course'=>$course_id,
                                                    'course_fees'=>$course_fees,
                                                    'course_is_lateral'=>$is_lateral,
                                                    'fee'=>$fees,
                                                    'method'=>$method,
                                                    'second_method'=>$second_method,
                                                    'batch'=>$batch,
                                                    'admission_fee'=>$admission_fee,
                                                    'discount'=>$discount,
                                                    'seat_booking_fee'=>$seat_book_fee,
                                                    'seat_booking_date'=>$seatbooking_date,
                                                    'subject'=>$subject,
                                                    'hons_pass'=>$hons_pass,
                                                    'first_installment'=>$first_installment,
                                                    'second_installment'=>$second_installment,
                                                    'third_installment'=>$third_installment,
                                                    'fourth_installment'=>$fourth_installment,
                                                    'fifth_installment'=>$fifth_installment,
                                                    'sixth_installment'=>$sixth_installment,
                                                    'seventh_installment'=>$seventh_installment,
                                                    'eighth_installment'=>$eighth_installment,
                                                    'nineth_installment'=>$eighth_installment,
                                                    'tenth_installment'=>$tenth_installment,
                                                    'eleventh_installment'=>$eleventh_installment,
                                                    'twelfth_installment'=>$twelfth_installment,


                                                    'first_installment_date'=>$first_installment_due_date,
                                                    'second_installment_date'=>$second_installment_due_date,
                                                    'third_installment_date'=>$third_installment_due_date,
                                                    'fourth_installment_date'=>$fourth_installment_due_date,
                                                    'fifth_installment_date'=>$fifth_installment_due_date,
                                                    'sixth_installment_date'=>$sixth_installment_due_date,
                                                    'seventh_installment_date'=>$seventh_installment_due_date,
                                                    'eighth_installment_date'=>$eighth_installment_due_date,
                                                    'first_installment_payment_date'=>$first_installment_pay_date,
                                                    'second_installment_payment_date'=>$second_installment_pay_date,
                                                    'third_installment_payment_date'=>$third_installment_pay_date,
                                                    'fourth_installment_payment_date'=>$fourth_installment_pay_date,
                                                    'fifth_installment_payment_date'=>$fifth_installment_pay_date,
                                                    'sixth_installment_payment_date'=>$sixth_installment_pay_date,
                                                    'seventh_installment_payment_date'=>$seventh_installment_pay_date,
                                                    'eighth_installment_payment_date'=>$eighth_installment_pay_date,

                                                    'nineth_installment_payment_date'=>$nineth_installment_pay_date,
                                                    'tenth_installment_payment_date'=>$tenth_installment_pay_date,
                                                    'eleventh_installment_payment_date'=>$eleventh_installment_pay_date,
                                                    'twelfth_installment_payment_date'=>$twelfth_installment_pay_date,

                                                    'first_installment_paid'=>$first_installment_paid,
                                                    'second_installment_paid'=>$second_installment_paid,
                                                    'third_installment_paid'=>$third_installment_paid,
                                                    'fourth_installment_paid'=>$fourth_installment_paid,
                                                    'fifth_installment_paid'=>$fifth_installment_paid,
                                                    'sixth_installment_paid'=>$sixth_installment_paid,
                                                    'seventh_installment_paid'=>$seventh_installment_paid,
                                                    'eighth_installment_paid'=>$eighth_installment_paid,

                                                    'nineth_installment_paid'=>$nineth_installment_paid,
                                                    'tenth_installment_paid'=>$tenth_installment_paid,
                                                    'eleventh_installment_paid'=>$eleventh_installment_paid,
                                                    'twelfth_installment_paid'=>$twelfth_installment_paid,

                                                    'last_qualification'=>$qualification,
                                                    'year_of_passing'=>$yearofpass,
                                                    'obtained_marks'=>$marksobtained,
                                                    'total_marks'=>$total_marks,
                                                    'obtained_percentage'=>$percentage,
                                                    'cgpa'=>$percentage,
                                                    'university_board'=>$board,

                                                    'school_name'=>$school,
                                                    'school_yop'=>$school_yop,

                                                    'agent_fee'=>$agent_fee,
                                                    'agent_code'=>$agent_code,
                                                    'admission_date'=>$admission_date,
                                                    'data_imported'=>'no',
                                                    'created_by'=>$this->data['userdata']->user_id
                                                );

                                                $lastIndex = count($tempdata) - 1; // Get the index of the last inserted element

                                                // Merge the additional data for 'tenth_board', 'tenth_passing_year', etc.
                                                if (in_array($board, $tenth_boards)) {                                                    
                                                    $tempdata[$lastIndex]['tenth_board'] = $board;
                                                    $tempdata[$lastIndex]['tenth_passing_year'] = $yearofpass;
                                                    $tempdata[$lastIndex]['tenth_total_marks'] = $total_marks;
                                                    $tempdata[$lastIndex]['tenth_passing_marks'] = $marksobtained;                                                    
                                                    $tempdata[$lastIndex]['tenth_percentage'] = $percentage;
                                                }else{
                                                    $tempdata[$lastIndex]['tenth_board'] = null;
                                                    $tempdata[$lastIndex]['tenth_passing_year'] = null;
                                                    $tempdata[$lastIndex]['tenth_total_marks'] = null;
                                                    $tempdata[$lastIndex]['tenth_passing_marks'] = null;
                                                    $tempdata[$lastIndex]['tenth_percentage'] = null;
                                                }
                                            }


                                            if(!empty($tempdata)){
                                                $added=$this->um->store_excel_temp_students($tempdata,TRUE,$inst_code);

                                                if($added){
                                                    $this->data['excel_temp_data']=$this->um->get_excel_temp_students(array('temp_status_id'=>$status_added),FALSE,$inst_code);

                                                    $this->data['session_id']=$session;
                                                    //$this->data['course_id']=$course;
                                                    //$this->data['subject_id']=$subject;
                                                    $this->data['states']=$this->sm->_get_states(null,FALSE,$inst_code);
                                                    $this->data['courses']=$this->sessm->get_session_courses(array('session_id'=>$session),FALSE,'session_inst_id','ASC',$inst_code);
                                                    $this->data['castes']=$this->cst->get_caste_category(null,FALSE,$inst_code);
                                                    $return['redirect']=$this->data['base_uel'].'/admission/tempdata/'.encode_data($status_added);
                                                    $return['html']=$this->theme->view('_pages/admission/vw_admission_excel_temp_data',$this->data,true);
                                                    //$return['success']='Excel data uploaded.You need to verify the data in next popup for final data import';
                                                    $return['success']='Excel data uploaded to the system stack successfully.System will now verify each data and update the system in the background.Please wait for the update to complete.Eventually uploaded data can be seen in the Admission List page on reloading the page.';
                                                }else{
                                                    $return['error']='Error occurred.Try after some time.';
                                                }
                                            }else{
                                                $return['error']='No data found to import';
                                            }
                
                                        }else{
                                            $return['error']='Upload type not defined';
                                        }
                                    }else{
                                        $return['error']='Excel can not be uploadede now.Try after sometime.';
                                    }

                                }else{
                                    $return['error']='Data can not be imported now.Try after sometime.';
                                }

                            }else{
                                $return['error']=$validated['error'];
                            }

                        }else{
                            $return['error']='File upload error';
                        }
                        
                    }else{
                        $this->data['excel_temp_data']=$this->um->get_excel_temp_students(array('temp_status_id'=>$get_excel_tempstatus_students->excel_status_id),FALSE);
                        $this->data['session_id']=$get_excel_tempstatus_students->session_id;
                        //$this->data['course_id']=$get_excel_tempstatus_students->course_id;
                        //$this->data['subject_id']=$get_excel_tempstatus_students->subject_id;
                        $return['html']=$this->theme->view('_pages/admission/vw_admission_seatbook_excel_temp_data',$this->data,true);
                        $return['error']='Excel file already uploaded with same file name.Please check again.';
                    }

                    
                }else{
                    $return['error']='Excel file is missing';
                }

                

                header('Content-Type: application/json');

                echo json_encode($return);

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

    public function onCheckUpdateImportAdmissionData_v1(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){
                $user_id=decode_data(session_userdata('admin_id'));
                $data_imported=FALSE;
                $data_is_importable='no';

                $inst_id=$this->inst_id;
                $db_group=$this->inst_code;

                $excel_file_id=post_data('excel_file_id');

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

                    $file_data=$this->um->get_excel_tempstatus_students(array('excel_status_id'=>$excel_file_id,'excel_upload_status'=>'uploaded_not_checked'),TRUE,$db_group);

                    if(!empty($file_data)){

                        $excel_data=$this->input->post('excel_data');

                        if(!empty($excel_data)){
                            if ($this->inst_student_data_excel_format == 2) {
                                $excel_type_col=12;
                            }else{
                                $excel_type_col=8;
                            }

                            foreach($excel_data as $key=>$value){
                                $installment_data = []; // reset for each student

                                $f_name=$value['first_name'];
                                $l_name=$value['last_name'];
                                $father_f_name=$value['father_first_name'];
                                $father_m_name=$value['father_middle_name'];
                                $father_l_name=$value['father_last_name'];
                                $mother_f_name=$value['mother_first_name'];
                                $mother_m_name=$value['mother_middle_name'];
                                $mother_l_name=$value['mother_last_name'];
                                $dob=$value['dob'];
                                $gender=$value['gender'];
                                $caste=$value['caste'];
                                $blood_group=$value['blood_group'];
                                $college_roll_no=$value['college_roll_no'];
                                $enrollment_no=$value['enrollment_no'];
                                $reg_no=$value['reg_no'];
                                $aadhar=$value['aadhar'];
                                $pan=$value['pan_no'];
                                $phone_no=$value['phone_no'];
                                $father_phone_no=$value['father_phone_no'];
                                $whatsapp_no=$value['whatsapp_no'];
                                $email=$value['email'];
                                $address=$value['address'];
                                $city=$value['city'];
                                $district=$value['district'];
                                $po_box=$value['po_box'];
                                $police_station=$value['police_station'];
                                $state=$value['state'];
                                $pincode=$value['pincode'];
                                $last_qualification=$value['last_qualification'];
                                $year_of_passing=$value['year_of_passing'];
                                $total_marks=$value['total_marks'];
                                $obtained_marks=$value['obtained_marks'];
                                $cgpa=$value['cgpa'];
                                $subject=$value['subject'];
                                $hons_pass=$value['hons_pass'];
                                $university_board=$value['university_board'];
                                $school_name=$value['school_name'];
                                $school_yop=$value['school_yop'];
                                $course_fees=$value['course_fees'];
                                $seat_booking_date=$value['seat_booking_date'];
                                $seat_booking_fee=$value['seat_booking_fee'];
                                $admission_fee=$value['admission_fee'];
                                $discount=$value['discount'];
                                $admission_date=$value['admission_date'];
                                $admission_subject=$value['admission_subject'];
                                $course=$value['course'];
                                $session=$value['session'];
                                $method=$value['method'];
                                $second_method=$value['second_method'];
                                $admission_fee=$value['admission_fee'];
                                $discount=$value['discount'];    
                                
                                if(!empty($admission_date) || $admission_date!=='0000-00-00' || preg_match('/^\d{2}\/\d{2}\/\d{4}$/', $admission_date)){
                                    $data_is_importable='yes';
                                }

                                if(!empty($dob) || $dob!=='0000-00-00' || preg_match('/^\d{2}\/\d{2}\/\d{4}$/', $dob)){
                                    $data_is_importable='yes';
                                }

                                $session_data=$this->sessm->get_session(array('session_id'=>$session),TRUE,$db_group);

                                if(!empty($session_data)){
                                   $batch=$session_data->session_start_year.'-'.$session_data->session_end_year; 
                                   $data_is_importable='yes';
                                }else{
                                    $batch=null; 
                                }

                                $caste_data=$this->cst->get_caste_category(array('caste_name'=>$caste),TRUE,$db_group);

                                if(!empty($caste_data)){
                                    $caste_id=$caste_data->caste_id;
                                    $data_is_importable='yes';
                                }else{
                                    $caste_id=null;
                                }

                                $state_data=$this->sm->_get_states(array('state_name'=>$state),TRUE,$db_group);

                                if(!empty($state_data)){
                                    $state_id=$state_data->state_id;
                                    $data_is_importable='yes';
                                }else{
                                    $state_id=null;
                                }

                                

                                for ($i = 1; $i <= $excel_type_col; $i++) {
                                    $ordinal = numberToOrdinalText($i); // Call the function once
                                    ${$ordinal . '_installment'} = $value[$ordinal . '_installment'] ?? null;
                                    ${$ordinal . '_installment_date'} = $value[$ordinal . '_installment_date'] ?? null;
                                    ${$ordinal . '_installment_payment_date'} = $value[$ordinal . '_installment_payment_date'] ?? null;
                                    ${$ordinal . '_installment_paid'} = $value[$ordinal . '_installment_paid'] ?? null;

                                    $installment_value=${$ordinal . '_installment'};
                                    $installment_due_date=${$ordinal . '_installment_date'};
                                    $installment_payment_date=${$ordinal . '_installment_payment_date'};
                                    $installment_paid=${$ordinal . '_installment_paid'};
                                    
                                    $installment_data[$ordinal . '_installment']=(!empty($installment_value))?$installment_value:null;
                                    $installment_data[$ordinal . '_installment_date']=(!empty($installment_value))?$installment_due_date:null;
                                    $installment_data[$ordinal . '_installment_payment_date']=(!empty($installment_value))?$installment_payment_date:null;
                                    $installment_data[$ordinal . '_installment_paid']=(!empty($installment_value))?$installment_paid:null;   
                                    
                                    if(!empty($installment_value)){
                                        if(!empty($installment_due_date) && !empty($installment_payment_date) && !empty($installment_paid)){
                                            $data_is_importable='yes';
                                        }else{
                                            $data_is_importable='no';
                                        }
                                    }else{
                                        if($i>1){
                                            $data_is_importable='yes';
                                        }
                                    }
                                }

                                $agent_fee=$value['agent_fee'];
                                $agent_code=$value['agent_code'];

                                $student_data=array(
                                    'temp_id'=>$value['temp_data_id'],
                                    'first_name'=>$f_name,
                                    'middle_name'=>$m_name,
                                    'last_name'=>$l_name,
                                    'email'=>$email,
                                    'phone_no'=>$phno,
                                    'whatsapp_no'=>$whatsapp_no,
                                    'dob'=>$dob,
                                    'caste'=>$caste,
                                    'caste_id'=>$caste_id,
                                    'blood_group'=>$blood_group,
                                    'college_roll_no'=>$college_roll_no,
                                    'enrollment_no'=>$enrollment_no,
                                    'reg_no'=>$reg_no,
                                    'aadhar'=>$aadhar,
                                    'pan_no'=>$pan,
                                    'gender'=>$gender,
                                    'address'=>$address,
                                    'city'=>$city,
                                    'state'=>$state,
                                    'state_id'=>$state_id,
                                    'district'=>$district,
                                    'po_box'=>$po,
                                    'police_station'=>$ps,
                                    'pincode'=>$pincode,
                                    'password'=>$password,
                                    'father_first_name'=>$father_first_name,
                                    'father_middle_name'=>$father_middle_name,
                                    'father_last_name'=>$father_last_name,
                                    'mother_first_name'=>$mother_first_name,
                                    'mother_middle_name'=>$mother_middle_name,
                                    'mother_last_name'=>$mother_last_name,
                                    'course_session'=>$session,
                                    'course'=>$course,
                                    'course_fees'=>$course_fees,
                                    'course_is_lateral'=>$is_lateral,
                                    'fee'=>$fees,
                                    'method'=>$method,
                                    'second_method'=>$second_method,
                                    'batch'=>$batch,
                                    'admission_fee'=>$admission_fee,
                                    'discount'=>$discount,
                                    'seat_booking_fee'=>$seat_book_fee,
                                    'seat_booking_date'=>$seatbooking_date,
                                    'subject'=>$subject,
                                    'hons_pass'=>$hons_pass,                                    
                                    'last_qualification'=>$qualification,
                                    'year_of_passing'=>$yearofpass,
                                    'obtained_marks'=>$marksobtained,
                                    'total_marks'=>$total_marks,
                                    'obtained_percentage'=>$percentage,
                                    'cgpa'=>$percentage,
                                    'university_board'=>$board,
                                    'school_name'=>$school,
                                    'school_yop'=>$school_yop,
                                    'agent_fee'=>$agent_fee,
                                    'agent_code'=>$agent_code,
                                    'admission_date'=>$admission_date,
                                    'data_imported'=>'no',
                                    'data_is_importable'=>$data_is_importable,
                                    'created_by'=>$this->data['userdata']->user_id
                                );

                                // Merge installment data with student data
                                $tempdata[] = array_merge($student_data, $installment_data);
                            }
                        }

                        if(!empty($tempdata)){
                            $updated=$this->um->update_excel_temp_students($tempdata,'temp_id',TRUE,$db_group);

                            if($updated){
                                $this->um->update_excel_tempstatus_students(array('excel_upload_status'=>'uploaded_not_imported'),array('excel_status_id'=>$excel_file_id),FALSE,$db_group);
                                
                                $return['success']='Data updated';
                            }else{
                                $return['error']='Data not updated';
                            }
                        }else{
                            $return['error']='No Data found';
                        }
                    }else{
                        $return['error']='Excel data not found';
                    }
                }else{
                    $return['error']='Excel data not found';
                }

                header('Content-Type: application/json');

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

    public function onCheckUpdateImportAdmissionData_v2(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){
                $user_id=decode_data(session_userdata('admin_id'));
                $data_imported=FALSE;
                $data_is_importable='no';
    
                $inst_id=$this->inst_id;
                $db_group=$this->inst_code;
    
                $excel_file_id=post_data('excel_file_id');
    
                if(!empty($excel_file_id)){
                    $excel_file_id=decode_data($excel_file_id);
    
                    $file_data=$this->um->get_excel_tempstatus_students(array('excel_status_id'=>$excel_file_id,'excel_upload_status'=>'uploaded_not_checked'),TRUE,$db_group);
    
                    if(!empty($file_data)){
    
                        $excel_data=$this->input->post('excel_data');
    
                        if(!empty($excel_data)){
                            if ($this->inst_student_data_excel_format == 2) {
                                $excel_type_col=12;
                            }else{
                                $excel_type_col=8;
                            }
    
                            foreach($excel_data as $key=>$value){
                                $installment_data = []; // reset for each student
                                $all_conditions_met = true; // Flag to track if all conditions are met
                                
                                // Extract all the data fields
                                $f_name=$value['first_name'];
                                $l_name=$value['last_name'];
                                $father_f_name=$value['father_first_name'];
                                $father_m_name=$value['father_middle_name'];
                                $father_l_name=$value['father_last_name'];
                                $mother_f_name=$value['mother_first_name'];
                                $mother_m_name=$value['mother_middle_name'];
                                $mother_l_name=$value['mother_last_name'];
                                $dob=$value['dob'];
                                $gender=$value['gender'];
                                $caste=$value['caste'];
                                $blood_group=$value['blood_group'];
                                $college_roll_no=$value['college_roll_no'];
                                $enrollment_no=$value['enrollment_no'];
                                $reg_no=$value['reg_no'];
                                $aadhar=$value['aadhar'];
                                $pan=$value['pan_no'];
                                $phone_no=$value['phone_no'];
                                $father_phone_no=$value['father_phone_no'];
                                $whatsapp_no=$value['whatsapp_no'];
                                $email=$value['email'];
                                $address=$value['address'];
                                $city=$value['city'];
                                $district=$value['district'];
                                $po_box=$value['po_box'];
                                $police_station=$value['police_station'];
                                $state=$value['state'];
                                $pincode=$value['pincode'];
                                $last_qualification=$value['last_qualification'];
                                $year_of_passing=$value['year_of_passing'];
                                $total_marks=$value['total_marks'];
                                $obtained_marks=$value['obtained_marks'];
                                $cgpa=$value['cgpa'];
                                $subject=$value['subject'];
                                $hons_pass=$value['hons_pass'];
                                $university_board=$value['university_board'];
                                $school_name=$value['school_name'];
                                $school_yop=$value['school_yop'];
                                $course_fees=$value['course_fees'];
                                $seat_booking_date=$value['seat_booking_date'];
                                $seat_booking_fee=$value['seat_booking_fee'];
                                $admission_fee=$value['admission_fee'];
                                $discount=$value['discount'];
                                $admission_date=$value['admission_date'];
                                $admission_subject=$value['admission_subject'];
                                $course=$value['course'];
                                $session=$value['session'];
                                $method=$value['method'];
                                $second_method=$value['second_method'];
                                $admission_fee=$value['admission_fee'];
                                $discount=$value['discount'];
                                
                                // 1. Check if first name is empty
                                if(empty($f_name)){
                                    $all_conditions_met = false;
                                    //echo 'f_name error';
                                }
                                
                                // 2. Check if phone number is empty
                                if(empty($phone_no)){
                                    $all_conditions_met = false;
                                    //echo '<br>phone no error';
                                }
                                
                                // 3. Check if course fees is empty
                                if(empty($course_fees)){
                                    $all_conditions_met = false;
                                    //echo '<br>course fees error';
                                }
                                
                                // 4. Check if session is empty or is 0
                                if(empty($session) || $session === '0'){
                                    $all_conditions_met = false;
                                    //echo '<br>session error';
                                }
                                
                                // 5. Check if course is empty or is 0
                                if(empty($course) || $course === '0'){
                                    $all_conditions_met = false;
                                    //echo '<br>course error';
                                }
                                
                                // 6. Check if state is empty or is 0
                                if(empty($state) || $state === '0'){
                                    $all_conditions_met = false;
                                    //echo '<br>state error';
                                }
    
                                $session_data=$this->sessm->get_session(array('session_id'=>$session),TRUE,$db_group);
    
                                if(!empty($session_data)){
                                   $batch=$session_data->session_start_year.'-'.$session_data->session_end_year; 
                                }else{
                                    $batch=null;
                                    $all_conditions_met = false;
                                    //echo '<br>session error';
                                }
    
                                $caste_data=$this->cst->get_caste_category(array('caste_name'=>$caste),TRUE,$db_group);
    
                                if(!empty($caste_data)){
                                    $caste_id=$caste_data->caste_id;
                                }else{
                                    $caste_id=null;
                                    $all_conditions_met = false;
                                    //echo '<br>caste error';
                                }
    
                                $state_data=$this->sm->_get_states(array('state_name'=>$state),TRUE,$db_group);
    
                                if(!empty($state_data)){
                                    $state_id=$state_data->state_id;
                                }else{
                                    $state_id=null;
                                    $all_conditions_met = false;
                                    //echo '<br>state error';
                                }
    
                                // Check if at least one installment exists and is properly filled
                                $has_valid_installment = false;
    
                                // Process installment data
                                for ($i = 1; $i <= $excel_type_col; $i++) {
                                    $ordinal = numberToOrdinalText($i);
                                    ${$ordinal . '_installment'} = $value[$ordinal . '_installment'] ?? null;
                                    ${$ordinal . '_installment_date'} = $value[$ordinal . '_installment_date'] ?? null;
                                    ${$ordinal . '_installment_payment_date'} = $value[$ordinal . '_installment_payment_date'] ?? null;
                                    ${$ordinal . '_installment_paid'} = $value[$ordinal . '_installment_paid'] ?? null;
    
                                    $installment_value = ${$ordinal . '_installment'};
                                    $installment_due_date = ${$ordinal . '_installment_date'};
                                    $installment_payment_date = ${$ordinal . '_installment_payment_date'};
                                    $installment_paid = ${$ordinal . '_installment_paid'};
                                    
                                    // Store the data in the array regardless of validation
                                    $installment_data[$ordinal . '_installment'] = (!empty($installment_value)) ? $installment_value : null;
                                    $installment_data[$ordinal . '_installment_date'] = (!empty($installment_due_date)) ? $installment_due_date : null;
                                    $installment_data[$ordinal . '_installment_payment_date'] = (!empty($installment_payment_date)) ? $installment_payment_date : null;
                                    $installment_data[$ordinal . '_installment_paid'] = (!empty($installment_paid)) ? $installment_paid : null;
                                    
                                    // 7. Validate installment data if provided
                                    if(!empty($installment_value) && $installment_value > 0) {
                                        $date_format_valid_due = !empty($installment_due_date) && preg_match('/^\d{2}\/\d{2}\/\d{4}$/', $installment_due_date);
                                        $date_format_valid_payment = !empty($installment_payment_date) && preg_match('/^\d{2}\/\d{2}\/\d{4}$/', $installment_payment_date);
                                        $paid_status_valid = !empty($installment_paid) && ($installment_paid == 'yes' || $installment_paid == 'no');
                                        
                                        // If installment value is provided, all related fields must be valid
                                        if($date_format_valid_due && $date_format_valid_payment && $paid_status_valid) {
                                            $has_valid_installment = true;
                                        }
                                    }
                                }
                                
                                // At least one valid installment must exist
                                if(!$has_valid_installment) {
                                    $all_conditions_met = false;
                                }
    
                                $agent_fee=$value['agent_fee'];
                                $agent_code=$value['agent_code'];

                               // echo $all_conditions_met;die;
                                
                                // Set final importable status based on all conditions
                                if($all_conditions_met) {
                                    $data_is_importable = 'yes';
                                } else {
                                    $data_is_importable = 'no';
                                }
    
                                $student_data=array(
                                    'temp_id'=>$value['temp_data_id'],
                                    'first_name'=>$f_name,
                                    'middle_name'=>$m_name,
                                    'last_name'=>$l_name,
                                    'email'=>$email,
                                    'phone_no'=>$phone_no,
                                    'whatsapp_no'=>$whatsapp_no,
                                    'dob'=>$dob,
                                    'caste'=>$caste,
                                    'caste_id'=>$caste_id,
                                    'blood_group'=>$blood_group,
                                    'college_roll_no'=>$college_roll_no,
                                    'enrollment_no'=>$enrollment_no,
                                    'reg_no'=>$reg_no,
                                    'aadhar'=>$aadhar,
                                    'pan_no'=>$pan,
                                    'gender'=>$gender,
                                    'address'=>$address,
                                    'city'=>$city,
                                    'state'=>$state,
                                    'state_id'=>$state_id,
                                    'district'=>$district,
                                    'po_box'=>$po,
                                    'police_station'=>$ps,
                                    'pincode'=>$pincode,
                                    'password'=>$password,
                                    'father_first_name'=>$father_first_name,
                                    'father_middle_name'=>$father_middle_name,
                                    'father_last_name'=>$father_last_name,
                                    'mother_first_name'=>$mother_first_name,
                                    'mother_middle_name'=>$mother_middle_name,
                                    'mother_last_name'=>$mother_last_name,
                                    'course_session'=>$session,
                                    'course'=>$course,
                                    'course_fees'=>$course_fees,
                                    'course_is_lateral'=>$is_lateral,
                                    'fee'=>$fees,
                                    'method'=>$method,
                                    'second_method'=>$second_method,
                                    'batch'=>$batch,
                                    'admission_fee'=>$admission_fee,
                                    'discount'=>$discount,
                                    'seat_booking_fee'=>$seat_book_fee,
                                    'seat_booking_date'=>$seatbooking_date,
                                    'subject'=>$subject,
                                    'hons_pass'=>$hons_pass,                                    
                                    'last_qualification'=>$qualification,
                                    'year_of_passing'=>$yearofpass,
                                    'obtained_marks'=>$marksobtained,
                                    'total_marks'=>$total_marks,
                                    'obtained_percentage'=>$percentage,
                                    'cgpa'=>$percentage,
                                    'university_board'=>$board,
                                    'school_name'=>$school,
                                    'school_yop'=>$school_yop,
                                    'agent_fee'=>$agent_fee,
                                    'agent_code'=>$agent_code,
                                    'admission_date'=>$admission_date,
                                    'data_imported'=>'no',
                                    'data_is_importable'=>$data_is_importable,
                                    'created_by'=>$this->data['userdata']->user_id
                                );
    
                                // Merge installment data with student data
                                $tempdata[] = array_merge($student_data, $installment_data);
                            }
                        }

                        
    
                        if(!empty($tempdata)){
                            $updated=$this->um->update_excel_temp_students($tempdata,'temp_id',TRUE,$db_group);
    
                            if($updated){
                                if($data_is_importable=='yes'){
                                    $this->um->update_excel_tempstatus_students(array('excel_upload_status'=>'uploaded_not_imported'),array('excel_status_id'=>$excel_file_id),FALSE,$db_group);
                                }                                
                                
                                $return['success']='Data updated';
                            }else{
                                $return['error']='Data not updated';
                            }
                        }else{
                            $return['error']='No Data found';
                        }
                    }else{
                        $return['error']='Excel data not found';
                    }
                }else{
                    $return['error']='Excel data not found';
                }
    
                header('Content-Type: application/json');
    
                echo json_encode($return);
            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }

    public function onCheckUpdateImportAdmissionData(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){
                $user_id=decode_data(session_userdata('admin_id'));
                $data_imported=FALSE;
                $data_is_importable='no';
    
                $inst_id=$this->inst_id;
                $db_group=$this->inst_code;
    
                $excel_file_id=post_data('excel_file_id');
    
                if(!empty($excel_file_id)){
                    $excel_file_id=decode_data($excel_file_id);
    
                    $file_data=$this->um->get_excel_tempstatus_students(array('excel_status_id'=>$excel_file_id,'excel_upload_status'=>'uploaded_not_checked'),TRUE,$db_group);
    
                    if(!empty($file_data)){
    
                        $excel_data=$this->input->post('excel_data');
    
                        if(!empty($excel_data)){
                            if ($this->inst_student_data_excel_format == 2) {
                                $excel_type_col=12;
                            }else{
                                $excel_type_col=8;
                            }
    
                            foreach($excel_data as $key=>$value){
                                $installment_data = []; // reset for each student
                                $all_conditions_met = true; // Flag to track if all conditions are met
                                
                                // Extract all the data fields
                                $f_name=$value['first_name'];
                                $l_name=$value['last_name'];
                                $father_f_name=$value['father_first_name'];
                                $father_m_name=$value['father_middle_name'];
                                $father_l_name=$value['father_last_name'];
                                $mother_f_name=$value['mother_first_name'];
                                $mother_m_name=$value['mother_middle_name'];
                                $mother_l_name=$value['mother_last_name'];
                                $dob=$value['dob'];
                                $gender=$value['gender'];
                                $caste=$value['caste'];
                                $blood_group=$value['blood_group'];
                                $college_roll_no=$value['college_roll_no'];
                                $enrollment_no=$value['enrollment_no'];
                                $reg_no=$value['reg_no'];
                                $aadhar=$value['aadhar'];
                                $pan=$value['pan_no'];
                                $phone_no=$value['phone_no'];
                                $father_phone_no=$value['father_phone_no'];
                                $whatsapp_no=$value['whatsapp_no'];
                                $email=$value['email'];
                                $address=$value['address'];
                                $city=$value['city'];
                                $district=$value['district'];
                                $po_box=$value['po_box'];
                                $police_station=$value['police_station'];
                                $state=$value['state'];
                                $pincode=$value['pincode'];
                                $last_qualification=$value['last_qualification'];
                                $year_of_passing=$value['year_of_passing'];
                                $total_marks=$value['total_marks'];
                                $obtained_marks=$value['obtained_marks'];
                                $cgpa=$value['cgpa'];
                                $subject=$value['subject'];
                                $hons_pass=$value['hons_pass'];
                                $university_board=$value['university_board'];
                                $school_name=$value['school_name'];
                                $school_yop=$value['school_yop'];
                                $course_fees=$value['course_fees'];
                                $seat_booking_date=$value['seat_booking_date'];
                                $seat_booking_fee=$value['seat_booking_fee'];
                                $admission_fee=$value['admission_fee'];
                                $discount=$value['discount'];
                                $admission_date=$value['admission_date'];
                                $admission_subject=$value['admission_subject'];
                                $course=$value['course'];
                                $session=$value['session'];
                                $method=$value['method'];
                                $second_method=$value['second_method'];
                                $admission_fee=$value['admission_fee'];
                                $discount=$value['discount'];
                                
                                // 1. Check if first name is empty
                                if(empty($f_name)){
                                    $all_conditions_met = false;
                                }
                                
                                // 2. Check if phone number is empty
                                if(empty($phone_no)){
                                    $all_conditions_met = false;
                                }
                                
                                // 3. Check if course fees is empty
                                if(empty($course_fees)){
                                    $all_conditions_met = false;
                                }
                                
                                // 4. Check if session is empty or is 0
                                if(empty($session) || $session === '0'){
                                    $all_conditions_met = false;
                                }
                                
                                // 5. Check if course is empty or is 0
                                if(empty($course) || $course === '0'){
                                    $all_conditions_met = false;
                                }
                                
                                // 6. Check if state is empty or is 0
                                if(empty($state) || $state === '0'){
                                    $all_conditions_met = false;
                                }
    
                                $session_data=$this->sessm->get_session(array('session_id'=>$session),TRUE,$db_group);
    
                                if(!empty($session_data)){
                                   $batch=$session_data->session_start_year.'-'.$session_data->session_end_year; 
                                }else{
                                    $batch=null;
                                    $all_conditions_met = false;
                                }
    
                                $caste_data=$this->cst->get_caste_category(array('caste_name'=>$caste),TRUE,$db_group);
    
                                if(!empty($caste_data)){
                                    $caste_id=$caste_data->caste_id;
                                }else{
                                    $caste_id=null;
                                    $all_conditions_met = false;
                                }
    
                                $state_data=$this->sm->_get_states(array('state_name'=>$state),TRUE,$db_group);
    
                                if(!empty($state_data)){
                                    $state_id=$state_data->state_id;
                                }else{
                                    $state_id=null;
                                    $all_conditions_met = false;
                                }
    
                                // Check if at least one installment exists and is properly filled
                                $has_valid_installment = false;
                                $total_installments = 0; // Track sum of all installments
    
                                // Process installment data
                                for ($i = 1; $i <= $excel_type_col; $i++) {
                                    $ordinal = numberToOrdinalText($i);
                                    ${$ordinal . '_installment'} = $value[$ordinal . '_installment'] ?? null;
                                    ${$ordinal . '_installment_date'} = $value[$ordinal . '_installment_date'] ?? null;
                                    ${$ordinal . '_installment_payment_date'} = $value[$ordinal . '_installment_payment_date'] ?? null;
                                    ${$ordinal . '_installment_paid'} = $value[$ordinal . '_installment_paid'] ?? null;
    
                                    $installment_value = ${$ordinal . '_installment'};
                                    $installment_due_date = ${$ordinal . '_installment_date'};
                                    $installment_payment_date = ${$ordinal . '_installment_payment_date'};
                                    $installment_paid = ${$ordinal . '_installment_paid'};
                                    
                                    // Store the data in the array regardless of validation
                                    $installment_data[$ordinal . '_installment'] = (!empty($installment_value)) ? $installment_value : null;
                                    $installment_data[$ordinal . '_installment_date'] = (!empty($installment_due_date)) ? $installment_due_date : null;
                                    $installment_data[$ordinal . '_installment_payment_date'] = (!empty($installment_payment_date)) ? $installment_payment_date : null;
                                    $installment_data[$ordinal . '_installment_paid'] = (!empty($installment_paid)) ? $installment_paid : null;
                                    
                                    // 7. Validate installment data if provided
                                    if(!empty($installment_value) && $installment_value > 0) {
                                        $date_format_valid_due = !empty($installment_due_date) && preg_match('/^\d{2}\/\d{2}\/\d{4}$/', $installment_due_date);
                                        $date_format_valid_payment = !empty($installment_payment_date) && preg_match('/^\d{2}\/\d{2}\/\d{4}$/', $installment_payment_date);
                                        $paid_status_valid = !empty($installment_paid) && ($installment_paid == 'yes' || $installment_paid == 'no');
                                        
                                        // If installment value is provided, all related fields must be valid
                                        if($date_format_valid_due && $date_format_valid_payment && $paid_status_valid) {
                                            $has_valid_installment = true;
                                        }
                                        
                                        // Add this installment amount to total
                                        $total_installments += floatval($installment_value);
                                    }
                                }
                                
                                // At least one valid installment must exist
                                if(!$has_valid_installment) {
                                    $all_conditions_met = false;
                                }
                                
                                // New logic to validate course fees according to conditions provided
                                // Convert all fee values to float for proper comparison
                                $course_fees_val = !empty($course_fees) ? floatval($course_fees) : 0;
                                $discount_val = !empty($discount) ? floatval($discount) : 0;
                                $admission_fee_val = !empty($admission_fee) ? floatval($admission_fee) : 0;
                                
                                // Check if course fees match one of the required fee structures
                                $fees_match = false;
                                
                                // 1. With discount and admission fee: installments + admission = (course - discount)
                                if (!empty($discount) && $discount_val > 0 && !empty($admission_fee) && $admission_fee_val > 0) {
                                    $expected_total = $course_fees_val - $discount_val;
                                    $actual_total = $total_installments + $admission_fee_val;
                                    $fees_match = (abs($expected_total - $actual_total) < 0.01); // Using small epsilon for float comparison
                                }
                                // 2. With admission fee but no discount: installments + admission = course
                                else if ((empty($discount) || $discount_val == 0) && !empty($admission_fee) && $admission_fee_val > 0) {
                                    $expected_total = $course_fees_val;
                                    $actual_total = $total_installments + $admission_fee_val;
                                    $fees_match = (abs($expected_total - $actual_total) < 0.01);
                                }
                                // 3. With discount but no admission fee: installments = course - discount
                                else if (!empty($discount) && $discount_val > 0 && (empty($admission_fee) || $admission_fee_val == 0)) {
                                    $expected_total = $course_fees_val - $discount_val;
                                    $actual_total = $total_installments;
                                    $fees_match = (abs($expected_total - $actual_total) < 0.01);
                                }
                                // Default case: installments = course
                                else {
                                    $fees_match = (abs($course_fees_val - $total_installments) < 0.01);
                                }
                                
                                // Update all_conditions_met based on fee structure validation
                                if (!$fees_match) {
                                    $all_conditions_met = false;
                                }
    
                                $agent_fee=$value['agent_fee'];
                                $agent_code=$value['agent_code'];
                                
                                // Set final importable status based on all conditions
                                if($all_conditions_met) {
                                    $data_is_importable = 'yes';
                                } else {
                                    $data_is_importable = 'no';
                                }
    
                                $student_data=array(
                                    'temp_id'=>$value['temp_data_id'],
                                    'first_name'=>$f_name,
                                    'middle_name'=>$m_name,
                                    'last_name'=>$l_name,
                                    'email'=>$email,
                                    'phone_no'=>$phno,
                                    'whatsapp_no'=>$whatsapp_no,
                                    'dob'=>$dob,
                                    'caste'=>$caste,
                                    'caste_id'=>$caste_id,
                                    'blood_group'=>$blood_group,
                                    'college_roll_no'=>$college_roll_no,
                                    'enrollment_no'=>$enrollment_no,
                                    'reg_no'=>$reg_no,
                                    'aadhar'=>$aadhar,
                                    'pan_no'=>$pan,
                                    'gender'=>$gender,
                                    'address'=>$address,
                                    'city'=>$city,
                                    'state'=>$state,
                                    'state_id'=>$state_id,
                                    'district'=>$district,
                                    'po_box'=>$po,
                                    'police_station'=>$ps,
                                    'pincode'=>$pincode,
                                    'password'=>$password,
                                    'father_first_name'=>$father_first_name,
                                    'father_middle_name'=>$father_middle_name,
                                    'father_last_name'=>$father_last_name,
                                    'mother_first_name'=>$mother_first_name,
                                    'mother_middle_name'=>$mother_middle_name,
                                    'mother_last_name'=>$mother_last_name,
                                    'course_session'=>$session,
                                    'course'=>$course,
                                    'course_fees'=>$course_fees,
                                    'course_is_lateral'=>$is_lateral,
                                    'fee'=>$fees,
                                    'method'=>$method,
                                    'second_method'=>$second_method,
                                    'batch'=>$batch,
                                    'admission_fee'=>$admission_fee,
                                    'discount'=>$discount,
                                    'seat_booking_fee'=>$seat_book_fee,
                                    'seat_booking_date'=>$seatbooking_date,
                                    'subject'=>$subject,
                                    'hons_pass'=>$hons_pass,                                    
                                    'last_qualification'=>$qualification,
                                    'year_of_passing'=>$yearofpass,
                                    'obtained_marks'=>$marksobtained,
                                    'total_marks'=>$total_marks,
                                    'obtained_percentage'=>$percentage,
                                    'cgpa'=>$percentage,
                                    'university_board'=>$board,
                                    'school_name'=>$school,
                                    'school_yop'=>$school_yop,
                                    'agent_fee'=>$agent_fee,
                                    'agent_code'=>$agent_code,
                                    'admission_date'=>$admission_date,
                                    'data_imported'=>'no',
                                    'data_is_importable'=>$data_is_importable,
                                    'created_by'=>$this->data['userdata']->user_id
                                );
    
                                // Merge installment data with student data
                                $tempdata[] = array_merge($student_data, $installment_data);
                            }
                        }
    
                        if(!empty($tempdata)){
                            $updated=$this->um->update_excel_temp_students($tempdata,'temp_id',TRUE,$db_group);
    
                            if($updated){
                                if($data_is_importable=='yes'){
                                    $this->um->update_excel_tempstatus_students(array('excel_upload_status'=>'uploaded_not_imported'),array('excel_status_id'=>$excel_file_id),FALSE,$db_group);
                                }
                                
                                $return['success']='Data updated';
                            }else{
                                $return['error']='Data not updated';
                            }
                        }else{
                            $return['error']='No Data found';
                        }
                    }else{
                        $return['error']='Excel data not found';
                    }
                }else{
                    $return['error']='Excel data not found';
                }
    
                header('Content-Type: application/json');
    
                echo json_encode($return);
            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }


    // now add more logic for $all_conditions_met according to following:
    //     1.if $course_fees is not matched as following then $all_conditions_met=false
    //         1.sum of all installments+admission_fees=(course_fees-discount) where discount is not empty or zero and admission_fees is not empty or zero
    //         2.sum of all installments+admission_fees=course_fees where discount is empty or zero and admission_fees is not empty or zero
    //         3.sum of all installments=course_fees where discount is not empty or zero and admission_fees is empty or zero


   

    // modify the code to do the following:
    //     1.if $f_name is empty, then check if $data_is_importable='no'
    //     2.if $phone_no is empty, then check if $data_is_importable='no'
    //     3.if $course_fees is empty, then check if $data_is_importable='no'
    //     4.if $session is empty or is 0, then check if $data_is_importable='no'
    //     5.if $course is empty or is 0, then check if $data_is_importable='no'
    //     6.if $state is empty or is 0, then check if $data_is_importable='no'
    //     7.also if $installment_value is not empty or greater than 0 and $installment_due_date is not empty or is valid dateformat 'dd/mm/yyyy' and $installment_payment_date is not empty or is valid dateformat 'dd/mm/yyyy' and $installment_paid is not empty or is 'yes' or 'no', then$data_is_importable='yes' otherwise $data_is_importable='no'

    //     now all of the above case needs to be statisfied otherwise $data_is_importable='no'

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

                $user_id=decode_data(session_userdata('admin_id'));
                $data_imported=FALSE;

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

                // print_obj($this->input->post('excel_data'));die;

                $inst_id=$intitute_data['institute_id'];
                $inst_type=$institute_data['inst_type'];
                $inst_code=$this->inst_code;
                $student_code_settings=$this->data['student_code_settings'];
                $user_code=$this->data['user_code'];

                $file_data=$this->um->get_excel_tempstatus_students(array('excel_status_id'=>$temp_status_id,'excel_upload_status'=>'uploaded_not_imported'),TRUE,$inst_code);

                if(!empty($file_data)){

                    foreach ($file_data as $key => $v) {
                        
                        $temp_id=$value->temp_id;

                        $course=$v->course_id;
                        $session_id=$v->course_session;

                        $course_data=$this->cm->get_course(array('course_id' => $course),TRUE,$inst_code);
                        $session_data=$this->sessm->get_session(array('session_id' => $session_id),TRUE,$inst_code);
                        $state_data=$this->sm->_get_states(array('state_id'=>$state_id),TRUE,$inst_code);

                        if(!empty($course_data) && !empty($session_data) && !empty($state_data)){
                            $dob=clean_data($v->dob);
                            if(!isValidDate($dob)){
                                $dob=null;
                            }

                            
                        }
                    }

                    $return['success']='Excel data has been uploaded successfully';
                    $return['redirect']=$this->data['base_url'].'/students';

                }else{
                    $return['error']='Excel data is missing';                    
                }
                
                header('Content-Type: application/json');

                echo json_encode($return);

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


    //Payments
    function indexAdmissionPayments(){
        if(session_userdata('isAdminLoggedin')){

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

            $this->data['page_title']='Admission Payments';

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

            $college_id=$check_institute['institute_id'];

            $admission_id=$this->uri->segment(3,0);
            //$txn_id=$this->uri->segment(5,0);

            $txn_id=$this->input->get('p');

            $admission_id=decode_data($admission_id);

            $total=0;
            $pay_data=array();
            $admission_data=array();
            $_fees_value=array();
            $hostel_fees=array();
            $session_fees_types=array();
            $session_fees_data=array();
            $_txn_data=array();
            $college_fees_data=array();
            $seatbook_amount='';
            $paid_amount=0;
            $seatbook_amount_exists='no';
            $session_years=array();

            $banks=$this->sm->get_banks(array('bank_inst_id'=>$college_id),FALSE);

            $adm_data=$this->adm->get_admission_data(array('admission_id'=>$admission_id));           

            if(!empty($adm_data)){
                $session_id=$adm_data->admission_sess_id;
                $course_id=$adm_data->admission_course_id;
                $inst_id=$adm_data->admission_inst_id;

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

                $session_course_student_data=$this->sessm->get_session_course_student_wise(array('session_id'=>$session_id,'session_inst_id'=>$inst_id,'session_course_id'=>$course_id,'session_stu_id'=>$adm_data->admission_stu_id));

                $_get_payments_details_total=$this->fm->_get_payments_details_total(array('details_stu_id'=>$adm_data->admission_stu_id,'details_sess_id'=>$session_id,'details_course_id'=>$course_id,'details_inst_id'=>$inst_id,'details_type!='=>'agent_payment'),$db_group); 
                
                //print_obj($_get_payments_details_total);die;

                if(!empty($_get_payments_details_total) && !empty($_get_payments_details_total[0]->total)){
                    $paid_amount=$_get_payments_details_total[0]->total;
                }                

                if(!empty($session_course_student_data) && $session_course_student_data->session_course_fees>0){
                    $course_fees=$session_course_student_data->session_course_fees;
                }else{
                    if(!empty($session_course_data)){
                        $course_fees=$session_course_data->session_course_fees;
                    }else{
                        $course_fees=0;
                    }
                }                              

                $this->data['college_fees_data']=$this->fm->get_fees_type_data(array('fees_inst_id'=>$adm_data->admission_inst_id));

                if($txn_id!='0'){
                    $_txn_data=$this->fm->get_payment_details(array('details_order_id'=>$txn_id,'details_inst_id'=>$adm_data->admission_inst_id));
                    $this->fm->update_payment_details(array('details_seen_once'=>'yes'),array('details_order_id'=>$txn_id,'details_inst_id'=>$adm_data->admission_inst_id));
                }

                //print_obj($_txn_data);die;

                $admissionfees_data=$this->fm->_get_fees_details(array('payment_stu_id'=>$adm_data->admission_stu_id,'payment_inst_id'=>$inst_id,'payment_sess_id'=>$session_id,'payment_admission_id'=>$adm_data->admission_id,'payment_course_id'=>$course_id));

                $admission_fees_data=$this->fm->get_payment_details(array('details_type'=>'new_admission','details_payment_type'=>'admission_fees','details_stu_id'=>$adm_data->admission_stu_id,'details_inst_id'=>$adm_data->admission_inst_id,'details_course_id'=>$adm_data->admission_course_id,'details_sess_id'=>$adm_data->admission_sess_id));

                if(!empty($admission_fees_data)){
                    $admission_fees=$admission_fees_data->details_amount;
                }else{
                    $admission_fees=0;
                }

                $seat_book_data=$this->adm->get_seat_booking_payment_data(array('booking_pk_id'=>$adm_data->admission_seat_booking_id,'booking_inst_id'=>$adm_data->admission_inst_id));

                $late_fees_total=$this->fm->get_late_fees_total(array('late_fee_inst_id'=>$adm_data->admission_inst_id,'late_fee_stu_id'=>$adm_data->admission_stu_id,'late_fee_admission_id'=>$adm_data->admission_id,'late_fee_session_id'=>$adm_data->admission_sess_id,'late_fee_course_id'=>$adm_data->admission_course_id),$db_group);
                

                $discount_fees_total=$this->fm->get_discount_fees_total(array('discount_fee_inst_id'=>$adm_data->admission_inst_id,'discount_fee_stu_id'=>$adm_data->admission_stu_id,'discount_fee_admission_id'=>$adm_data->admission_id,'discount_fee_session_id'=>$adm_data->admission_sess_id,'discount_fee_course_id'=>$adm_data->admission_course_id));

                if(!empty($seat_book_data) && $seat_book_data->booking_payment_paid=='yes'){
                    $seatbook_amount_exists='yes';
                    $seatbook_amount=$seat_book_data->booking_payment;
                    $remaining_amount=($course_fees>0 && $course_fees>=$seatbook_amount)?($course_fees-$seatbook_amount):'0';
                }else{
                    $seatbook_amount='0';
                    $seatbook_amount_exists='no';
                    $remaining_amount=$course_fees;
                }

               

                // $remaining_amount=($course_fees-$discount_fees_total)-($paid_amount-$late_fees_total); 
                // $remaining_amount=$remaining_amount-$admission_fees;

                //$remaining_amount=($course_fees-$discount_fees_total)-($paid_amount-$late_fees_total);
                //$course_fees=$course_fees-$discount_fees_total;                
                $remaining_amount=(($remaining_amount+$late_fees_total)-$discount_fees_total)-$paid_amount;

                if($adm_data->stu_mid_name!=''){
                    $student_name=$adm_data->stu_first_name.' '.$adm_data->stu_mid_name.' '.$adm_data->stu_last_name;
                }else{
                    $student_name=$adm_data->stu_first_name.' '.$adm_data->stu_last_name;
                }

                $profile_photo=$this->sm->get_file(array('storage_type'=>'student_profile_photo','storage_type_id'=>$adm_data->stu_user_id,'storage_parent_id'=>$adm_data->stu_inst_id));

                if(!empty($profile_photo) && !empty($profile_photo->media_disk_path)){
                    if(file_exists_any_separator(FCPATH.$profile_photo->media_disk_path)){
                        $profile_img=base_url($profile_photo->media_disk_path_relative);
                    }else{
                        $profile_img=$this->data['no_image'];
                    }
                }else{
                    $profile_img=$this->data['no_image'];
                }


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

                if($session_data->session_duration_type=='yearwise'){
                    $session_years=$this->sessm->get_session_year(array('year_session_id'=>$adm_data->admission_sess_id),FALSE);
                }
                                

                $admission_data=array(
                    'admission_stu_id'=>$adm_data->admission_stu_id,
                    'admission_inst_id'=>$adm_data->admission_inst_id,
                    'admission_sess_id'=>$adm_data->admission_sess_id,
                    'admission_course_id'=>$adm_data->admission_course_id,
                    'admission_course'=>$adm_data->course_name,
                    'admission_fees'=>(!empty($admission_fees_data))?number_format($admission_fees_data->details_amount,2):'0',
                    'admission_id'=>$adm_data->admission_id,
                    'admission_code'=>$adm_data->admission_code,
                    'admission_date'=>date('d-m-Y',strtotime($adm_data->admission_date)),
                    'admission_session_years'=>$session_years,
                    'student_name'=>$student_name,
                    'student_code'=>$adm_data->stu_user_code,
                    'student_email'=>$adm_data->stu_email,
                    'student_phone'=>$adm_data->stu_ph_no,
                    'student_whatsapp_no'=>!empty($adm_data->stu_whatsapp_no)?$adm_data->stu_whatsapp_no:'',
                    'student_aadhar'=>$adm_data->stu_aadhar,
                    'student_photo'=>$profile_img,
                    'course_name'=>$adm_data->course_name,
                    'session_year'=>$adm_data->session_start_year.'-'.$adm_data->session_end_year,
                    'course_fees'=>$course_fees,
                    'course_fees_discount'=>$discount_fees_total,
                    'course_remaining_amount'=>$remaining_amount,
                    'course_late_fees'=>$late_fees_total,
                    'admissionfees_data'=>$admissionfees_data
                );
            }
            

            $this->data['banks']=$banks;
            $this->data['college_fees_data']=$college_fees_data;
            $this->data['txn_data']=$_txn_data;
            $this->data['seatbook_amount']=$seatbook_amount;
            $this->data['seatbook_amount_exists']=$seatbook_amount_exists;
            $this->data['admission_total_payment']=(!empty($_get_payments_details_total))?$_get_payments_details_total[0]->total:'0';
            $this->data['admission_data']=$admission_data;
            $this->data['inst_in_bill_print']=$this->inst_in_bill_print;

            //print_obj($this->data['admission_data']);


            $this->theme->title($this->data['page_title'])->add_partial('partial_admission_fee_payment_inst_mode_modal')->load('admission/vw_admission_payments', $this->data);

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


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

            $this->data['page_title']='Admission Payments';

            $admission_id=$this->uri->segment(4,0);
            //$txn_id=$this->uri->segment(5,0);

             $txn_id=$this->input->get('p');

             //echo $txn_id;die;
            //echo $admission_id;die;

            $admission_id=decode_data($admission_id);

            $total=0;
            $pay_data=array();
            $admission_data=array();
            $_fees_value=array();
            $session_fees_types=array();
            $session_fees_data=array();
            $_txn_data=array();

            $this->data['banks']=$this->sm->get_banks(array('bank_inst_id'=>$this->data['userdata']->user_id),FALSE);

            $adm_data=$this->adm->get_admission_data(array('admission_id'=>$admission_id));

            //print_obj($adm_data);die;

            if(!empty($adm_data)){

                $session_id=$adm_data->admission_sess_id;
                $course_id=$adm_data->admission_course_id;
                $inst_id=$adm_data->admission_inst_id;

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

                //print_obj($session_course_data);die;

                if(!empty($session_course_data)){
                    $course_fees=$session_course_data->session_course_fees;
                }else{
                    $course_fees=0;
                }

                //Admission Txn Data

                $this->data['college_fees_data']=$this->fm->get_fees_type_data(array('fees_inst_id'=>$adm_data->admission_inst_id));


                //print_obj($this->data['college_fees_data']);die;

                if($txn_id!='0'){
                    $_txn_data=$this->fm->get_payment_details(array('details_order_id'=>$txn_id,'details_inst_id'=>$this->data['userdata']->user_id));
                }

                $this->data['txn_data']=$_txn_data;

                //print_obj($this->data['txn_data']);die;

                if(!empty($_txn_data)){
                    //$this->fm->update_payment_details(array('details_seen_once'=>'yes'),array('details_order_id'=>$txn_id,'details_inst_id'=>$this->data['userdata']->user_id));
                }



                //print_obj($_txn_data);die;

                $seat_book_data=$this->adm->get_seat_booking_payment_data(array('booking_pk_id'=>$adm_data->admission_seat_booking_id,'booking_inst_id'=>$adm_data->admission_inst_id));

                if(!empty($seat_book_data) && $seat_book_data->booking_payment_paid=='yes'){
                    $seatbook_amount_exists='yes';
                    $seatbook_amount=$seat_book_data->booking_payment;
                    $remaining_amount=($course_fees>0 && $course_fees>=$seatbook_amount)?($course_fees-$seatbook_amount):'0';
                }else{
                    $seatbook_amount='0';
                    $seatbook_amount_exists='no';
                    $remaining_amount=$course_fees;
                }

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

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

                if($adm_data->stu_mid_name!=''){
                    $student_name=$adm_data->stu_first_name.' '.$adm_data->stu_mid_name.' '.$adm_data->stu_last_name;
                }else{
                    $student_name=$adm_data->stu_first_name.' '.$adm_data->stu_last_name;
                }

                $profile_photo=$this->sm->get_file(array('storage_type'=>'profile_photo','storage_type_id'=>$adm_data->stu_user_id,'storage_parent_id'=>$adm_data->stu_inst_id));

                //print_obj($profile_photo);die;

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


                $admission_data=array(
                    'admission_stu_id'=>$adm_data->admission_stu_id,
                    'admission_inst_id'=>$adm_data->admission_inst_id,
                    'admission_sess_id'=>$adm_data->admission_sess_id,
                    'admission_course_id'=>$adm_data->admission_course_id,
                    'admission_course'=>$adm_data->course_name,
                    'admission_id'=>$adm_data->admission_id,
                    'admission_code'=>$adm_data->admission_code,
                    'admission_date'=>date('d-m-Y',strtotime($adm_data->admission_date)),
                    'student_name'=>$student_name,
                    'student_code'=>$adm_data->stu_user_code,
                    'student_email'=>$adm_data->stu_email,
                    'student_phone'=>$adm_data->stu_ph_no,
                    'student_whatsapp_no'=>$adm_data->stu_whatsapp_no,
                    'student_aadhar'=>$adm_data->stu_aadhar,
                    'student_photo'=>$profile_img,
                    'course_name'=>$adm_data->course_name,
                    'session_year'=>$adm_data->session_start_year.'-'.$adm_data->session_end_year,
                    'course_fees'=>$course_fees,
                    'course_remaining_amount'=>$remaining_amount
                );
            }

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


            // $fees_types=$this->fm->__get_fees_type(array('fees_type_inst_id'=>$adm_data->stu_inst_id,'fees_type_group'=>'Admission'),FALSE);

            // if(!empty($fees_types)){
            //     foreach ($fees_types as $key => $value) {
                    
            //         $session_fees_types[]=array(
            //             'fees_type_id'=>$value->fees_type_id,
            //             'fees_type'=>$value->fees_type,
            //             'fees_value'=>$value->fees_value
            //         );
            //     }
            // }

            if(!empty($adm_data)){
                $session_data=$this->sessm->get_session(array('session_id'=>$adm_data->admission_sess_id));

                if($session_data->session_duration_type=='yearwise'){
                    $session_years=$this->sessm->get_session_year(array('year_session_id'=>$adm_data->admission_sess_id),FALSE);

                    //echo $adm_data->stu_inst_id;

                    //print_obj($session_years);die;

                    $hostel_fees=array();

                    if(!empty($session_data)){
                        foreach ($session_years as $k => $v) {

                            $fees_data=$this->fm->get_fees_type_data(array('fees_inst_id'=>$v->year_session_inst_id,'fees_session_id'=>$v->year_session_id,'fees_year_id'=>$v->year_id));

                            if(!empty($fees_data)){
                                //Hostel Data
                                if($adm_data->admission_avail_hostel=='yes'){
                                    $hostel_fees_data=$this->hm->get_hostel_fees(array('fees_hostel_id'=>$adm_data->admission_hostel_id,'fees_inst_id'=>$adm_data->admission_inst_id,'fees_session_id'=>$adm_data->admission_sess_id,'fees_course_id'=>$adm_data->admission_course_id,'fees_session_year_id'=>$v->year_id),TRUE,FALSE);

                                    $hostel_fees=(!empty($hostel_fees_data))?$hostel_fees_data->fees_value:'0';
                                                               
                                }


                                $fees_types=$this->fm->__get_fees_type_data(array('fees_type_inst_id'=>$adm_data->stu_inst_id,'fees_year_id'=>$v->year_id,'fees_session_id'=>$v->year_session_id,'fees_course_id'=>$adm_data->admission_course_id,'fees_type_group'=>'Admission'),FALSE,FALSE);

                               //print_obj($fees_types);die;

                                if(!empty($fees_types)){
                                    foreach ($fees_types as $key => $value) {
                                        
                                        $session_fees_types[$v->year_id][]=array(
                                            'fees_type_id'=>$value->fees_type_id,
                                            'fees_type'=>$value->fees_type,
                                            'fees_value'=>$value->fees_value
                                        );
                                    }
                                }


                                $installments=$this->fm->get_installments(array('installment_stu_id'=>$adm_data->stu_user_id,
                                                    'installment_inst_id'=>$adm_data->admission_inst_id,
                                                    'installment_admission_id'=>$adm_data->admission_id,
                                                    'installment_sess_id'=>$adm_data->admission_sess_id,
                                                    'installment_course_id'=>$adm_data->admission_course_id,'installment_sess_year'=>$v->year_value),FALSE);

                                //print_obj($installments);die;

                                if(!empty($session_fees_types[$v->year_id])){
                                    foreach ($session_fees_types[$v->year_id] as $_k => $_v) {
                                        $fess_value=$this->fm->_get_fees_details(array('payment_stu_id'=>$adm_data->admission_stu_id,'payment_inst_id'=>$adm_data->admission_inst_id,'payment_admission_id'=>$adm_data->admission_id,'payment_sess_id'=>$adm_data->admission_sess_id,'payment_course_id'=>$adm_data->admission_course_id,'payment_fees_type_id'=>$_v['fees_type_id'],'payment_sess_year'=>$v->year_value));

                                        $_fees_value[$_v['fees_type_id']]=array(
                                            'fees_type_id'=>$_v['fees_type_id'],
                                            'fees_type'=>$_v['fees_type'],
                                            'fees_value'=>(!empty($fess_value))?$fess_value->payment_fees_value:$_v['fees_value']
                                        );
                                    }
                                }

                                if(empty($_fees_value)){
                                    if(!empty($session_fees_types)){
                                        $ses_fee_type=$session_fees_types[$v->year_id];
                                    }else{
                                        $ses_fee_type=$session_fees_types;
                                    }
                                }else{
                                    $ses_fee_type=$_fees_value;
                                }

                                if(!empty($installments)){
                                    foreach ($installments as $key => $value) {
                                        $full_paid_val[$v->year_value][]=$value->installment_paid_full;

                                        $_payment_data[$v->year_value][]=$this->fm->get_payment_details(array('details_type'=>'new_admission','details_payment_type'=>'installment_fees','details_stu_id'=>$value->installment_stu_id,'details_inst_id'=>$value->installment_inst_id,'details_sess_id'=>$value->installment_sess_id,'details_sess_year'=>$value->installment_sess_year,'details_course_id'=>$value->installment_course_id,'details_installment_id'=>$value->installment_id));
                                    }

                                    //print_obj($full_paid_val[$v->year_value]);

                                    if(!empty($full_paid_val[$v->year_value])){
                                        if (in_array('no', $full_paid_val[$v->year_value], true)) {
                                            $full_paid='no';
                                        }else{
                                            $full_paid='yes';
                                        }
                                    }else{
                                        $full_paid='no';
                                    }
                                }else{
                                    $full_paid='no';
                                }

                                $session_fees_data[]=array(
                                    'session_year_id'=>$v->year_id,
                                    'session_year'=>$v->year_value,
                                    'session_fees_types'=>$ses_fee_type,
                                    'session_avail_hostel'=>$adm_data->admission_avail_hostel,
                                    'session_hostel_fees'=>$hostel_fees,
                                    'session_installments'=>$installments,
                                    'session_installment_bill'=>(isset($_payment_data))?$_payment_data:'',
                                    'session_paid'=>$full_paid
                                );
                            }
                                
                        }
                    }
                }
            }else{
               $session_fees_data=array(); 
            }

                

            //die;

            //print_obj($session_fees_data);die;

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

            $payment_data=$this->adm->get_payments_admission_fees_data(array('payment_admission_id'=>$admission_id));


            if(!empty($payment_data)){
                foreach ($payment_data as $key => $value) {

                    $fees_value[]=$value->payment_fees_value;

                    $pay_data[]=array(
                        'fees_type'=>$value->fees_type,
                        'fees_value'=>$value->payment_fees_value
                    );
                }

                $total=array_sum($fees_value);
            }



            $this->data['payment_data']=array(
                'payment_total'=>$total,
                'payment_details'=>$pay_data
            );

           //print_obj($this->data['payment_data']);die;


            $this->theme->title($this->data['page_title'])->add_partial('partial_admission_fee_payment_inst_mode_modal')->load('admission/vw_admission_payments', $this->data);
        }else{

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


    public function onGetSessionFeesData(){
        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'];
                $db_group=$userdata->user_code;

                $session_year_id='0';
                $session_id=post_data('session_id');
                $course_id=post_data('course_id');
                $admission_id=post_data('admission_id');

                $inst_id=post_data('inst_id');

                $fees_value_sum=0;
                $session_fees_types=array();
                $installments=array();
                $installment_nos=[];

                if(!empty($inst_id)){

                    $inst_id=decode_data($inst_id);

                    $adm_data=$this->adm->get_admission_data(array('admission_id'=>$admission_id));

                    //print_obj($adm_data);die;

                    $session_student_course_data=$this->sessm->get_session_course_student_wise(array('session_id'=>$session_id,'session_inst_id'=>$inst_id,'session_course_id'=>$course_id,'session_stu_id'=>$adm_data->admission_stu_id));

                    //print_obj($session_student_course_data);die;

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

                    //print_obj($session_course_data);die;

                    if(!empty($session_student_course_data) && $session_student_course_data->session_course_fees>0){
                        $course_fees=$session_student_course_data->session_course_fees;
                    }else{
                        if(!empty($session_course_data)){
                            $course_fees=$session_course_data->session_course_fees;
                        }else{
                            $course_fees=0;
                        } 
                    }                        


                    $seat_book_data=$this->adm->get_seat_booking_payment_data(array('booking_pk_id'=>$adm_data->admission_seat_booking_id,'booking_inst_id'=>$adm_data->admission_inst_id));

                    if(!empty($seat_book_data) && $seat_book_data->booking_payment_paid=='yes'){
                        $seatbook_amount_exists='yes';
                        $seatbook_amount=$seat_book_data->booking_payment;
                        $remaining_amount=($course_fees>0 && $course_fees>=$seatbook_amount)?($course_fees-$seatbook_amount):'0';
                    }else{
                        $seatbook_amount='0';
                        $seatbook_amount_exists='no';
                        $remaining_amount=$course_fees;
                    }

                    $fees_types=$this->fm->__get_fees_type_data(array('fees_type_inst_id'=>$inst_id,'fees_session_id'=>$session_id,'fees_course_id'=>$course_id,'fees_type_group'=>'Admission'),FALSE,FALSE);

                   //print_obj($fees_types);die;

                    if(!empty($fees_types)){
                        foreach ($fees_types as $key => $value) {
                            $fees_value_sum+=$value->fees_value;
                            $session_fees_types[]=array(
                                'fees_type_id'=>$value->fees_type_id,
                                'fees_type'=>$value->fees_type,
                                'fees_value'=>$value->fees_value
                            );
                        }
                    }else{
                        $fees_value_sum=$remaining_amount;
                    }

                    $grand_total=$fees_value_sum;

                    $session_year_data=$this->sessm->get_session_year(array('year_id'=>$session_year_id));

                    $installments_data=$this->fm->get_installments(array('installment_inst_id'=>$inst_id,'installment_admission_id'=>$admission_id,'installment_sess_id'=>$session_id,'installment_course_id'=>$course_id),FALSE);

                    if(!empty($installments_data)){
                        foreach ($installments_data as $key => $value) {
                            $get_installment_payment_details=$this->fm->get_payment_details(array('details_type'=>'new_admission','details_payment_type'=>'installment_fees','details_type_id'=>$admission_id,'details_inst_id'=>$inst_id,'details_sess_id'=>$session_id,'details_course_id'=>$course_id,'details_installment_id'=>$value->installment_id));

                            $get_fees_details=$this->fm->get_fees_details(array('payment_stu_id'=>$adm_data->admission_stu_id,'payment_inst_id'=>$adm_data->admission_inst_id,'payment_session_id'=>$adm_data->admission_sess_id,'payment_course_id'=>$adm_data->admission_course_id,'payment_admission_id'=>$adm_data->admission_id,'payment_installment_id'=>$value->installment_id));
                            $installment_nos[]=$value->installment_no;
                            $installments[]=array(
                                'installment_id'=>$value->installment_id,
                                'installment_amount'=>$value->installment_value,
                                'installment_penalty'=>$value->installment_value_penalty,
                                'installment_value_penalty_applicable'=>$value->installment_value_penalty_applicable,
                                'installment_date'=>date('d-m-Y',strtotime($value->installment_date)),
                                'installment_can_add'=>(!empty($get_installment_payment_details))?'no':'yes',
                                'installment_get_fees_details'=>$get_fees_details
                            );
                        }

                        $installment_full_paid=$this->fm->_get_installments_total(array('installment_inst_id'=>$inst_id,'installment_admission_id'=>$admission_id,'installment_sess_id'=>$session_id,'installment_course_id'=>$course_id,'installment_paid_full'=>'no'));
                        

                        if($installment_full_paid[0]->installment_total>0){
                            $installment_fully_paid='no';
                        }else{
                            $installment_fully_paid='yes';
                        }
                    }else{
                        $installment_fully_paid='no';
                    }

                    $installment_payments=$this->fm->get_payment_details(array('details_type'=>'new_admission','details_inst_id'=>$inst_id,'details_sess_id'=>$session_id,'details_course_id'=>$course_id,'details_stu_id'=>$adm_data->admission_stu_id,'details_type_id'=>$adm_data->admission_id));

                    if(!empty($installment_payments)){
                        $installment_payments_exists='yes';
                    }else{
                        $installment_payments_exists='no';
                    }

                    $fees_details=array();

                    $_get_fees_details=$this->fm->_get_fees_details(array('payment_stu_id'=>$adm_data->admission_stu_id,'payment_inst_id'=>$inst_id,'payment_sess_id'=>$session_id,'payment_admission_id'=>$adm_data->admission_id,'payment_course_id'=>$adm_data->admission_course_id),FALSE);

                    if(!empty($_get_fees_details)){
                        foreach ($_get_fees_details as $key => $value) {
                            $fees_type_data=$this->adm->get_institute_fees_types(array('fees_type_inst_id'=>$inst_id,'fees_type_id'=>$value->payment_fees_type_id));
                            $fees_details[]=array(
                                'fees_type'=>(!empty($fees_type_data))?$fees_type_data->fees_type:null,
                                'fees_type_id'=>$value->payment_fees_type_id,
                                'fees_value'=>$value->payment_fees_value
                            );
                        }
                    }else{
                        $fees_details=$fees_value_sum;
                    }

                    $scholarship_discount_data=$this->fm->get_discount_fees(array('discount_fee_inst_id'=>$inst_id,'discount_fee_stu_id'=>$adm_data->admission_stu_id,'discount_fee_course_id'=>$adm_data->admission_course_id,'discount_fee_session_id'=>$session_id,'discount_fee_admission_id'=>$adm_data->admission_id,'discount_fee_type'=>'scholarship_discount'));

                    $special_discount_data=$this->fm->get_discount_fees(array('discount_fee_inst_id'=>$inst_id,'discount_fee_stu_id'=>$adm_data->admission_stu_id,'discount_fee_course_id'=>$adm_data->admission_course_id,'discount_fee_session_id'=>$session_id,'discount_fee_admission_id'=>$adm_data->admission_id,'discount_fee_type'=>'special_discount'));

                    $total_discount=$this->fm->get_discount_fees_total(array('discount_fee_inst_id'=>$inst_id,'discount_fee_stu_id'=>$adm_data->admission_stu_id,'discount_fee_course_id'=>$adm_data->admission_course_id,'discount_fee_session_id'=>$session_id,'discount_fee_admission_id'=>$adm_data->admission_id));

                    $grand_total=$grand_total-$total_discount;

                    $missingNumbers = [];
                    $max = max($installment_nos);

                    // Loop through numbers from 1 to the maximum value in the array
                    // Generate the full range of numbers from 1 to the maximum value
                    $allNumbers = range(1, $max);

                    // Remove the numbers in $arr from the full range
                    $missingNumbers = array_diff($allNumbers, $installment_nos);

                    //$admissionfees_data=$this->fm->_get_fees_details(array('payment_stu_id'=>$adm_data->admission_stu_id,'payment_inst_id'=>$inst_id,'payment_sess_id'=>$session_id,'payment_admission_id'=>$adm_data->admission_id,'payment_course_id'=>$adm_data->admission_course_id));

                    if($adm_data->admission_seat_booking_converted=='yes'){
                        $seat_booking_data=$this->adm->get_seat_bookings_data(array('booking_id'=>$adm_data->admission_seat_booking_id),TRUE,$db_group);
                        $admissionfees_data=$this->fm->_get_fees_details(array('payment_stu_id'=>$seat_booking_data->booking_stu_id,'payment_inst_id'=>$seat_booking_data->booking_inst_id,'payment_sess_id'=>$seat_booking_data->booking_sess_id,'payment_through_id'=>$seat_booking_data->booking_id,'payment_course_id'=>$seat_booking_data->booking_course_id,'payment_through'=>'seatbooking'));
                    }else{
                      $admissionfees_data=$this->fm->_get_fees_details(array('payment_stu_id'=>$adm_data->admission_stu_id,'payment_inst_id'=>$inst_id,'payment_sess_id'=>$session_id,'payment_admission_id'=>$adm_data->admission_id,'payment_course_id'=>$adm_data->admission_course_id,'payment_through'=>'admission'));  
                    }

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

                    $this->data['session_missing_installments']=$missingNumbers;

                    $this->data['grand_total']=(!empty($admissionfees_data))?($grand_total-$admissionfees_data->payment_admission_fees_value):$grand_total;
                    $this->data['course_fees']=$course_fees;
                    $this->data['course_remaining_fees']=$remaining_amount;
                    $this->data['seat_book_data']=$seat_book_data;
                    $this->data['session_fees_types']=$session_fees_types;
                    $this->data['installments']=$installments;
                    $this->data['installment_payments_exists']=$installment_payments_exists;
                    $this->data['fees_details']=$fees_details;
                    $this->data['admission_data']=$adm_data;
                    $this->data['inst_in_bill_print']=$this->inst_in_bill_print;
                    $this->data['installment_fully_paid']=$installment_fully_paid;
                    $this->data['installment_full_paid']=$installment_full_paid;
                    $this->data['scholarship_discount_data']=(!empty($scholarship_discount_data))?$scholarship_discount_data->discount_fee:0;
                    $this->data['special_discount_data']=(!empty($special_discount_data))?$special_discount_data->discount_fee:0;

                    $this->data['scholarship_discount_reason']=(!empty($scholarship_discount_data))?$scholarship_discount_data->discount_fee_type_value:'';
                    $this->data['special_discount_reason']=(!empty($special_discount_data))?$special_discount_data->discount_fee_type_value:'';


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


                }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 onUpdateSessionCourseFees(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                $course_id=post_data('course_id');
                $session_id=post_data('session_id');
                $inst_id=post_data('inst_id');
                $stu_id=post_data('stu_id');

                $admission_id=post_data('admission_id');

                $course_fees=post_data('course_fees');

                //Check for seatbooking payments already done or not

                $adm_data=$this->adm->get_admission_data(array('admission_id'=>$admission_id));

                $seat_book_data=$this->adm->get_seat_booking_payment_data(array('booking_pk_id'=>$adm_data->admission_seat_booking_id,'booking_inst_id'=>$adm_data->admission_inst_id));

                if(!empty($seat_book_data) && $seat_book_data->booking_payment_paid=='yes'){
                    $seatbook_amount_exists='yes';
                    $seatbook_amount=$seat_book_data->booking_payment;
                    $course_fees_amount=($course_fees>0 && $course_fees>=$seatbook_amount)?$course_fees:'0';
                    $remaining_amount=($course_fees>0 && $course_fees>=$seatbook_amount)?($course_fees-$seatbook_amount):'0';
                }else{
                    $remaining_amount=$course_fees;
                    $course_fees_amount=$course_fees;
                }

                $session_student_course_data=$this->sessm->get_session_course_student_wise(array('session_id'=>$session_id,'session_inst_id'=>$inst_id,'session_course_id'=>$course_id,'session_stu_id'=>$stu_id));

                $data_to_add=array(
                    'session_id'=>$session_id,
                    'session_inst_id'=>$inst_id,
                    'session_course_id'=>$course_id,
                    'session_stu_id'=>$stu_id,
                    'session_course_fees'=>$course_fees_amount
                );

                if(!empty($session_student_course_data)){
                    $updated=$this->sessm->update_session_course_student_wise($data_to_add,array('session_id'=>$session_id,'session_inst_id'=>$inst_id,'session_course_id'=>$course_id,'session_stu_id'=>$stu_id));
                }else{
                    $updated=$this->sessm->store_session_course_student_wise($data_to_add);
                }

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

                json_headers($return);

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


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

                $session_year_id=post_data('session_year_id');
                $session_id=post_data('session_id');
                $course_id=post_data('course_id');
                $admission_id=post_data('admission_id');

                $inst_id=post_data('inst_id');

                $fees_value_sum=0;
                $session_fees_types=array();
                $installments=array();


                if(!empty($inst_id)){

                    $inst_id=decode_data($inst_id);

                    $adm_data=$this->adm->get_admission_data(array('admission_id'=>$admission_id));

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

                    //print_obj($session_course_data);die;

                    if(!empty($session_course_data)){
                        $course_fees=$session_course_data->session_course_fees;
                    }else{
                        $course_fees=0;
                    }


                    $seat_book_data=$this->adm->get_seat_booking_payment_data(array('booking_pk_id'=>$adm_data->admission_seat_booking_id,'booking_inst_id'=>$adm_data->admission_inst_id));

                    if(!empty($seat_book_data) && $seat_book_data->booking_payment_paid=='yes'){
                        $seatbook_amount_exists='yes';
                        $seatbook_amount=$seat_book_data->booking_payment;
                        $remaining_amount=($course_fees>0 && $course_fees>=$seatbook_amount)?($course_fees-$seatbook_amount):'0';
                    }else{
                        $seatbook_amount='0';
                        $seatbook_amount_exists='no';
                        $remaining_amount=$course_fees;
                    }

                    $fees_types=$this->fm->__get_fees_type_data(array('fees_type_inst_id'=>$inst_id,'fees_year_id'=>$session_year_id,'fees_session_id'=>$session_id,'fees_course_id'=>$course_id,'fees_type_group'=>'Admission'),FALSE,FALSE);

                   //print_obj($fees_types);die;

                    if(!empty($fees_types)){
                        foreach ($fees_types as $key => $value) {
                            $fees_value_sum+=$value->fees_value;
                            $session_fees_types[]=array(
                                'fees_type_id'=>$value->fees_type_id,
                                'fees_type'=>$value->fees_type,
                                'fees_value'=>$value->fees_value
                            );
                        }
                    }else{

                    }

                    $grand_total=$fees_value_sum;

                    $session_year_data=$this->sessm->get_session_year(array('year_id'=>$session_year_id));

                    $installments_data=$this->fm->get_installments(array('installment_inst_id'=>$inst_id,'installment_admission_id'=>$admission_id,'installment_sess_id'=>$session_id,'installment_course_id'=>$course_id,'installment_sess_year'=>$session_year_data->year_value),FALSE);

                    

                    //print_obj($installments_data);die;

                    if(!empty($installments_data)){
                        foreach ($installments_data as $key => $value) {
                            $get_installment_payment_details=$this->fm->get_payment_details(array('details_type'=>'new_admission','details_payment_type'=>'installment_fees','details_type_id'=>$admission_id,'details_inst_id'=>$inst_id,'details_sess_id'=>$session_id,'details_course_id'=>$course_id,'details_installment_id'=>$value->installment_id));

                            $get_fees_details=$this->fm->get_fees_details(array('payment_stu_id'=>$adm_data->admission_stu_id,'payment_inst_id'=>$adm_data->admission_inst_id,'payment_session_id'=>$adm_data->admission_sess_id,'payment_course_id'=>$adm_data->admission_course_id,'payment_admission_id'=>$adm_data->admission_id,'payment_installment_id'=>$value->installment_id));
                            $installments[]=array(
                                'installment_id'=>$value->installment_id,
                                'installment_amount'=>$value->installment_value,
                                'installment_penalty'=>$value->installment_value_penalty,
                                'installment_date'=>date('d-m-Y',strtotime($value->installment_date)),
                                'installment_can_add'=>(!empty($get_installment_payment_details))?'no':'yes',
                                'installment_get_fees_details'=>$get_fees_details
                            );
                        }
                    }


                    $installment_payments=$this->fm->get_payment_details(array('details_type'=>'new_admission','details_inst_id'=>$inst_id,'details_sess_id'=>$session_id,'details_course_id'=>$course_id,'details_stu_id'=>$adm_data->admission_stu_id,'details_type_id'=>$adm_data->admission_id,'details_sess_year'=>$session_year_id));

                    //print_obj($installment_payments);die;

                    if(!empty($installment_payments)){
                        $installment_payments_exists='yes';
                    }else{
                        $installment_payments_exists='no';
                    }


                    $fees_details=array();

                    $_get_fees_details=$this->fm->_get_fees_details(array('payment_stu_id'=>$adm_data->admission_stu_id,'payment_inst_id'=>$inst_id,'payment_sess_id'=>$session_id,'payment_admission_id'=>$adm_data->admission_id,'payment_course_id'=>$adm_data->admission_course_id,'payment_sess_year'=>$session_year_data->year_value),FALSE);

                    if(!empty($_get_fees_details)){
                        foreach ($_get_fees_details as $key => $value) {
                            $fees_type_data=$this->adm->get_institute_fees_types(array('fees_type_inst_id'=>$inst_id,'fees_type_id'=>$value->payment_fees_type_id));
                            $fees_details[]=array(
                                'fees_type'=>(!empty($fees_type_data))?$fees_type_data->fees_type:null,
                                'fees_type_id'=>$value->payment_fees_type_id,
                                'fees_value'=>$value->payment_fees_value
                            );
                        }
                    }

                    $scholarship_discount_data=$this->fm->get_discount_fees(array('discount_fee_inst_id'=>$inst_id,'discount_fee_stu_id'=>$adm_data->admission_stu_id,'discount_fee_course_id'=>$adm_data->admission_course_id,'discount_fee_session_id'=>$session_id,'discount_fee_admission_id'=>$adm_data->admission_id,'discount_fee_type'=>'scholarship_discount'));

                    $special_discount_data=$this->fm->get_discount_fees(array('discount_fee_inst_id'=>$inst_id,'discount_fee_stu_id'=>$adm_data->admission_stu_id,'discount_fee_course_id'=>$adm_data->admission_course_id,'discount_fee_session_id'=>$session_id,'discount_fee_admission_id'=>$adm_data->admission_id,'discount_fee_type'=>'special_discount'));

                    $total_discount=$this->fm->get_discount_fees_total(array('discount_fee_inst_id'=>$inst_id,'discount_fee_stu_id'=>$adm_data->admission_stu_id,'discount_fee_course_id'=>$adm_data->admission_course_id,'discount_fee_session_id'=>$session_id,'discount_fee_admission_id'=>$adm_data->admission_id));

                    $grand_total=$grand_total-$total_discount;

                    $this->data['grand_total']=$grand_total;
                    $this->data['course_fees']=$course_fees;
                    $this->data['course_remaining_fees']=$remaining_amount;
                    $this->data['seat_book_data']=$seat_book_data;
                    $this->data['session_fees_types']=$session_fees_types;
                    $this->data['installments']=$installments;
                    $this->data['installment_payments_exists']=$installment_payments_exists;
                    $this->data['fees_details']=$fees_details;
                    $this->data['scholarship_discount_data']=(!empty($scholarship_discount_data))?$scholarship_discount_data->discount_fee:0;
                    $this->data['special_discount_data']=(!empty($special_discount_data))?$special_discount_data->discount_fee:0;

                    $this->data['scholarship_discount_reason']=(!empty($scholarship_discount_data))?$scholarship_discount_data->discount_fee_type_value:'';
                    $this->data['special_discount_reason']=(!empty($special_discount_data))?$special_discount_data->discount_fee_type_value:'';


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


                }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 onCreateInstallments(){
        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;

                $admission_payment=$this->input->post('admission_payment');

                $admission_fees_found=array();

                $session_fees_types=array();

                $installments=array();

                $total_discount=0;
                $grand_total=0;
                $total_fees=0;
                $installment_amount_sum=0;

                $scholarship_discount_reason_required=false;
                $special_discount_reason_required=false;

                if(!empty($admission_payment)){

                    $stu_id=post_data('stu_id');
                    $inst_id=post_data('inst_id');
                    $admission_id=post_data('admission_id');
                    $session_id=post_data('session_id');
                    $course_id=post_data('course_id');

                    $admission_fees=post_data('admission_fees');

                    $installment_scholarship_discount=post_data('admission_payment_scholarships_fees');
                    $installment_special_discount=post_data('admission_payment_special_fees');
                    $installment_scholarship_discount_reason=post_data('admission_payment_scholarships_fees_reason');
                    $installment_special_discount_reason=post_data('admission_payment_special_fees_reason');

                    //$installment_year=post_data('installment_year');

                    //if($installment_year>0){
                        $student_data=$this->um->get_user(array('user_id'=>$stu_id),'student');
                        $course_data=$this->cm->get_course(array('course_id'=>$course_id,'course_inst_id'=>$inst_id));
                        $session_data=$this->sessm->get_session(array('session_id'=>$session_id,'session_inst_id'=>$inst_id));
                        $subject_data='';//$this->cm->get_subject(array('subject_inst_id'=>$inst_id,'subject_course_id'=>$booking_subject),TRUE);
                        $admission_data=$this->adm->get_admission_data(array('admission_id'=>$admission_id));

                        $seat_book_data=$this->adm->get_seat_booking_payment_data(array('booking_inst_id'=>$inst_id,'booking_stu_id'=>$stu_id,'booking_course_id'=>$course_id));

                        if(!empty($seat_book_data)){
                            $seat_book_amount=$seat_book_data->booking_payment;
                        }else{
                            $seat_book_amount=0;
                        }

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

                        $stu_course_custom_cost=$this->sessm->get_session_course_student_wise(array('session_id'=>$session_id,'session_inst_id'=>$inst_id,'session_course_id'=>$course_id,'session_stu_id'=>$stu_id));

                        //print_obj($stu_course_custom_cost);die;

                        if(!empty($stu_course_custom_cost)){
                             $course_fees=$stu_course_custom_cost->session_course_fees;
                        }else{
                            if(!empty($session_course_data)){
                                $course_fees=$session_course_data->session_course_fees;
                            }else{
                                $course_fees=0;
                            }
                        }

                        $seat_book_data=$this->adm->get_seat_booking_payment_data(array('booking_pk_id'=>$admission_data->admission_seat_booking_id,'booking_inst_id'=>$admission_data->admission_inst_id));

                        if(!empty($seat_book_data) && $seat_book_data->booking_payment_paid=='yes'){
                            $seatbook_amount_exists='yes';
                            $seatbook_amount=$seat_book_data->booking_payment;
                            // $remaining_amount=($course_fees>0 && $course_fees>=$seatbook_amount)?($course_fees-$seatbook_amount):'0';
                            $remaining_amount=($course_fees>0 && $course_fees>=$seatbook_amount)?($course_fees-$seatbook_amount):'0';
                        }else{
                            $seatbook_amount='0';
                            $seatbook_amount_exists='no';
                            $remaining_amount=$course_fees;
                        }                        

                        //echo $remaining_amount;die;

                        if($installment_scholarship_discount>0 && $installment_special_discount>0){
                            $total_discount=$installment_scholarship_discount+$installment_special_discount;

                            $scholarship_discount_reason_required=true;
                            $special_discount_reason_required=true;

                        }else if($installment_scholarship_discount>0 && $installment_special_discount==0){
                            $total_discount=$installment_scholarship_discount;

                            $scholarship_discount_reason_required=true;
                        }else if($installment_scholarship_discount==0 && $installment_special_discount>0){
                            $total_discount=$installment_special_discount;

                            $special_discount_reason_required=true;
                        }

                        if($scholarship_discount_reason_required==true && $special_discount_reason_required==true){
                            if(!empty($installment_scholarship_discount_reason) && empty($installment_special_discount_reason)){

                                $error='Special discount reason required';

                            }else if(empty($installment_scholarship_discount_reason) && !empty($installment_special_discount_reason)){

                                $error='Scholarship discount reason required';

                            }else if(empty($installment_scholarship_discount_reason) && empty($installment_special_discount_reason)){

                                 $error='Scholarship discount & Special discount reason required';
                            }else{
                                $error='';
                            }
                        }else if($scholarship_discount_reason_required==true && $special_discount_reason_required==false){
                            if(!empty($installment_scholarship_discount_reason)){
                                $error='';
                            }else if(empty($installment_scholarship_discount_reason)){
                                $error='Scholarship discount reason required';
                            }
                        }else if($scholarship_discount_reason_required==false && $special_discount_reason_required==true){
                            if(!empty($installment_special_discount_reason)){
                                $error='';
                            }else if(empty($installment_special_discount_reason)){
                                $error='Special discount reason required';
                            }
                        }

                        if(empty($error)){
                            $installmets_total=$this->fm->_get_installments_total(array('installment_stu_id'=>$stu_id,'installment_inst_id'=>$inst_id,'installment_admission_id'=>$admission_id,'installment_sess_id'=>$session_id,'installment_course_id'=>$course_id));

                            if(!empty($admission_payment[0]['installments'])){
                                foreach ($admission_payment[0]['installments'] as $key => $value) {
                                   $total_fees=$total_fees+clean_data($value['amount']); 
                                }
                            }

                            if(!empty($installmets_total[0]->installment_total)){
                                $installmets_total_amount=$installmets_total[0]->installment_total;
                            }else{
                                $installmets_total_amount=$total_fees;
                            }                            

                            $grand_total=$total_fees;

                            $check_param['session_id']=$session_id;
                            $check_param['course_id']=$course_id;
                            $check_param['inst_id']=$inst_id;
                            $check_param['admission_id']=$admission_id;
                            $check_param['stu_id']=$stu_id;
                            $check_param['installment_amount']=$total_fees;
                            $check_param['total_discount']=$total_discount;

                            $check_installments=$this->check_installments($check_param);

                            $installmets_total=$this->fm->_get_installments_total(array('installment_stu_id'=>$stu_id,'installment_inst_id'=>$inst_id,'installment_admission_id'=>$admission_id,'installment_sess_id'=>$session_id,'installment_course_id'=>$course_id));

                            if($check_installments=='ok'){
                                //echo $remaining_amount;die;
                                //if($remaining_amount>$installmets_total_amount){

                                    //print_obj($admission_payment);

                                    $session_year_id=post_data('installment_year');

                                    $session_year_data=$this->sessm->get_session_year(array('year_id'=>$session_year_id));

                                    $session_year=$session_year_data->year_value;

                                    foreach ($admission_payment as $key => $value) {

                                        //print_obj($value);
                                        $fees=$value['fees'];
                                        // $total_fees=clean_data($value['total_fees']);
                                        $installments[]=$value['installments'];

                                        //print_obj($installments);

                                        if(!empty($fees)){

                                            //print_obj($fees);die;

                                            foreach ($fees as $_k => $_v) {
                                                //echo $_v;
                                                $admission_fee[]=array(
                                                    'payment_through'=>'admission',
                                                    'payment_stu_id'=>$stu_id,
                                                    'payment_inst_id'=>$inst_id,
                                                    'payment_sess_id'=>$session_id,
                                                    'payment_admission_id'=>$admission_id,
                                                    'payment_course_id'=>$course_id,
                                                    'payment_fees_type_id'=>$_k,
                                                    'payment_fees_value'=>clean_data($_v),
                                                    'payment_admission_fees_value'=>$admission_fees,
                                                    'payment_sess_year'=>$session_year,
                                                    'created_by'=>$user_id,
                                                    'created_at'=>date('Y-m-d')
                                                );  
                                            } 
                                        }
                                    }

                                    //print_obj($admission_fee);die;

                                    if(!empty($installments[0])){

                                        if($stu_course_custom_cost->is_lateral=='yes'){
                                            $i=$this->inst_lateral_sem_start;
                                        }else{
                                            $i=0;
                                        }                                        

                                        $installment_value=($grand_total/count($installments[0]));

                                        foreach ($installments[0] as $k => $v) {
                                            $dates=date('Y-m-d',strtotime($v['dates']));
                                            $amount=clean_data($v['amount']);
                                            $amount_fine=clean_data($v['amount_fine']);
                                            $amount_fine_applicable=clean_data($v['amount_fine_applicable']);

                                            $installment_amount_sum+=$amount;

                                            $installment_data[]=array(
                                                'installment_no'=>($i+1),
                                                'installment_unique_code'=>generate_string(4),
                                                'installment_stu_id'=>$stu_id,
                                                'installment_inst_id'=>$inst_id,
                                                'installment_admission_id'=>$admission_id,
                                                'installment_sess_id'=>$session_id,
                                                'installment_sess_year'=>$session_year,
                                                'installment_course_id'=>$course_id,
                                                'installment_value'=>$amount,
                                                'installment_value_penalty'=>$amount_fine,
                                                'installment_value_penalty_applicable'=>$amount_fine_applicable,
                                                'installment_scholarship_discount'=>($i==0)?$installment_scholarship_discount:'0.00',
                                                'installment_special_discount'=>($i==0)?$installment_special_discount:'0.00',
                                                'installment_scholarship_discount_reason'=>($i==0)?$installment_scholarship_discount_reason:null,
                                                'installment_special_discount_reason'=>($i==0)?$installment_special_discount_reason:null,
                                                'installment_date'=>$dates,
                                                'created_by'=>$user_id,
                                                'created_at'=>date('Y-m-d')
                                            );

                                            $i++;
                                        }

                                        //echo 'Installment Amount Total:'.$installment_amount_sum.' Grand Total:'.$grand_total.'<br>Remaining Amount:'.$remaining_amount.'<br>Total Discount:'.$total_discount;die;

                                        if(!empty($installment_data)){

                                            if($remaining_amount>0){
                                                $remaining_amount=$remaining_amount-$total_discount;
                                            }


                                            if(!empty($installmets_total[0]->installment_total)){
                                                if($grand_total==$remaining_amount){
                                                    $installment_can_be_setup='yes';
                                                }else{
                                                    $installment_can_be_setup='no';
                                                }
                                            }else{
                                                $installment_can_be_setup='yes';
                                            }

                                            if($installment_can_be_setup=='yes'){
                                                
                                                if($grand_total==$installment_amount_sum){
                                                    if(!empty($admission_fee)){
                                                        $admission_fees_found=$this->fm->_get_fees_details(array('payment_stu_id'=>$stu_id,'payment_inst_id'=>$inst_id,'payment_sess_id'=>$session_id,'payment_admission_id'=>$admission_id,'payment_course_id'=>$course_id,'payment_sess_year'=>$session_year));

                                                        if(empty($admission_fees_found)){
                                                            $fees_data_added=$this->fm->_store_fees_details($admission_fee,TRUE);
                                                        }                                
                                                    }

                                                    if(isset($fees_data_added) && $fees_data_added){

                                                        $installments_found=$this->fm->get_installments(array('installment_stu_id'=>$stu_id,'installment_inst_id'=>$inst_id,'installment_admission_id'=>$admission_id,'installment_sess_id'=>$session_id,'installment_course_id'=>$course_id,'installment_sess_year'=>$session_year));

                                                        if(!empty($installments_found)){
                                                            $this->fm->delete_installments(array('installment_stu_id'=>$stu_id,
                                                                'installment_inst_id'=>$inst_id,
                                                                'installment_admission_id'=>$admission_id,
                                                                'installment_sess_id'=>$session_id,
                                                                'installment_course_id'=>$course_id,'installment_sess_year'=>$session_year));
                                                        }

                                                        $installment_id=$this->fm->store_installments($installment_data,TRUE);

                                                        if($installment_id){
                                                            if($scholarship_discount_reason_required==true){
                                                                $scholarship_discount_data=array(
                                                                    'discount_fee_inst_id'=>$inst_id,
                                                                    'discount_fee_inst_parent_id'=>$this->inst_parent_id,
                                                                    'discount_fee_stu_id'=>$stu_id,
                                                                    'discount_fee_course_id'=>$course_id,
                                                                    'discount_fee_session_id'=>$session_id,
                                                                    'discount_fee_admission_id'=>$admission_id,
                                                                    'discount_fee_installment_id'=>'0',
                                                                    'discount_fee_type_main'=>'admission_discount_fee',
                                                                    'discount_fee_type'=>'scholarship_discount',
                                                                    'discount_fee_type_value'=>$installment_scholarship_discount_reason,
                                                                    'discount_fee'=>$installment_scholarship_discount,
                                                                    'created_at'=>date('Y-m-d H:i:s')
                                                                );

                                                                $this->fm->store_discount_fees($scholarship_discount_data);
                                                            }

                                                            if($special_discount_reason_required==true){
                                                                $special_discount_data=array(
                                                                    'discount_fee_inst_id'=>$inst_id,
                                                                    'discount_fee_inst_parent_id'=>$this->inst_parent_id,
                                                                    'discount_fee_stu_id'=>$stu_id,
                                                                    'discount_fee_course_id'=>$course_id,
                                                                    'discount_fee_session_id'=>$session_id,
                                                                    'discount_fee_admission_id'=>$admission_id,
                                                                    'discount_fee_installment_id'=>'0',
                                                                    'discount_fee_type_main'=>'admission_discount_fee',
                                                                    'discount_fee_type'=>'special_discount',
                                                                    'discount_fee_type_value'=>$installment_special_discount_reason,
                                                                    'discount_fee'=>$installment_special_discount,
                                                                    'created_at'=>date('Y-m-d H:i:s')
                                                                );

                                                                $this->fm->store_discount_fees($special_discount_data);
                                                            }

                                                            $return['success']='Installment has been set successfully.';
                                                        }else{
                                                            $return['error']='Installment not set.';
                                                        }
                                                    }else{
                                                        $return['error']='No further installments can be set now for this session year '.$session_year.'.To setup again first delete the previous installments setup.';
                                                    }                                                
                                                }else{
                                                    $return['error']='Installment amount can not be greater or less than of grand total amount of ₹'.number_format($installment_amount_sum,2);
                                                }
                                            }else{
                                                $return['error']='Total amount needs to be ₹'.number_format($remaining_amount,2);
                                            }                                               
                                        }else{
                                            $return['error']='Installment data not found';
                                        }   
                                    }else{
                                        $return['error']='Installments data not found to create.';
                                    }

                                // }else{
                                //     $return['error']='No further installments can not be set now.Total course fees ₹'.number_format($remaining_amount).' has been covered.';
                                // }                                
                            }else{
                                $return['error']=$check_installments;
                            }
                            
                        }else{
                            $return['error']=$error;
                        }

                            
                    // }else{
                    //     $return['error']='Session Year not selected';
                    // }


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

                json_headers($return);

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


    public function onUpdateInstallment(){
        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'];
                $db_group=$userdata->user_code;

                $installment_id=post_data('installment_id');

                $installment_data=$this->fm->get_installments(array('installment_id'=>$installment_id),TRUE,'installment_sess_year','ASC',$db_group);

                if(!empty($installment_data)){

                    $admission_payment_date=$this->input->post('admission_payment_date');
                    $admission_payment_amount=$this->input->post('admission_payment_amount');
                    $admission_payment_amount_fine=$this->input->post('admission_payment_amount_fine');
                    $admission_value_penalty_applicable=$this->input->post('admission_payment_amount_fine_applicable');

                    $admission_data=$this->adm->_get_admission_data(array('admission_id'=>$installment_data->installment_admission_id),TRUE,$db_group);

                    $session_course_student_data=$this->sessm->get_session_course_student_wise(array('session_id'=>$installment_data->installment_sess_id,'session_inst_id'=>$installment_data->installment_inst_id,'session_course_id'=>$installment_data->installment_course_id,'session_stu_id'=>$installment_data->installment_stu_id),TRUE,$db_group);

                    if(!empty($session_course_student_data)){
                        $course_fees=$session_course_student_data->session_course_fees;
                    }else{
                        $course_fees=0;
                    }

                    $seat_book_data=$this->adm->get_seat_booking_payment_data(array('booking_pk_id'=>$admission_data->admission_seat_booking_id,'booking_inst_id'=>$admission_data->admission_inst_id),TRUE,$db_group);

                   // print_obj($seat_book_data);

                    if(!empty($seat_book_data) && $seat_book_data->booking_payment_paid=='yes'){
                        $seatbook_amount=$seat_book_data->booking_payment;
                        $remaining_amount=($course_fees>0 && $course_fees>=$seatbook_amount)?($course_fees-$seatbook_amount):'0';
                    }else{
                        $remaining_amount=$course_fees;
                    }                    

                    $_get_payments_details_total=$this->fm->_get_payments_details_total(array('details_stu_id'=>$installment_data->installment_stu_id,'details_sess_id'=>$installment_data->installment_sess_id,'details_course_id'=>$installment_data->installment_course_id,'details_inst_id'=>$installment_data->installment_inst_id,'details_type!='=>'agent_payment'),$db_group);
                    

                    if(!empty($_get_payments_details_total) && !empty($_get_payments_details_total[0]->total)){
                        $paid_amount=$_get_payments_details_total[0]->total;
                    }else{
                        $paid_amount=0;
                    }

                    //echo $paid_amount;die;

                    $remaining_amount=$remaining_amount-$paid_amount;

                    if(!empty($admission_payment_amount)){

                        $installments_total=$this->fm->_get_installments_total(array('installment_id!='=>$installment_id,'installment_stu_id'=>$admission_data->admission_stu_id),$db_group);

                        if(!empty($installments_total) && !empty($installments_total[0]->installment_total)){
                            $installments_total=$installments_total[0]->installment_total;
                        }else{
                            $installments_total=0;
                        }

                        $total_value=$admission_payment_amount+$installments_total;

                        if($remaining_amount<=$total_value){

                            if($admission_payment_amount_fine<=$admission_payment_amount){
                                $data_toupdate=array(
                                    'installment_value'=>$admission_payment_amount,
                                    'installment_value_penalty'=>$admission_payment_amount_fine,
                                    'installment_value_penalty_applicable'=>$admission_value_penalty_applicable,
                                    'installment_date'=>date('Y-m-d',strtotime($admission_payment_date)),
                                    'updated_by'=>$this->data['userdata']->user_id,
                                    'updated_at'=>date('Y-m-d H:i:s')
                                );

                                $updated=$this->fm->update_installments($data_toupdate,array('installment_id'=>$installment_id),FALSE,$db_group);

                                if($updated){
                                    $return['success']='Data updated.';
                                }else{
                                    $return['error']='Data can not be updated';
                                }
                            }else{
                                $return['error']='Late fee can not be greater than the actual amount.';
                            }
                        }else{
                            $return['error']=ucwords($this->inst_in_bill_print).' amount can not be greater or less than the remaining amount.';
                        }
                    }else{
                        $return['error']='Data can not be updated.';
                    }
                }else{
                    $return['error']=ucwords($this->inst_in_bill_print).' not found in the system.';
                }

                json_headers($return);

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


    public function check_installments($param){
        // $session_id=post_data('session_id');
        // $course_id=post_data('course_id');
        // $inst_id=post_data('inst_id');
        // $stu_id=post_data('stu_id');

        // $admission_id=poast_data('admission_id');

        $installment_amount=  $param['installment_amount']; //post_data('installment_amount');

        $remaining_installment_amount=0;


        $admission_data=$this->adm->get_admission_data(array('admission_id'=>$param['admission_id']));

        $installmets_total=$this->fm->_get_installments_total(array('installment_stu_id'=>$param['stu_id'],'installment_inst_id'=>$param['inst_id'],'installment_admission_id'=>$param['admission_id'],'installment_sess_id'=>$param['session_id'],'installment_course_id'=>$param['course_id']));


        $session_course_data=$this->sessm->get_session_course(array('session_id'=>$param['session_id'],'session_inst_id'=>$param['inst_id'],'session_course_id'=>$param['course_id']));

        $session_course_student_data=$this->sessm->get_session_course_student_wise(array('session_id'=>$param['session_id'],'session_inst_id'=>$param['inst_id'],'session_course_id'=>$param['course_id'],'session_stu_id'=>$param['stu_id']));                      

        if(!empty($session_course_student_data) && $session_course_student_data->session_course_fees>0){
            $course_fees=$session_course_student_data->session_course_fees;
        }else{
            if(!empty($session_course_data)){
                $course_fees=$session_course_data->session_course_fees;
            }else{
                $course_fees=0;
            }
        }


        $seat_book_data=$this->adm->get_seat_booking_payment_data(array('booking_pk_id'=>$admission_data->admission_seat_booking_id,'booking_inst_id'=>$admission_data->admission_inst_id));

        if(!empty($seat_book_data) && $seat_book_data->booking_payment_paid=='yes'){
            $seatbook_amount_exists='yes';
            $seatbook_amount=$seat_book_data->booking_payment;
            $remaining_amount=($course_fees>0 && $course_fees>=$seatbook_amount)?($course_fees-$seatbook_amount):'0';
        }else{
            $seatbook_amount='0';
            $seatbook_amount_exists='no';
            $remaining_amount=$course_fees;
        }

        if(!empty($installmets_total[0]->installment_total)){
            $installmets_total_amount=$installmets_total[0]->installment_total;
        }else{
            $installmets_total_amount=0;
        }

        //echo $installment_amount.'<br>';

        $installment_amount=(double)$installment_amount;

        if($remaining_amount>$installmets_total_amount){

            $remaining_installment_amount=$remaining_amount-$installmets_total_amount;

            // echo $remaining_installment_amount;

            // var_dump($installment_amount);
            // var_dump($remaining_installment_amount);
            // var_dump($installment_amount <= $remaining_installment_amount);

            if($installment_amount<=$remaining_installment_amount){

                // $return['success']='ok';

                return 'ok';


            }else{
                //$return['error']='Intstallment can not be added.';

                return 'Intstallment can not be added.';
            }

        }else if($remaining_amount==$installmets_total_amount){
            //$return['error']='Further installments can not be added.';

            return 'Further installments can not be added.';
        }


    }


    public function onDeleteInstallmentsWithCarryForward(){
        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=post_data('');
                $installment_id=post_data('installment_id');

                $delete_method=post_data('delete_method');

                $installments_data=$this->fm->get_installments(array('installment_id'=>$installment_id));

                if(!empty($installment_data)){

                    $installment_payments=$this->fm->get_payment_details(array('details_payment_type'=>'installment_fees','details_type'=>'new_admission','details_inst_id'=>$inst_id,'details_sess_id'=>$session_id,'details_course_id'=>$course_id));

                    if(empty($installment_payments)){

                        if($delete_method=='delete_permanently'){
                            $deleted=$this->fm->delete_installments(array('installment_id'=>$installment_id));
                            if($deleted){
                                $return['success']='Installment deleted successfully.';
                            }else{
                                $return['error']='Installment not deleted.Try after sometime.';
                            }
                        }else if($delete_method=='carry_forward'){
                            $deleted=$this->fm->update_installments(array('installment_carry_forwarded'=>'yes','installment_carry_forwared_value'=>$installments_data->installment_value),array('installment_id'=>$installments_data->installment_id));

                            //Here needs to check if next installment already exists or not

                            if($deleted){
                                $return['success']='Installment carry forward to next installments successfully.';
                            }else{
                                $return['error']='Installment not carry forward to next installments successfully.Try after sometime.';
                            }
                        }
                        
                    }else{
                        $return['error']='Installment can not be deleted now as payment already active.';
                    } 


                }else{
                    $return['error']='No installments found in the system.';
                }

                json_headers($return);

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

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

                $installment_id=post_data('installment_id');

                $get_installment=$this->fm->get_installments(array('installment_id'=>$installment_id));

                if(!empty($get_installment)){

                    $session_id=$get_installment->installment_sess_id;
                    $course_id=$get_installment->installment_course_id;
                    $student_id=$get_installment->installment_stu_id;
                    $inst_id=$get_installment->installment_inst_id;
                    $session_year=$get_installment->installment_sess_year;

                    $admission_id=$get_installment->installment_admission_id;

                    $get_payment_data=$this->fm->get_payment_details(array('details_sess_year'=>$session_year,'details_course_id'=>$course_id,'details_inst_id'=>$inst_id,'details_stu_id'=>$student_id,'details_type_id'=>$admission_id));

                    if(empty($get_payment_data)){
                        $deleted=$this->fm->delete_installments(array('installment_sess_id'=>$session_id,'installment_course_id'=>$course_id,'installment_stu_id'=>$student_id,'installment_inst_id'=>$inst_id,'installment_sess_year'=>$session_year));

                        if($deleted){
                            $this->fm->_delete_fees_details(array('payment_inst_id'=>$inst_id,'payment_admission_id'=>$admission_id,'payment_sess_id'=>$session_id,'payment_course_id'=>$course_id,'payment_sess_year'=>$session_year));

                            $return['success']='Installment deleted successfully.';
                        }else{
                            $return['error']='Installment can not be deleted now.';
                        }
                    }else{
                        $return['info']='Installment can not be deleted.';
                    }                        

                }else{
                    $return['error']='Installment data not found in the system.';
                }

                json_headers($return);

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


    public function onCreateinstallments_backup(){
        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;

                $admission_payment=$this->input->post('admission_payment');

                $admission_fees_found=array();

                $session_fees_types=array();

                if(!empty($admission_payment)){

                    $stu_id=post_data('stu_id');
                    $inst_id=post_data('inst_id');
                    $admission_id=post_data('admission_id');
                    $session_id=post_data('session_id');
                    $course_id=post_data('course_id');


                    $student_data=$this->um->get_user(array('user_id'=>$stu_id),'student');
                    $course_data=$this->cm->get_course(array('course_id'=>$course_id,'course_inst_id'=>$inst_id));
                    $session_data=$this->sessm->get_session(array('session_id'=>$session_id,'session_inst_id'=>$inst_id));
                    $subject_data='';//$this->cm->get_subject(array('subject_inst_id'=>$inst_id,'subject_course_id'=>$booking_subject),TRUE);
                    $admission_data=$this->adm->get_admission_data(array('admission_id'=>$admission_id));

                    $seat_book_data=$this->adm->get_seat_booking_payment_data(array('booking_inst_id'=>$inst_id,'booking_stu_id'=>$stu_id,'booking_course_id'=>$course_id));

                    if(!empty($seat_book_data)){
                        $seat_book_amount=$seat_book_data->booking_payment;
                    }else{
                        $seat_book_amount=0;
                    }

                    //print_obj($seat_book_amount);die;

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

                    $course_amount=$session_course_data->session_course_fees;

                    $adjusted_amount=($course_amount>$seat_book_amount)?($course_amount-$seat_book_amount):$course_amount;

                    //print_obj($adjusted_amount);die;

                    $installmets_total=$this->fm->_get_installments_total(array('installment_stu_id'=>$stu_id,'installment_inst_id'=>$inst_id,'installment_admission_id'=>$admission_id,'installment_sess_id'=>$session_id,'installment_course_id'=>$course_id));

                    //print_obj($installmets_total[0]->installment_total);die;

                    if(!empty($installmets_total[0]->installment_total)){
                        $installmets_total_amount=$installmets_total[0]->installment_total;
                    }else{
                        $installmets_total_amount=0;
                    }

                    //print_obj($installmets_total_amount);die;

                    if($adjusted_amount>$installmets_total_amount){
                        foreach ($admission_payment as $key => $value) {
                            $session_year=$key;
                            $fees=$value['fees'];
                            $total_fees=clean_data($value['total_fees']);
                            $installments=$value['installments'];


                            if(!empty($fees)){
                                foreach ($fees as $_k => $_v) {
                                   $admission_fees[]=array(
                                    'payment_stu_id'=>$stu_id,
                                    'payment_inst_id'=>$inst_id,
                                    'payment_sess_id'=>$session_id,
                                    'payment_admission_id'=>$admission_id,
                                    'payment_course_id'=>$course_id,
                                    'payment_fees_type_id'=>$_k,
                                    'payment_fees_value'=>clean_data($_v),
                                    'payment_sess_year'=>$session_year,
                                    'created_by'=>$user_id,
                                    'created_at'=>date('Y-m-d')
                                   );
                                }


                                if(!empty($admission_fees)){

                                    $admission_fees_found=$this->fm->_get_fees_details(array('payment_stu_id'=>$stu_id,
                                    'payment_inst_id'=>$inst_id,
                                    'payment_sess_id'=>$session_id,
                                    'payment_admission_id'=>$admission_id,
                                    'payment_course_id'=>$course_id,'payment_sess_year'=>$session_year));

                                    if(empty($admission_fees_found)){
                                        $fees_data_added=$this->fm->_store_fees_details($admission_fees,TRUE);
                                    }                                
                                }


                                if(!empty($installments)){
                                    $i=0;
                                    foreach ($installments as $k => $v) {
                                        $dates=date('Y-m-d',strtotime($v['dates']));
                                        $amount=clean_data($v['amount']);
                                        $amount_fine=clean_data($v['amount_fine']);

                                        $installment_scholarship_discount=post_data('admission_payment_scholarships_fees');
                                        $installment_special_discount=post_data('admission_payment_special_fees');
                                        $installment_scholarship_discount_reason=post_data('admission_payment_scholarships_fees_reason');
                                        $installment_special_discount_reason=post_data('admission_payment_special_fees_reason');

                                        $installment_data[]=array(
                                            'installment_no'=>($i+1),
                                            'installment_unique_code'=>generate_string(4),
                                            'installment_stu_id'=>$stu_id,
                                            'installment_inst_id'=>$inst_id,
                                            'installment_admission_id'=>$admission_id,
                                            'installment_sess_id'=>$session_id,
                                            'installment_sess_year'=>$session_year,
                                            'installment_course_id'=>$course_id,
                                            'installment_value'=>$amount,
                                            'installment_value_penalty'=>$amount_fine,
                                            'installment_scholarship_discount'=>($i==0)?$installment_scholarship_discount:'0.00',
                                            'installment_special_discount'=>($i==0)?$installment_special_discount:'0.00',
                                            'installment_scholarship_discount_reason'=>($i==0)?$installment_scholarship_discount_reason:null,
                                            'installment_special_discount_reason'=>($i==0)?$installment_special_discount_reason:null,
                                            'installment_date'=>$dates,
                                            'created_by'=>$user_id,
                                            'created_at'=>date('Y-m-d')
                                        );

                                        $i++;
                                    }

                                    if(!empty($installment_data)){
                                        $installments_found=$this->fm->get_installments(array('installment_stu_id'=>$stu_id,
                                                'installment_inst_id'=>$inst_id,
                                                'installment_admission_id'=>$admission_id,
                                                'installment_sess_id'=>$session_id,
                                                'installment_course_id'=>$course_id,'installment_sess_year'=>$session_year));


                                        if(!empty($installments_found)){
                                            $this->fm->delete_installments(array('installment_stu_id'=>$stu_id,
                                                'installment_inst_id'=>$inst_id,
                                                'installment_admission_id'=>$admission_id,
                                                'installment_sess_id'=>$session_id,
                                                'installment_course_id'=>$course_id,'installment_sess_year'=>$session_year));
                                        }

                                        $installment_id=$this->fm->store_installments($installment_data,TRUE);
                                    }     
                                }
                            }      
                        }

                        if(isset($fees_data_added) && $fees_data_added){

                            if(!empty($student_data->stu_mid_name)){
                                $student_name=$student_data->stu_first_name.' '.$student_data->stu_mid_name.' '.$student_data->stu_last_name;
                            }else{
                                $student_name=$student_data->stu_first_name.' '.$student_data->stu_last_name; 
                            }

                            
                            $installment_data=$this->fm->__get_installments(array('installment_stu_id'=>$stu_id,
                                                'installment_inst_id'=>$inst_id,
                                                'installment_admission_id'=>$admission_id,
                                                'installment_sess_id'=>$session_id,
                                                'installment_course_id'=>$course_id,'installment_sess_year'=>$session_year),FALSE);

                            //print_obj($installment_data);die;


                            if(!empty($installment_data)){
                                foreach ($installment_data as $k => $v) {

                                    //$fees_type=$this->fm->_get_fees_details(array('fees_type_id'=>$v->));


                                    $_installment_data[]=array(

                                    );
                                }
                            }

                            $session_year_data=$this->sessm->get_session_year(array('year_session_id'=>$session_data->session_id,'year_value'=>$session_year));

                            //Hostel Data
                            if($admission_data->admission_avail_hostel=='yes'){
                                $hostel_fees_data=$this->hm->get_hostel_fees(array('fees_hostel_id'=>$admission_data->admission_hostel_id,'fees_inst_id'=>$inst_id,'fees_session_id'=>$session_id,'fees_course_id'=>$course_id,'fees_session_year_id'=>$session_year_data->year_id),TRUE,FALSE);

                                $hostel_fees=(!empty($hostel_fees_data))?$hostel_fees_data->fees_value:'0';
                                                           
                            }else{
                                $hostel_fees='';
                            }

                            $fees_types=$this->fm->__get_fees_type_data(array('fees_type_inst_id'=>$admission_data->stu_inst_id,'fees_year_id'=>$session_year_data->year_id,'fees_session_id'=>$session_year_data->year_session_id,'fees_course_id'=>$admission_data->admission_course_id,'fees_type_group'=>'Admission'),FALSE,FALSE);

                           //print_obj($fees_types);die;

                            if(!empty($fees_types)){
                                foreach ($fees_types as $key => $value) {
                                    
                                    $session_fees_types[$session_year_data->year_id][]=array(
                                        'fees_type_id'=>$value->fees_type_id,
                                        'fees_type'=>$value->fees_type,
                                        'fees_value'=>$value->fees_value
                                    );
                                }
                            }

                            $installments=$this->fm->get_installments(array('installment_stu_id'=>$admission_data->stu_user_id,
                                                'installment_inst_id'=>$admission_data->admission_inst_id,
                                                'installment_admission_id'=>$admission_data->admission_id,
                                                'installment_sess_id'=>$admission_data->admission_sess_id,
                                                'installment_course_id'=>$admission_data->admission_course_id,'installment_sess_year'=>$session_year_data->year_value),FALSE);

                            if(!empty($session_fees_types[$session_year_data->year_id])){
                                foreach ($session_fees_types[$session_year_data->year_id] as $_k => $_v) {
                                    $fess_value=$this->fm->_get_fees_details(array('payment_stu_id'=>$admission_data->admission_stu_id,'payment_inst_id'=>$admission_data->admission_inst_id,'payment_admission_id'=>$admission_data->admission_id,'payment_sess_id'=>$admission_data->admission_sess_id,'payment_course_id'=>$admission_data->admission_course_id,'payment_fees_type_id'=>$_v['fees_type_id'],'payment_sess_year'=>$session_year_data->year_value));

                                    $_fees_value[$_v['fees_type_id']]=array(
                                        'fees_type_id'=>$_v['fees_type_id'],
                                        'fees_type'=>$_v['fees_type'],
                                        'fees_value'=>(!empty($fess_value))?$fess_value->payment_fees_value:$_v['fees_value']
                                    );
                                }
                            }


                            if(empty($_fees_value)){
                                if(!empty($session_fees_types)){
                                    $ses_fee_type=$session_fees_types[$session_year_data->year_id];
                                }else{
                                    $ses_fee_type=$session_fees_types;
                                }
                            }else{
                                $ses_fee_type=$_fees_value;
                            }

                            if(!empty($installments)){
                                foreach ($installments as $key => $value) {
                                    $full_paid_val[$session_year_data->year_value][]=$value->installment_paid_full;
                                }

                                //print_obj($full_paid_val[$v->year_value]);

                                if(!empty($full_paid_val[$session_year_data->year_value])){
                                    if (in_array('no', $full_paid_val[$session_year_data->year_value], true)) {
                                        $full_paid='no';
                                    }else{
                                        $full_paid='yes';
                                    }
                                }else{
                                    $full_paid='no';
                                }
                            }else{
                                $full_paid='no';
                            }

                            $session_fees_data[]=array(
                                'session_year_id'=>$session_year_data->year_id,
                                'session_year'=>$session_year_data->year_value,
                                'session_fees_types'=>$ses_fee_type,
                                'session_avail_hostel'=>$admission_data->admission_avail_hostel,
                                'session_hostel_fees'=>$hostel_fees,
                                'session_installments'=>$installments,
                                'session_paid'=>$full_paid
                            );



                            $mail_data['inst_id']=$user_id;
                            $mail_data['mail_from']='webmaster';
                            $mail_data['to_email']=$student_data->stu_email;
                            $mail_data['mail_from_name']=$this->data['profile_name'];
                            $mail_data['mail_subject']=ucwords($this->data['profile_name']).' Admission Details';
                            $mail_data['mail_type']='html';
                            $mail_data['mail_custom_type']='html';
                            $mail_data['mail_data']=array(
                                'stu_name'=>ucwords($student_name),
                                'stu_email'=>$student_data->stu_email,
                                'stu_ph'=>$student_data->stu_ph_no,
                                'booking_code'=>$admission_data->admission_code,
                                'booking_session'=>$session_data->session_start_year.'-'.$session_data->session_end_year,
                                'booking_course'=>$course_data->course_name,
                                'booking_subject'=>(!empty($subject_data))?$subject_data->subject_name:'N/A',
                                'booking_amount'=>'0',
                                'installment_data'=>$session_fees_data,
                                'portal_url'=>$this->data['base_url'],
                                'portal_logo'=>$this->data['link_logo'],
                                'portal_inst_name'=>$this->data['profile_name'],
                                'college_email'=>$this->data['userdata']->user_email,
                                'college_phone'=>$this->data['userdata']->user_contact_no,
                                'default_logo_small'=>$this->data['default_logo_small'],
                                'created_at'=>date('d-m-Y')
                            );

                            
                            $mail_data['mail_view']='_pages/mails/vw_admission_installments_mail';

                            $this->onSendMail($mail_data);

                            $mail_data_2=$mail_data;

                            $mail_data_2['to_email']=$this->data['userdata']->user_email;
                            $mail_data_2['mail_subject']='Admission (Code:'.$admission_data->admission_code.') Details [Copy mail]';
                            $this->onSendMail($mail_data_2);                      


                            $return['success']='Data has been updated successfully';
                        }else{
                            $return['error']='Error occurred';
                        }
                    }else{
                        $return['error']='No further installments can be set now.Total course fees ₹'.number_format($course_amount).' has been covered.';
                    }                       

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

                json_headers($return);

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


    public function onGetInstallments(){
        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'];
                $db_group=$userdata->user_code;

                $stu_id=post_data('stu_id');
                $admission_id=post_data('admission_id');
                $inst_id=post_data('inst_id');
                $course_id=post_data('course_id');
                $session_id=post_data('session_id');
                $installment_nos=[];
                $seat_booking_data=[];

                //echo $stu_id;die;

                $sessions=array();
                $installment_data=array();
                $bank_accounts=array();
                $admission_payment_data=array();
                $this->data['bank_accounts'] = array();
                $this->data['cash_balance']=array();
                $this->data['user_has_online_pay_mode']=$this->user_has_online_pay_mode;
                $this->data['user_has_split_pay_mode']=$this->user_has_split_pay_mode;
                $this->data['inst_sem_payment_restriction']=$this->inst_sem_payment_restriction;

                $current_date=date('Y-m-d');

                $admission_data=$this->adm->get_admission_data(array('admission_id'=>$admission_id));

                if($admission_data->admission_seat_booking_converted=='yes'){
                    $seat_booking_data=$this->adm->get_seat_bookings_data(array('booking_id'=>$admission_data->admission_seat_booking_id),TRUE,$db_group);
                    $admissionfees_data=$this->fm->_get_fees_details(array('payment_stu_id'=>$seat_booking_data->booking_stu_id,'payment_inst_id'=>$seat_booking_data->booking_inst_id,'payment_sess_id'=>$seat_booking_data->booking_sess_id,'payment_through_id'=>$seat_booking_data->booking_id,'payment_course_id'=>$seat_booking_data->booking_course_id,'payment_through'=>'seatbooking'));
                }else{
                  $admissionfees_data=$this->fm->_get_fees_details(array('payment_stu_id'=>$stu_id,'payment_inst_id'=>$inst_id,'payment_sess_id'=>$session_id,'payment_admission_id'=>$admission_id,'payment_course_id'=>$course_id,'payment_through'=>'admission'));  
                }                

                if(!empty($admissionfees_data)){
                    $admission_payment_data=$this->fm->get_payment_details(array('details_type'=>'new_admission',
                            'details_payment_type'=>'admission_fees','details_stu_id'=>$admissionfees_data->payment_stu_id,                          'details_type_id'=>$admissionfees_data->payment_admission_id));
                }

                //print_obj($admission_payment_data);die;

                //Admission Fees balance Data
                $admissionfees_balance_data=$this->fm->get_installments_balance(array('inst_id'=>$inst_id,'inst_stu_id'=>$stu_id,'inst_session_id'=>$session_id,'inst_course_id'=>$course_id,'inst_balance_type'=>'_admission_fees_balance'),FALSE);

                if(!empty($admissionfees_balance_data)){
                    foreach($admissionfees_balance_data as $afsbd){
                        //array('details_type'=>'new_admission','details_payment_type'=>'admission_fees','details_stu_id'=>$afsbd->inst_stu_id,'details_sess_id'=>$afsbd->inst_stu_id,'details_course_id'=>$afsbd->inst_course_id,'details_id'=>$afsbd->inst_payment_id)
                        $balance_payment_data=$this->fm->get_payment_details(array('details_id'=>$afsbd->inst_payment_id),$db_group);

                        $afsbd_data[]=array(
                            'total_payable'=>number_format($admissionfees_data->payment_admission_fees_value,2),
                            'paid_amount'=>number_format($afsbd->inst_payment_total,2),
                            'balance_amount'=>number_format($afsbd->inst_payment_balance,2),
                            'payment_date'=>date('d-m-Y',strtotime($afsbd->created_at)),
                            'payment_note'=>$balance_payment_data->details_payment_note
                        );
                    }
                }else{
                    $afsbd_data=[];
                }

                $admissionfees_last_balance_data=$this->fm->_get_installments_balance_last(array('inst_id'=>$inst_id,'inst_stu_id'=>$stu_id,'inst_session_id'=>$session_id,'inst_course_id'=>$course_id,'inst_balance_type'=>'_admission_fees_balance'),$db_group);

                //Admission Fees Split Balance Data
                $admission_fees_split_balance_data=$this->fm->get_installments_balance(array('inst_id'=>$inst_id,'inst_stu_id'=>$stu_id,'inst_session_id'=>$session_id,'inst_course_id'=>$course_id,'inst_installment_id'=>$admission_id,'inst_balance_type'=>'admission_fees_split_balance'),FALSE);


                $admission_fees_split_last_balance_data=$this->fm->_get_installments_balance_last(array('inst_id'=>$inst_id,'inst_stu_id'=>$stu_id,'inst_session_id'=>$session_id,'inst_course_id'=>$course_id,'inst_installment_id'=>$admission_id,'inst_balance_type'=>'admission_fees_split_balance'),$db_group);
                

                $session_years=[];//$this->sessm->get_session_year(array('year_session_inst_id'=>$inst_id,'year_session_id'=>$session_id),FALSE);

                //print_obj($session_years);die;

               

                //print_obj($admission_data);die;

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

                if(!empty($session_data)){

                    $year_value=date('Y',strtotime($admission_data->created_at));

                    $fees_data=$this->fm->get_fees_type_data(array('fees_inst_id'=>$inst_id,'fees_session_id'=>$session_id));

                    //print_obj($fees_data);die;

                    //if(!empty($fees_data)){
                        $installments=$this->fm->get_installments(array('installment_stu_id'=>$stu_id,'installment_inst_id'=>$inst_id,'installment_admission_id'=>$admission_id,'installment_sess_id'=>$session_id,'installment_course_id'=>$course_id),FALSE,'installment_no','ASC',NULL,FALSE);

                        if(!empty($installments)){
                            foreach ($installments as $k => $v) {
                                $fees_details_found=$this->fm->get_fees_details(array('payment_stu_id'=>$stu_id,'payment_inst_id'=>$inst_id,'payment_session_id'=>$session_id,'payment_admission_id'=>$admission_id,'payment_course_id'=>$course_id,'payment_installment_id'=>$v->installment_id));

                                $installment_date=($v->installment_date!='0000-00-00')?date('Y-m-d',strtotime($v->installment_date)):'';

                                if ($installment_date!='' && $current_date > $installment_date) {
                                    $installment_value = $v->installment_value;
                                    $penalty_value = $v->installment_value_penalty;
                                
                                    // Calculate the difference in days and months
                                    $date_diff = date_diff(date_create($installment_date), date_create($current_date));
                                    $days_late = $date_diff->days; // Total days late
                                    $months_late = $date_diff->m + ($date_diff->y * 12); // Total months late
                                
                                    if ($v->installment_value_penalty_applicable == 'one_time') {
                                        // One-time penalty
                                        $total_payable_amount = $installment_value + $penalty_value;
                                        $late_fee_time='';
                                    } else if ($v->installment_value_penalty_applicable == 'per_day') {
                                        // Per-day penalty
                                        $total_payable_amount = $installment_value + ($penalty_value * $days_late);
                                        $late_fee_time=' for '.$days_late.' days';
                                    } else if ($v->installment_value_penalty_applicable == 'per_month') {
                                        // Per-month penalty
                                        $total_payable_amount = $installment_value + ($penalty_value * $months_late);
                                        $late_fee_time=' for '.$months_late.' days';
                                    }
                                
                                    $late_fee_applied = TRUE; // Flag for late fee applied
                                } else {
                                    $total_payable_amount = $v->installment_value; // No late fee if current_date <= installment_date
                                    $late_fee_applied = FALSE;
                                    $late_fee_time='';
                                }
                                

                                //print_obj($fees_details_found);die;

                                $_balance_data=array();

                                if(empty($fees_details_found)){
                                    $payment_recieved='no';
                                    $payment_balance='no';
                                }else if(!empty($fees_details_found)){

                                    //print_obj($fees_details_found);die;
                                    
                                    if($fees_details_found->payment_fees_balance_amount>0){
                                        $payment_recieved='no';
                                        $payment_balance='yes';

                                        $balance_data=$this->fm->get_installments_balance(array('inst_id'=>$inst_id,'inst_stu_id'=>$stu_id,'inst_session_id'=>$session_id,'inst_course_id'=>$course_id,'inst_installment_id'=>$v->installment_id,'balance_split_id'=>null),FALSE);

                                        //print_obj($balance_data);

                                        if(!empty($balance_data)){
                                            foreach ($balance_data as $bkey => $bv) {
                                                $split_balance_data=$this->fm->get_installments_balance(array('balance_split_id'=>$bv->balance_id),FALSE);
                                                $paymentdetails=$this->fm->get_payment_details(array('details_payment_id'=>$bv->inst_payment_id,'details_stu_id'=>$stu_id,'details_inst_id'=>$inst_id,'details_type'=>'new_admission'));

                                                $split_balance_data_count=$this->fm->get_installments_balance_count(array('balance_split_id'=>$bv->balance_id,'inst_balance_paid'=>'no'));

                                                $_balance_data[]=array(
                                                    'balance_id'=>$bv->balance_id,
                                                    'inst_payment_total'=>$bv->inst_payment_total,
                                                    'inst_payment_total_formatted'=>number_format($bv->inst_payment_total,2),
                                                    'inst_payment_balance'=>$bv->inst_payment_balance,
                                                    'inst_payment_balance_formatted'=>number_format($bv->inst_payment_balance,2),
                                                    'created_at'=>date('d-m-Y',strtotime($bv->created_at)),
                                                    'inst_balance_paid'=>$bv->inst_balance_paid,
                                                    'inst_balance_partially_paid'=>$bv->inst_balance_partialy_paid,
                                                    'payment_details_id'=>(!empty($paymentdetails))?encode_data($paymentdetails->details_id):'',
                                                    'payment_note'=>(!empty($paymentdetails))?$paymentdetails->details_payment_note:'',
                                                    'payment_details_payment_type'=>(!empty($paymentdetails))?$paymentdetails->details_payment_type:'',
                                                    'split_balance_data'=>$split_balance_data,
                                                    'split_balance_data_count'=>$split_balance_data_count
                                                );
                                            }
                                        }


                                    }else{
                                        $payment_recieved='no';
                                        $payment_balance='no';
                                    }                                    
                                }                                

                                if(isset($balance_data) && !empty($balance_data[0]->inst_payment_balance) && $balance_data[0]->inst_payment_balance>0){
                                     $order_id=$admission_data->admission_code.'_'.$year_value.'_'.$v->installment_no.'_'.generate_string(4).'_'.$v->installment_unique_code.'_stuinst_bal';
                                }else{
                                    $order_id=$admission_data->admission_code.'_'.$year_value.'_'.$v->installment_no.'_'.generate_string(4).'_'.$v->installment_unique_code.'_stuinst';
                                }

                                $_payment_data=$this->fm->_get_payment_details(array('details_type'=>'new_admission','details_installment_id'=>$v->installment_id),FALSE);

                                $installment_paid_full_of_year[]=$v->installment_paid_full;

                                if($v->installment_date!='0000-00-00'){
                                    $due_date=date('d-m-Y',strtotime($v->installment_date));
                                }else{
                                    $due_date='';
                                }

                                $installment_nos[]=$v->installment_no;

                                $session_year_no=$year_value.'_'.$v->installment_no;

                                $installment_data[$year_value][]=array(
                                    'installment_id'=>$v->installment_id,
                                    'installment_no'=>$v->installment_no,
                                    'installment_session_year_no'=>$session_year_no,
                                    'installment_paid_full'=>$v->installment_paid_full,
                                    'order_id'=>$order_id,
                                    'amount_formated'=>number_format($total_payable_amount,2),
                                    'amount'=>$total_payable_amount,
                                    'late_fee_applied'=>$late_fee_applied,
                                    'late_fee_time'=>$late_fee_time,
                                    'scholarship_discount_amount'=>$v->installment_scholarship_discount,
                                    'special_discount_amount'=>$v->installment_special_discount,
                                    'scholarship_discount_reason'=>$v->installment_scholarship_discount_reason,
                                    'special_discount_reason'=>$v->installment_special_discount_reason,
                                    'date'=>$due_date,
                                    'payment_recieved'=>$payment_recieved,
                                    'payment_balance'=>$payment_balance,
                                    'payment_balance_data'=>$_balance_data,
                                    'payment_data'=>$_payment_data
                                );

                                $session_years[]=$session_year_no;
                            }
                        }

                        //print_obj($installment_data);die;

                        if(!empty($installment_paid_full_of_year) && !in_array('no', $installment_paid_full_of_year)){
                            $session_fully_paid='yes';
                        }else{
                            $session_fully_paid='no';
                        }
                        
                        $max = max($installment_nos); // Find the maximum value in the array

                        //print_obj($installment_data[$year_value]);die;
                        

                        $sessions[]=array(
                            'session_year'=>'',//$year_value,
                            'session_fully_paid'=>$session_fully_paid,                            
                            'session_installments'=>(isset($installment_data[$year_value]))?$installment_data[$year_value]:null,
                        );
                        

                   // }
                }

              

                $missingNumbers = [];

                // Loop through numbers from 1 to the maximum value in the array
                // Generate the full range of numbers from 1 to the maximum value
                $allNumbers = range(1, $max);

                // Remove the numbers in $arr from the full range
                $missingNumbers = array_diff($allNumbers, $installment_nos);

                $this->data['session_missing_installments']=$missingNumbers;

                //die;
                //print_obj($sessions);die;

                $this->data['installments']=$sessions;

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

                $this->data['admissionfees_balance_data']=$afsbd_data;

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

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

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

                $this->data['docs_verified']=$admission_data->admission_docs_completed;

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

                $cash_balance=$this->sm->get_cash_balance(array('balance_status'=>'active'));   

                if($this->ams_access=='yes'){
                    $_bank_accounts = $this->sm->get_banks(array('bank_status' => 'active'),FALSE);
                    if(!empty($_bank_accounts)){
                        foreach ($_bank_accounts as $key => $value) {
                            $bank_accounts[]=array(
                                'bank_id'=>$value->bank_id,
                                'bank_name'=>$value->bank_name,
                                'bank_account_no'=>$value->bank_account_no
                            );                            
                        }
                    }  
                }
                
                $this->data['bank_accounts'] = $bank_accounts;
                $this->data['cash_balance']=$cash_balance;
                
                
                $this->data['inst_in_bill_print']=$this->inst_in_bill_print;   
                
                $this->data['admission_payment_data']=$admission_payment_data;

                $this->data['admission_fees_split_balance_data']=$admission_fees_split_balance_data;
                $this->data['admission_fees_split_last_balance_data']=$admission_fees_split_last_balance_data;

               // print_obj($admission_fees_split_last_balance_data);

                if($admission_data->admission_docs_completed=='no'){
                    $this->data['docs_verification_msg']='After checking all required details for the admission process has been submitted by the student payment can be scheduled';
                    $student_profile_data=$this->um->get_user(array('stu_user_id'=>$admission_data->admission_stu_id),'student');
                    $this->data['verfification_link']=$this->data['base_url'].'/students/register/'.encode_data($student_profile_data->stu_id);
                }

                $this->data['inst_lateral_sem_start']=($this->inst_lateral_course_applicable=='yes')?($this->inst_lateral_sem_start+1):1;

                

                $return['installment_form']=$this->theme->view('_pages/admission/vw_admission_installment_form',$this->data,true);

                json_headers($return);

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


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

                $stu_id=post_data('stu_id');
                $admission_id=post_data('admission_id');
                $inst_id=post_data('inst_id');
                $course_id=post_data('course_id');
                $session_id=post_data('session_id');

                //echo $stu_id;die;

                $sessions=array();
                $installment_data=array();

                $current_date=date('Y-m-d');

                $this->data['banks']=$this->sm->get_banks(array('bank_inst_id'=>$inst_id),FALSE);

                $session_years=$this->sessm->get_session_year(array('year_session_inst_id'=>$inst_id,'year_session_id'=>$session_id),FALSE);

                //print_obj($session_years);die;

                $admission_data=$this->adm->get_admission_data(array('admission_id'=>$admission_id));

                if(!empty($session_years)){                    

                    foreach ($session_years as $key => $value) {

                        $fees_data=$this->fm->get_fees_type_data(array('fees_inst_id'=>$value->year_session_inst_id,'fees_session_id'=>$value->year_session_id,'fees_year_id'=>$value->year_id));

                        if(!empty($fees_data)){
                            $installments[$value->year_value]=$this->fm->get_installments(array('installment_stu_id'=>$stu_id,'installment_inst_id'=>$inst_id,'installment_admission_id'=>$admission_id,'installment_sess_id'=>$session_id,'installment_course_id'=>$course_id,'installment_sess_year'=>$value->year_value),FALSE,'installment_sess_year','ASC',FALSE);

                            //print_obj($installments[$value->year_value]);

                            if(!empty($installments[$value->year_value])){
                                foreach ($installments[$value->year_value] as $k => $v) {
                                    $fees_details_found=$this->fm->get_fees_details(array('payment_stu_id'=>$stu_id,'payment_inst_id'=>$inst_id,'payment_session_id'=>$session_id,'payment_admission_id'=>$admission_id,'payment_course_id'=>$course_id,'payment_installment_id'=>$v->installment_id));


                                    $institute_payments_details=$this->fm->get_payment_details(array(''));

                                    $installment_date=date('Y-m-d',strtotime($v->installment_date));

                                    if($current_date>$installment_date){
                                        $total_payable_amount=$v->installment_value+$v->installment_value_penalty;
                                        $late_fee_applied=TRUE;
                                    }else{
                                        $total_payable_amount=$v->installment_value;
                                        $late_fee_applied=FALSE;
                                    }

                                    //print_obj($fees_details_found);die;

                                    $_balance_data=array();

                                    if(empty($fees_details_found)){
                                        $payment_recieved='no';
                                        $payment_balance='no';
                                    }else if(!empty($fees_details_found)){
                                        
                                        if($fees_details_found->payment_fees_balance_amount>0){
                                            $payment_recieved='no';
                                            $payment_balance='yes';

                                            $balance_data=$this->fm->get_installments_balance(array('inst_id'=>$inst_id,'inst_stu_id'=>$stu_id,'inst_session_id'=>$session_id,'inst_course_id'=>$course_id,'inst_year'=>$value->year_value,'inst_installment_id'=>$v->installment_id),FALSE);

                                            //print_obj($balance_data);die;

                                            if(!empty($balance_data)){
                                                foreach ($balance_data as $bkey => $bv) {
                                                    $paymentdetails=$this->fm->get_payment_details(array('details_payment_id'=>$bv->inst_payment_id,'details_stu_id'=>$stu_id,'details_inst_id'=>$inst_id,'details_type'=>'new_admission'));
                                                    $_balance_data[]=array(
                                                        'inst_payment_total'=>$bv->inst_payment_total,
                                                        'inst_payment_total_formatted'=>number_format($bv->inst_payment_total,2),
                                                        'inst_payment_balance'=>$bv->inst_payment_balance,
                                                        'inst_payment_balance_formatted'=>number_format($bv->inst_payment_balance,2),
                                                        'created_at'=>date('d-m-Y',strtotime($bv->created_at)),
                                                        'inst_balance_paid'=>$bv->inst_balance_paid,
                                                        'payment_details_id'=>(!empty($paymentdetails))?encode_data($paymentdetails->details_id):'',
                                                        'payment_details_payment_type'=>(!empty($paymentdetails))?$paymentdetails->details_payment_type:''
                                                    );
                                                }
                                            }


                                        }else{
                                            $payment_recieved='yes';
                                            $payment_balance='no';
                                        }                                    
                                    }else{

                                    }
                                    

                                    if(isset($balance_data) && ($balance_data[0]->inst_year==$value->year_value) && !empty($balance_data[0]->inst_payment_balance) && $balance_data[0]->inst_payment_balance>0){
                                         $order_id=$admission_data->admission_code.'_'.$value->year_value.'_'.$v->installment_no.'_'.generate_string(4).'_'.$v->installment_unique_code.'_stuinst_bal';
                                    }else{
                                        $order_id=$admission_data->admission_code.'_'.$value->year_value.'_'.$v->installment_no.'_'.generate_string(4).'_'.$v->installment_unique_code.'_stuinst';
                                    }

                                    $_payment_data=$this->fm->_get_payment_details(array('details_type'=>'new_admission','details_installment_id'=>$v->installment_id),FALSE);

                                    $installment_paid_full_of_year[]=$v->installment_paid_full;

                                    $installment_data[$value->year_value][]=array(
                                        'installment_id'=>$v->installment_id,
                                        'installment_paid_full'=>$v->installment_paid_full,
                                        'order_id'=>$order_id,
                                        'amount_formated'=>number_format($total_payable_amount,2),
                                        'amount'=>$total_payable_amount,
                                        'late_fee_applied'=>$late_fee_applied,
                                        'scholarship_discount_amount'=>$v->installment_scholarship_discount,
                                        'special_discount_amount'=>$v->installment_special_discount,
                                        'scholarship_discount_reason'=>$v->installment_scholarship_discount_reason,
                                        'special_discount_reason'=>$v->installment_special_discount_reason,
                                        'date'=>date('d-m-Y',strtotime($v->installment_date)),
                                        'payment_recieved'=>$payment_recieved,
                                        'payment_balance'=>$payment_balance,
                                        'payment_balance_data'=>$_balance_data,
                                        'payment_data'=>$_payment_data
                                    );
                                }
                            }

                            if(!empty($installment_paid_full_of_year) && !in_array('no', $installment_paid_full_of_year)){
                                $session_fully_paid='yes';
                            }else{
                                $session_fully_paid='no';
                            }

                            $sessions[]=array(
                                'session_year'=>$value->year_value,
                                'session_fully_paid'=>$session_fully_paid,
                                'session_installments'=>(isset($installment_data[$value->year_value]))?$installment_data[$value->year_value]:null,
                            );
                        }

                            
                    }                    
                }

                //die;

                //print_obj($sessions);die;

                $this->data['installments']=$sessions;

                $this->data['docs_verified']=$admission_data->admission_docs_completed;

                if($admission_data->admission_docs_completed=='no'){
                    $this->data['docs_verification_msg']='After checking all required details for the admission process has been submitted by the student payment can be scheduled';
                    $student_profile_data=$this->um->get_user(array('stu_user_id'=>$admission_data->admission_stu_id),'student');
                    $this->data['verfification_link']=$this->data['base_url'].'/students/register/'.encode_data($student_profile_data->stu_id);
                }

                $return['installment_form']=$this->theme->view('_pages/admission/vw_admission_installment_form',$this->data,true);

                json_headers($return);

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


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

                $install_ment_id=post_data('installment_id');

                $installment_id=decode_data($install_ment_id);

                $installment_data=$this->fm->get_installment(array('installment_id'=>$installment_id));
                $_installment_data=array();

                //print_obj($installment_data);die;


                if(!empty($installment_data)){

                    $_get_fees_details_last=$this->fm->_get_fees_details_last(array('payment_stu_id'=>$this->data['userdata']->user_id,'payment_inst_id'=>$this->data['userdata']->stu_inst_id,'payment_installment_id'=>$installment_id));

                    if(!empty($_get_fees_details_last)){
                         $balance=$this->fm->get_installments_balance_last(array('inst_installment_id'=>$installment_data->installment_id,'inst_stu_id'=>$installment_data->installment_stu_id,'inst_session_id'=>$installment_data->installment_sess_id,'inst_payment_id'=>$_get_fees_details_last->payment_fees_details_id));
                    }else{
                         $balance=$this->fm->get_installments_balance_last(array('inst_installment_id'=>$installment_data->installment_id,'inst_stu_id'=>$installment_data->installment_stu_id,'inst_session_id'=>$installment_data->installment_sess_id));
                    }

                   

                   //print_obj($balance);die;


                    $date_now = date('Y-m-d');//new DateTime();
                    $installment_date    = date('Y-m-d',strtotime($installment_data->installment_date));//new DateTime($installment_data->installment_date);

                   // print_obj($date_now);
                    //print_obj($installment_date);

                    if(!empty($balance->last_balance) && $balance->last_balance>0){
                        if($date_now>$installment_date){
                            $penalty_applied='TRUE';                            
                            $last_paid_amount=($installment_data->installment_value+$installment_data->installment_value_penalty)-$balance->last_balance;
                            $total_due=($installment_data->installment_value+$installment_data->installment_value_penalty)-$last_paid_amount;
                        }else{
                            $penalty_applied='FALSE';                         
                            $last_paid_amount=$installment_data->installment_value-$balance->last_balance;
                            // if($last_paid_amount>$balance->last_balance){
                            //     $total_due=$last_paid_amount-$balance->last_balance;
                            // }else{
                            //     $total_due=$balance->last_balance-$last_paid_amount;
                            // }

                            $total_due=$balance->last_balance;
                            
                        }
                       
                    }else{
                        if($date_now>$installment_date){
                            $penalty_applied='TRUE';
                            $total_due=$installment_data->installment_value+$installment_data->installment_value_penalty;  
                            $last_paid_amount='0';
                        }else if($date_now==$installment_date){
                            $penalty_applied='FALSE';
                            $total_due=$installment_data->installment_value;
                            $last_paid_amount='0';
                        }else{
                            $penalty_applied='FALSE';
                            $total_due=$installment_data->installment_value;
                            $last_paid_amount='0';
                        }
                    }


                    $_installment_data=array(
                        'installment_session'=>$installment_data->session_start_year.'-'.$installment_data->session_end_year,
                        'installment_course'=>$installment_data->course_name,
                        'installment_subject'=>(!empty($installment_data->subject_name))?$installment_data->subject_name:'N/A',
                        'installment_amount'=>$installment_data->installment_value,
                        'installment_last_paid_amount'=>$last_paid_amount,
                        'installment_total_amount'=>$total_due,
                        'installment_penalty'=>$installment_data->installment_value_penalty,
                        'installment_date'=>date('d-m-Y',strtotime($installment_data->installment_date)),
                        'installment_scholarship_discount'=>$installment_data->installment_scholarship_discount,
                        'installment_special_discount'=>$installment_data->installment_special_discount,
                        'installment_penalty_applied'=>$penalty_applied
                    );

                    //print_obj($_installment_data);die;
                }

                return json_headers($_installment_data);


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


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

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


    public function onPayInstallments(){
        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;

                if($userdata->user_type=='institute_branch'){
                    $branch_data=$this->um->get_user(array('user_id'=>$user_id),'institute_branch');
                    $parent_inst_id=$branch_data->user_id;
                }else{
                    $parent_inst_id=$user_id;
                }

                $stu_id=post_data('stu_id');
                $inst_id=post_data('inst_id');
                $admission_id=post_data('admission_id');
                $course_id=post_data('course_id');
                $session_id=post_data('session_id');
                $installment_id=post_data('installment_id');
                $session_year=post_data('pay_session_year');
                $total_amount=post_data('pay_amount');
                $paid_amount=post_data('pay_amount_paid');

                $scholarship_amount=post_data('pay_scholarship_amount');
                $special_amount=post_data('pay_special_amount');                
                $balance=post_data('pay_balance_amount');
                $final_amount=post_data('pay_final_amount');
                $pay_special_remarks=post_data('pay_special_remarks');
                $pay_special_amount_reason=post_data('pay_special_amount_reason');

                $pay_mode=post_data('pay_mode');
                $bank_name=post_data('pay_bank_name');
                $cheque_no=post_data('pay_bank_cheque_no');
                $deposite_bank=post_data('pay_deposite_bank');
                $pay_phonepe_utr=post_data('pay_phonepe_utr');
                $pay_phonepe_utr_txn=post_data('pay_phonepe_utr_txn');
                $order_id=post_data('payment_order_id');
                $pay_note=post_data('pay_note');
                $pay_auto_credit_account=post_data('pay_auto_credit_account');

                $pay_date=post_data('pay_date');

                $current_date=date('Y-m-d');

                if(!empty($order_id) && !empty($stu_id)){

                    $_order_id=explode('_', $order_id);

                    $admission_code=$_order_id[0];

                    $installemnt_unique_code=$_order_id[4];
                    $utype=(isset($_order_id[5]))?$_order_id[5]:'';
                    $payment_type=(isset($_order_id[6]))?$_order_id[6]:'normal_installment';

                    $admission_data=$this->adm->get_admission_data(array('admission_code'=>$admission_code));

                    //print_obj($admission_data);die;

                    if(!empty($admission_data)){

                        $installment_data=$this->fm->get_installment(array('installment_id'=>$installment_id,'installment_admission_id'=>$admission_id,'installment_stu_id'=>$stu_id,'installment_inst_id'=>$inst_id));

                        //print_obj($installment_data);die;

                        if($installment_data){
                            $installment_value=$installment_data->installment_value;
                            $installment_value_penalty=$installment_data->installment_value_penalty;
                            $installment_value_penalty_applicable=$installment_data->installment_value_penalty_applicable;
                            $installment_unique_code=$installment_data->installment_unique_code;
                            $due_date=$installment_data->installment_date;

                            if($payment_type==='normal_installment'){
                                if(!empty($scholarship_amount) && !empty($special_amount) && (is_double($special_amount) || is_numeric($special_amount)) && (is_double($scholarship_amount) || is_numeric($scholarship_amount))){
                                    $discount_amount=$scholarship_amount+$special_amount;
                                }else{
                                    $discount_amount='0';
                                }
                                
                            }else if($payment_type==='bal'){
                                $discount_amount='0';
                            }

                            //echo $discount_amount;die;

                            $penalty_value=0;
                            $penalty_value_type=0;

                            if ($current_date > $due_date) {
                                if(!empty($installment_value) && !empty($installment_value_penalty) && ($installment_value>0 && $installment_value_penalty>0)){

                                    //echo 'hi';die;
                                    // Calculate the difference in days and months
                                    $date_diff = date_diff(date_create($due_date), date_create($current_date));
                                    $days_late = $date_diff->days; // Total days late
                                    $months_late = $date_diff->m + ($date_diff->y * 12); // Total months late
                                
                                    if ($installment_value_penalty_applicable == 'one_time') {
                                        // One-time penalty
                                        $amount_payable = $installment_value + $installment_value_penalty;
                                        $penalty_value=$installment_value_penalty;
                                        $penalty_value_type=0;
                                    } else if ($installment_value_penalty_applicable == 'per_day') {
                                        // Per-day penalty
                                        $amount_payable = $installment_value + ($installment_value_penalty * $days_late);
                                        $penalty_value=$installment_value_penalty * $days_late;
                                        $penalty_value_type=$days_late;
                                    } else if ($installment_value_penalty_applicable == 'per_month') {
                                        // Per-month penalty
                                        $amount_payable = $installment_value + ($installment_value_penalty * $months_late);
                                        $penalty_value=$installment_value_penalty * $months_late;
                                        $penalty_value_type=$months_late;
                                    }
                                
                                    $penalty_applied='yes'; // Flag for late fee applied
                                }else{

                                    //echo 'hi2';die;
                                    $amount_payable = $installment_value; // No late fee if current_date <= installment_date
                                    $penalty_applied='no';
                                }
                            
                                
                            } else {
                                //echo 'hi3';die;
                                $amount_payable = $installment_value; // No late fee if current_date <= installment_date
                                $penalty_applied='no';
                            }

                            

                            //echo $amount_payable;die;

                            if($discount_amount<=$amount_payable){
                                $total_amount_pyable=$amount_payable-$discount_amount;

                                if($total_amount_pyable>0 && ($paid_amount<=$total_amount_pyable && $paid_amount>0)){
                                    //Check any balance available for current installment
                                    $any_balance=$this->fm->_get_installments_balance_last(array('inst_id'=>$inst_id,'inst_stu_id'=>$stu_id,'inst_course_id'=>$course_id,'inst_session_id'=>$session_id,'inst_installment_id'=>$installment_id,'balance_split_id'=>NULL,'inst_balance_paid'=>'no'));

                                    //print_obj($any_balance);

                                    if(!empty($any_balance)){
                                        $balance_amount=$any_balance->inst_payment_balance-$paid_amount;
                                    }else{
                                        $balance_amount=$total_amount_pyable-$paid_amount;
                                    }

                                    if($payment_type==='normal_installment'){
                                        if($scholarship_amount>0 && $special_amount>0){
                                            if($pay_special_remarks!='' && $pay_special_amount_reason!=''){
                                                $remarks_added='yes';
                                                $remarks_special_added='yes';
                                            }else{
                                                $remarks_added='no';
                                                $remarks_special_added='no';
                                            }
                                        }else if($scholarship_amount>0 && $special_amount==0){
                                            if($pay_special_remarks!='' && $pay_special_amount_reason==''){
                                                $remarks_added='yes';
                                                $remarks_special_added='yes';
                                            }else{
                                                $remarks_added='no';
                                                $remarks_special_added='no';
                                            }
                                        }else if($scholarship_amount==0 && $special_amount>0){
                                            if($pay_special_remarks=='' && $pay_special_amount_reason!=''){
                                                $remarks_added='yes';
                                                $remarks_special_added='yes';
                                            }else{
                                                $remarks_added='no';
                                                $remarks_special_added='no';
                                            }
                                        }else if($scholarship_amount==0 && $special_amount==0){
                                            $remarks_added='yes';
                                            $remarks_special_added='yes';
                                        }
                                    }else if($payment_type==='bal'){
                                        $remarks_added='yes';
                                        $remarks_special_added='yes';
                                    }

                                    if($balance_amount!=$paid_amount){
                                        $inst_balance_partialy_paid='yes';
                                    }


                                    $payment_data_param=array(
                                        'installment_unique_code'=>$installment_unique_code,
                                        'installment_order_id'=>$order_id,
                                        'installment_data'=>$installment_data,
                                        'scholarship_amount'=>$scholarship_amount,
                                        'special_amount'=>$special_amount,
                                        'penalty_applied'=>$penalty_applied,
                                        'total_payable_amount'=>$total_amount_pyable,
                                        'paid_amount'=>$paid_amount,
                                        'balance_amount'=>$balance_amount,
                                        'phonepe_utr_no'=>$pay_phonepe_utr,
                                        'phonepeutr_txn'=>$pay_phonepe_utr_txn,
                                        'payment_mode'=>$pay_mode,
                                        'payment_platform'=>'',
                                        'pay_date'=>$pay_date,
                                        'payment_note'=>$pay_note,
                                        'pay_auto_credit_account'=>$pay_auto_credit_account,
                                        'msg'=>'success',
                                        'scholarship_reason'=>$pay_special_remarks,
                                        'special_discount_reason'=>$pay_special_amount_reason
                                    );

                                    if($penalty_applied=='yes'){
                                        $penalty_data_found=$this->fm->get_late_fees(array('late_fee_inst_id'=>$this->inst_id,'late_fee_stu_id'=>$stu_id,'late_fee_course_id'=>$course_id,'late_fee_session_id'=>$session_id,'late_fee_admission_id'=>$admission_id,'late_fee_installment_id'=>$installment_id));
        
                                        if(empty($penalty_data_found)){
                                            $penalty_data=array(
                                                'late_fee_inst_id'=>$this->inst_id,
                                                'late_fee_inst_parent_id'=>$this->inst_parent_id,
                                                'late_fee_stu_id'=>$stu_id,
                                                'late_fee_course_id'=>$course_id,
                                                'late_fee_session_id'=>$session_id,
                                                'late_fee_admission_id'=>$admission_id,
                                                'late_fee_installment_id'=>$installment_id,
                                                'late_fee_type_main'=>'admission_late_fee',
                                                'late_fee_type'=>$installment_value_penalty_applicable,
                                                'late_fee_type_value'=>$penalty_value_type,
                                                'late_fee'=>$penalty_value,
                                                'created_at'=>date('Y-m-d H:i:s')
                                            );
        
                                            $this->fm->store_late_fees($penalty_data);
                                        } 
                                    }

                                    //print_obj($payment_data_param);die;

                                    if($remarks_added=='yes' && $remarks_special_added=='yes'){
                                        
                                        if($pay_mode==='cash'){

                                            $response=$this->get_payment($payment_data_param);

                                            //print_obj($response);die;

                                            if($response=='error'){
                                                $return['error']='There was an internal error occurre.Try after some time.';
                                            }else{
                                                $return['success']='Payment has been recieved.';
                                                $return['redirect']=$response;
                                            }

                                        }else if($pay_mode==='online_before_software'){

                                            $response=$this->get_payment($payment_data_param);

                                            if($response=='error'){
                                                $return['error']='There was an internal error occurr.Try after some time.';
                                            }else{
                                                $return['success']='Payment has been recieved.';
                                                $return['redirect']=$response;
                                            }

                                        }
                                        else if($pay_mode==='cheque'){

                                            if($bank_name!='' && $cheque_no!='' && ($deposite_bank!='' && $deposite_bank>0)){

                                                if($userdata->user_type=='institute'){
                                                    $parent_inst_id=$this->data['userdata']->user_id;
                                                    $storage_dir='institutes/'.$userdata->user_code.'/payments/'.date('Y');
                                                }else if($userdata->user_type=='institute_branch'){
                                                    $parent_inst_id=$this->data['userdata']->branch_parent_inst_id;
                                                    $inst_data=$this->um->get_institute(array('user_pk_id'=>$parent_inst_id));
                                                    $storage_dir='institutes/'.$inst_data->user_code.'/payments/'.date('Y');
                                                }

                                                //echo 'cheque_scan_frontcopy_file:'.$_FILES['cheque_scan_frontcopy_file']['name'].'<br>';
                                                //echo 'cheque_scan_backcopy_file:'.$_FILES['cheque_scans_backcopy_file']['name'];die;

                                                //if((isset($_FILES['cheque_scan_frontcopy_file']) && $_FILES['cheque_scan_frontcopy_file']['name']!=='') && (isset($_FILES['cheque_scans_backcopy_file']) && $_FILES['cheque_scans_backcopy_file']['name']!='')){

                                                    if(isset($_FILES['cheque_scan_frontcopy_file']) && $_FILES['cheque_scan_frontcopy_file']['name']!==''){

                                                        $cheque_scan_frontcopy_file=array(
                                                            'file_size'=>'5',
                                                            'file_name'=>'cheque_scan_frontcopy_file',
                                                            'file_types'=>'png,jpg,jpeg',
                                                            'file_storage_type'=>'cheque_scan_frontcopy_file',
                                                            'file_storage_dir'=>$storage_dir,
                                                            'file_storage_type_id'=>$stu_id,
                                                            'file_parent_id'=>$inst_id,
                                                            'file_compress'=>false,
                                                            'file_operation_type'=>'new',
                                                            'file_uploaded_by'=>$userdata->user_id
                                                        );

                                                        $cheque_scan_frontcopy_file_id=$this->onUploadFiles($cheque_scan_frontcopy_file);
                                                    }


                                                    if(isset($_FILES['cheque_scans_backcopy_file']) && $_FILES['cheque_scans_backcopy_file']['name']!=''){

                                                        $cheque_scan_backcopy_file=array(
                                                            'file_size'=>'5',
                                                            'file_name'=>'cheque_scans_backcopy_file',
                                                            'file_types'=>'png,jpg,jpeg',
                                                            'file_storage_type'=>'cheque_scan_backcopy_file',
                                                            'file_storage_dir'=>$storage_dir,
                                                            'file_storage_type_id'=>$stu_id,
                                                            'file_parent_id'=>$inst_id,
                                                            'file_compress'=>false,
                                                            'file_operation_type'=>'new',
                                                            'file_uploaded_by'=>$userdata->user_id
                                                        );

                                                        $cheque_scan_backcopy_file_id=$this->onUploadFiles($cheque_scan_backcopy_file);
                                                    }


                                                    if(isset($cheque_scan_frontcopy_file_id) && isset($cheque_scan_backcopy_file_id)){

                                                        if(is_numeric($cheque_scan_frontcopy_file_id) && is_numeric($cheque_scan_backcopy_file_id)){
                                                            $booking_payment_checq_files_ids=$cheque_scan_frontcopy_file_id.','.$cheque_scan_backcopy_file_id;
                                                        }else{
                                                            $booking_payment_checq_files_ids='';
                                                        }

                                                    }else{
                                                        $booking_payment_checq_files_ids='';
                                                    } 

                                                    $data_param=array_merge($payment_data_param,array('cheque_no'=>$cheque_no,'chque_bank_name'=>$bank_name,'cheque_deposite_bank'=>$deposite_bank,'booking_payment_checq_files_ids'=>$booking_payment_checq_files_ids));

                                                    $response=$this->get_payment($data_param);

                                                    if($response=='error'){
                                                        $return['error']='There was an internal error occurre.Try after some time.';
                                                    }else{
                                                        $return['success']='Payment has been recieved.';
                                                        $return['redirect']=$response;
                                                    }
                                                   
                                                    
                                                // }else{
                                                //     $return['error']='Cheque related details needs to be given.';
                                                // }

                                            }else{
                                                $return['error']='Cheque related details needs to be given.';
                                            }

                                        }else if($pay_mode==='phonepeutr'){
                                            $response=$this->get_payment($payment_data_param);
                                            if($this->inst_phonepay_txn_required=='yes'){
                                                if(!empty($pay_phonepe_utr) && !empty($pay_phonepe_utr_txn)){                                                    
                                                    if($response=='error'){
                                                        $return['error']='There was an internal error occurre.Try after some time.';
                                                    }else{
                                                        $return['success']='Payment has been recieved.';
                                                        $return['redirect']=$response;
                                                    }
                                                }else{
                                                    $return['error']='PhonePe UTR & TXN no required';
                                                }
                                            }else{
                                                $return['success']='Payment has been recieved.';
                                                $return['redirect']=$response;
                                            }
                                        }else if($pay_mode=='online'){
                                            $payment_gateway=post_data('payment_gateway');
                                            $payment_session_data=array('payment_gateway'=>$payment_gateway);
                                            session_set_userdata($payment_session_data);
                                        }

                                    }else if($remarks_added=='no' && $remarks_special_added=='no'){
                                        $return['error']='Scolarship remarks and Special discount remarks are required.';
                                    }else if($remarks_added=='no' && $remarks_special_added=='yes'){
                                        $return['error']='Scolarship remarks is required.';
                                    }else if($remarks_added=='yes' && $remarks_special_added=='no'){
                                        $return['error']='Special discount remarks is required.';
                                    }    

                                }else{
                                    $return['error']='Payment can not be proceessed.Check amounts 1.';
                                }
                            }else{
                                $return['error']='Payment can not be proceessed.Check amounts 2.';
                            }
                        }else{
                            $return['error']=ucwords($this->inst_in_bill_print).' data not found.Payment can not be proceessed now.';
                        }

                    }else if(empty($admission_data)){
                        $return['error']='No data found.Payment can not be proceessed now.';
                    }

                }else{
                    $return['error']='Data manipulation not permitted.';
                }

                //print_obj($installment_data);die;

                        

                json_headers($return);

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


    public function get_payment($param){

        //print_obj($param);die;

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

        if($userdata->user_type=='institute'){
            $parent_inst_id=$userdata->user_id;
        }else if($userdata->user_type=='institute_branch'){
            $parent_inst_id=$userdata->branch_parent_inst_id;
        }

        $booking_data=$param['installment_data'];

        $booking_type='new_admission';
        $user_id=$booking_data->installment_inst_id;        
        $stu_id=$booking_data->installment_stu_id;
        $emp_id=decode_data(session_userdata('admin_id'));

        //echo $param['payment_method'];die;

        if($userdata->user_type=='institute'){
            $inst_id=$this->inst_id;
            $inst_type=$this->inst_type;
            $student_data=$this->um->get_user(array('user_id'=>$stu_id),'student');
            $institute_data=$this->um->get_user(array('user_id'=>$inst_id),'institute');
            $institute_profile_name=$institute_data->user_profile_name;
            $institute_email=$institute_data->user_email;
            $institute_phone_no=$institute_data->user_contact_no;
        }else if($userdata->user_type=='institute_branch'){
            $inst_id=$this->inst_id;
            $inst_type=$this->inst_type;
            $student_data=$this->um->get_user(array('user_id'=>$stu_id),'student');
            $institute_data=$this->um->get_user(array('user_id'=>$inst_id),'institute_branch');
            $institute_profile_name=$institute_data->branch_name;
            $institute_email=$institute_data->branch_email;
            $institute_phone_no=$institute_data->branch_contact_no;
        }
        
        $admission_id=$booking_data->installment_admission_id;
        $session_id=$booking_data->installment_sess_id;
        $course_id=$booking_data->installment_course_id;
        $subject_id='0';
        $session_year=$booking_data->installment_sess_year;
        
        $booking_id=$booking_data->installment_admission_id;
        $booking_inst_id=$booking_data->installment_inst_id;
        $booking_inst_parent_id=$parent_inst_id;

        $admission_data=$this->adm->get_admission_data(array('admission_id'=>$booking_data->installment_admission_id));

        //print_obj($admission_data);die;

        $installment_id=$booking_data->installment_id;
        $installment_order_id=$param['installment_order_id'];
        $installment_no=$booking_data->installment_no;

        $installment_value=$booking_data->installment_value;
        $installment_value_penalty=$booking_data->installment_value_penalty;
        $installment_unique_code=$booking_data->installment_unique_code;
        $due_date=$booking_data->installment_date;
        
        $paid_amount=$param['paid_amount'];

        $total_payable_amount=$param['total_payable_amount'];

        $split_balance_last_data=$this->fm->_get_installments_balance_last(array('inst_installment_id'=>$installment_id,'inst_stu_id'=>$stu_id,'inst_session_id'=>$session_id,'inst_course_id'=>$course_id,'inst_id'=>$inst_id,'inst_balance_type'=>'admission_split_balance'));

        //print_obj($split_balance_last_data);die;

        //echo $param['balance_amount'];die;
        
        if($total_payable_amount>0 && $total_payable_amount>$paid_amount){

            if(isset($param['balance_amount'])){
                $balance=$param['balance_amount'];
            }else{
                $balance=($total_payable_amount-$paid_amount);
            }
            
        }else{
            $balance='0';//$param['balance_amount'];
        }

        //echo $param['paid_split_amount'];die;

        //echo $param['paid_split_amount'];die;

        if(isset($param['paid_split_amount'])){
            $paid_split_amount=$param['paid_split_amount'];

            //echo $paid_split_amount;

            if(!empty($split_balance_last_data) && $split_balance_last_data->inst_payment_balance>0){
                $split_balance=($split_balance_last_data->inst_payment_balance-$paid_split_amount);
            }else{
                if($paid_amount>0 && $paid_amount>$paid_split_amount){
                    $split_balance=($paid_amount-$paid_split_amount);
                }else{
                    $split_balance='0';
                }
            }
        }else{
            $paid_split_amount=0;
            $split_balance=0;
        }

        //echo $split_balance;die;

        $penalty_applied=$param['penalty_applied'];

        $payment_mode=$param['payment_mode'];
        $payment_platform=$param['payment_platform'];

        $pay_date=$param['pay_date'];

        $txn_amount=$paid_amount;
        $txn_split_amount=$paid_split_amount;

        //echo $payment_mode;die;

        //echo $pay_date;die;

        //ADM2022072825_2022_1_K2QD_C17U_stuinst

        //echo $installment_order_id;

        $_order_id=explode('_', $installment_order_id);

        //print_obj($_order_id);die;

        $_fisrt_sec_order_id=$_order_id[0];

        $installemnt_unique_code=$_order_id[4];
        $utype=(isset($_order_id[5]))?$_order_id[5]:'';
        $paytype=(isset($_order_id[6]))?$_order_id[6]:'normal_installment';

        if(isset($param['split_no'])){
            $paytype='split';
        }

        //echo $paytype;die;

        if($paytype==='normal_installment'){
            //$details_type_text='Admission ['.$admission_data->admission_code.'] Payment Details';
            $details_type_text='Admission Payment Details';
        }else if($paytype==='bal'){
            //$details_type_text='Admission ['.$admission_data->admission_code.'] Balance Payment Details';
            $details_type_text='Admission Balance Payment Details';
        }else if($paytype==='split'){
            // $details_type_text='Admission ['.$admission_data->admission_code.'] Split Payment Details';
            $details_type_text='Admission Split Payment Details';
        }

        if($paytype==='normal_installment'){

            if(!empty($param['scholarship_amount']) && !empty($param['special_amount']) && (is_numeric($param['scholarship_amount']) || is_double($param['scholarship_amount'])) && (is_numeric($param['special_amount']) || is_double($param['special_amount']))){
                $discount_amount=$param['scholarship_amount']+$param['special_amount'];
            }else{
                $discount_amount=0;
            }
            
        }else if($paytype==='bal'){
            $discount_amount=0;
        }else if($paytype==='split'){
            $discount_amount=$param['scholarship_amount']+$param['special_amount'];
        }
        else {
            $discount_amount=0;
        }

        //print_obj($booking_data);die;

        $course_data=$this->cm->get_course(array('course_id'=>$course_id));
        $session_data=$this->sessm->get_session(array('session_id'=>$session_id));

        

        //print_obj($institute_data);die;

        if($payment_mode==='cash'){
            $txn_id=ge_rand_code_v1('TXN'.$inst_id.$user_id.$booking_id.$admission_id.$installment_no);//'T'.date('YmdHis').$inst_id.$user_id.$booking_id.$admission_id.$installment_no;
            $payment_platform='cash';
            $details_status='success';
            $details_msg='Cash Recieved';
        }else if($payment_mode==='online_before_software'){
            $txn_id=ge_rand_code_v1('TXN'.$inst_id.$user_id.$booking_id.$admission_id.$installment_no);//'T'.date('YmdHis').$inst_id.$user_id.$booking_id.$admission_id.$installment_no;
            $payment_platform='online_before_software';
            $details_status='success';
            $details_msg='Online Payment was Recieved before the software installation';
        }else if($payment_mode==='cheque'){
            $txn_id=ge_rand_code_v1('TXN'.$inst_id.$user_id.$booking_id.$admission_id.$installment_no);//'T'.date('YmdHis').$inst_id.$user_id.$booking_id.$admission_id.$installment_no;
            $payment_platform='cheque';
            $cheque_no=$param['cheque_no'];
            $cheque_bank_name=$param['chque_bank_name'];
            $cheque_deposite_bank=$param['cheque_deposite_bank'];
            $details_status='waiting';
            $details_msg='Cheque Recieved';
        }else if($payment_mode==='phonepeutr'){
            $utrexists=TRUE;
            $payment_platform='phonepeutr';
            $txn_id=$param['phonepeutr_txn'];//'T'.date('YmdHis').$inst_id.$user_id.$booking_id.$admission_id.$installment_no;
            $pay_phonepe_utr=$param['phonepe_utr_no'];
            $details_status='waiting';
            $details_msg='Phonepe Recieved';         
        }else if($payment_mode==='online'){
            if($payment_platform==='razorpay'){
                $txn_id='T'.date('YmdHis').$inst_id.$user_id.$booking_id.$admission_id.$installment_no;
                $payment_platform='razorpay';
            }else if($payment_platform==='paytm'){
                $txn_id=$param['txn_id'];
                $payment_platform='paytm';
               // $temp_payment_data=$this->fm->get_temp_payment(array('temp_checksum'=>$param['order_id']));
            }
        }else if($payment_mode==='cash_split'){   
            $txn_id=ge_rand_code_v1('TXN'.$inst_id.$user_id.$booking_id.$admission_id.$installment_no.$param['split_no']);//'T'.date('YmdHis').$inst_id.$user_id.$booking_id.$admission_id.$installment_no.$param['split_no'];
            $payment_platform='cash';
            $details_status='success';
            $details_msg=$param['split_no'].' Recieved';
        }else if($payment_mode==='online_before_software_split'){            
            $txn_id=ge_rand_code_v1('TXN'.$inst_id.$user_id.$booking_id.$admission_id.$installment_no.$param['split_no']);//'T'.date('YmdHis').$inst_id.$user_id.$booking_id.$admission_id.$installment_no.$param['split_no'];
            $payment_platform=$param['payment_platform'];
            $details_status='success';
            $details_msg=$param['split_no'].' Recieved';
        }else if($payment_mode==='phonepeutr_split'){
            $utrexists=TRUE;
            $payment_platform='phonepeutr';
            $txn_id=(!empty($param['phonepeutr_txn']))?$param['phonepeutr_txn']:'T'.date('YmdHis').$inst_id.$user_id.$booking_id.$admission_id.$installment_no;
            $pay_phonepe_utr=(!empty($param['phonepe_utr_no']))?$param['phonepe_utr_no']:'';
            $details_status='success';
            $details_msg='Phonepe Recieved';         
        }
        

        if(in_array($payment_mode,array('cash','online_before_software','cheque','phonepeutr','online'))){
            if(isset($_order_id[6]) && $_order_id[6]=='bal'){
                $details_payment_type='installment_balance_fees';
            }else{
                $details_payment_type='installment_fees';
            }
        }else{
            $details_payment_type='installment_split_fees';
            if(isset($_order_id[6]) && $_order_id[6]=='bal'){
                $details_payment_type='installment_split_balance_fees';
            }else{
                $details_payment_type='installment_split_fees';
            }
        }

        //echo $details_payment_type;die;

        //$redirect_url=$this->data['base_url'].'/admission/payments/'.encode_data($booking_id).'#'.$txn_id;

        if($utype=='stu'){
            $redirect_url=$this->data['base_url'].'/account/installments';
        }else if($utype=='stuinst'){
            $redirect_url=$this->data['base_url'].'/admission/payments/'.encode_data($booking_id).'?p='.$installment_order_id; 
        }

        //echo $redirect_url;die;


        $updated=$this->adm->update_admission_data(array('updated_at'=>date('Y-m-d'),'updated_by'=>$user_id),array('admission_id'=>$booking_id));

        //$updated=1;

        if($updated){

            //Normal balance data

            $_get_fees_details_last=$this->fm->_get_fees_details_last(array('payment_stu_id'=>$stu_id,'payment_inst_id'=>$inst_id,'payment_installment_id'=>$installment_id,'payment_admission_id'=>$admission_id,'payment_session_id'=>$session_id,'payment_course_id'=>$course_id));

            if(!empty($_get_fees_details_last)){

                $balance_last_data=$this->fm->_get_installments_balance_last(array('inst_installment_id'=>$installment_id,'inst_stu_id'=>$stu_id,'inst_session_id'=>$session_id,'inst_course_id'=>$course_id,'inst_id'=>$inst_id,'inst_payment_id'=>$_get_fees_details_last->payment_fees_details_id));
            }else{
                $balance_last_data=$this->fm->_get_installments_balance_last(array('inst_installment_id'=>$installment_id,'inst_stu_id'=>$stu_id,'inst_session_id'=>$session_id,'inst_course_id'=>$course_id,'inst_id'=>$inst_id));
            }

            if(!empty($balance_last_data)){
                $prev_balance=$balance_last_data->inst_payment_balance;
                $prev_payment=$balance_last_data->inst_payment_total;
            }else{
                $prev_balance=0;
                $prev_payment=0;
            }

            if($prev_balance>0){
                $total_payable_amount=$prev_balance;
                $balance=$prev_balance-$txn_amount;
            }

            if($split_balance>0){
                if(!empty($split_balance_last_data)){
                    $prev_split_balance=$split_balance_last_data->inst_payment_balance;
                    $prev_split_payment=$split_balance_last_data->inst_payment_total;
                }else{
                    $prev_split_balance=0;
                    $prev_split_payment=0;
                }

                if($prev_split_balance>0){
                    $total_split_payable_amount=$prev_split_balance;
                    //$split_balance=$prev_balance-$txn_amount;
                }
            }else{
                $prev_split_balance=0;
                $prev_split_payment=0;
            }

            // echo $prev_split_balance;die;


            //Table:nt_institute_payments_admission_fees_details

            $pay_data_to_add=array(
                'payment_stu_id'=>$stu_id,
                'payment_inst_id'=>$booking_inst_id,
                'payment_session_id'=>$session_id,
                'payment_session_year'=>$session_year,
                'payment_admission_id'=>$admission_id,
                'payment_course_id'=>$course_id,
                'payment_installment_id'=>$installment_id,
                'payment_fees_total'=>$installment_value,
                'payment_fees_scholarship_discount'=>$param['scholarship_amount'],
                'payment_fees_scholarship_discount_reason'=>$param['scholarship_reason'],
                'payment_fees_special_discount'=>$param['special_amount'],
                'payment_fees_special_discount_reason'=>$param['special_discount_reason'],
                'payment_fees_total_discount'=>$discount_amount,
                'payment_fees_grand_total'=>$total_payable_amount,
                'payment_fees_admission_amount'=>$txn_amount,
                'payment_fees_balance_amount'=>$balance,
                'payment_late_fee_applied'=>$penalty_applied,
                'payment_late_fee'=>$installment_value_penalty,
                'payment_fees_prev_balance_amount'=>$prev_balance,
                'pay_mode'=>$payment_mode,
                'pay_bank_cheque_no'=>(!empty($cheque_no))?$cheque_no:null,
                'pay_checq_files_ids'=>(isset($param['booking_payment_checq_files_ids']))?$param['booking_payment_checq_files_ids']:null,
                'pay_utr_no'=>(isset($utrexists) && $utrexists==TRUE)?$pay_phonepe_utr:null,
                'pay_bank_name'=>(isset($cheque_bank_name))?$cheque_bank_name:null,
                'pay_deposit_bank'=>(isset($cheque_deposite_bank) && $cheque_deposite_bank>0)?$cheque_deposite_bank:null,
                'created_by'=>$user_id,
                'created_at'=>date('Y-m-d')
            );

            //print_obj($pay_data_to_add);die;

            $payment_id=$this->fm->store_fees_details($pay_data_to_add);

            //$payment_id=1;

            //echo $balance;die;

            if($payment_id){

                //Discounts update
                if(!empty($param['special_amount']) && $param['special_amount']>0){
                    $special_discount_data=array(
                        'discount_fee_inst_id'=>$booking_inst_id,
                        'discount_fee_stu_id'=>$stu_id,
                        'discount_fee_course_id'=>$course_id,
                        'discount_fee_session_id'=>$session_id,
                        'discount_fee_admission_id'=>$admission_id,
                        'discount_fee_installment_id'=>$installment_id,
                        'discount_fee_type_main'=>'admission_discount_fee',
                        'discount_fee_type'=>'special_discount',
                        'discount_fee_type_value'=>$param['special_discount_reason'],
                        'discount_fee'=>$param['special_amount'],
                        'created_at'=>date('Y-m-d H:i:s')
                    );

                    $deleted=$this->fm->delete_discount_fees(array('discount_fee_inst_id'=>$booking_inst_id,
                        'discount_fee_stu_id'=>$stu_id,
                        'discount_fee_course_id'=>$course_id,
                        'discount_fee_session_id'=>$session_id,
                        'discount_fee_admission_id'=>$admission_id,'discount_fee_type_main'=>'admission_discount_fee',
                        'discount_fee_type'=>'special_discount'));

                    if($deleted){
                        $this->fm->store_discount_fees($special_discount_data);
                    }  
                }

                if(!empty($param['scholarship_amount']) && $param['scholarship_amount']>0){
                    $scholarship_discount_data=array(
                        'discount_fee_inst_id'=>$booking_inst_id,
                        'discount_fee_stu_id'=>$stu_id,
                        'discount_fee_course_id'=>$course_id,
                        'discount_fee_session_id'=>$session_id,
                        'discount_fee_admission_id'=>$admission_id,
                        'discount_fee_installment_id'=>$installment_id,
                        'discount_fee_type_main'=>'admission_discount_fee',
                        'discount_fee_type'=>'scholarship_discount',
                        'discount_fee_type_value'=>$param['special_discount_reason'],
                        'discount_fee'=>$param['scholarship_amount'],
                        'created_at'=>date('Y-m-d H:i:s')
                    );

                    $_deleted=$this->fm->delete_discount_fees(array('discount_fee_inst_id'=>$booking_inst_id,
                        'discount_fee_stu_id'=>$stu_id,
                        'discount_fee_course_id'=>$course_id,
                        'discount_fee_session_id'=>$session_id,
                        'discount_fee_admission_id'=>$admission_id,'discount_fee_type_main'=>'admission_discount_fee',
                        'discount_fee_type'=>'scholarship_discount'));

                    if($_deleted){
                        $this->fm->store_discount_fees($scholarship_discount_data);
                    }  
                }

                //Check Split balance exists

                if(!empty($split_balance_last_data) && $split_balance_last_data->inst_balance_paid=='no'){
                    $balance_id=$split_balance_last_data->balance_split_id;
                }else{
                    if($balance>0){
                        //echo 'hi';die;

                        $balance_data=array(
                            'inst_id'=>$booking_inst_id,
                            'inst_parent_id'=>$booking_inst_parent_id,
                            'inst_stu_id'=>$stu_id,
                            'inst_session_id'=>$session_id,
                            'inst_course_id'=>$course_id,
                            'inst_subject_id'=>$subject_id,
                            'inst_year'=>$session_year,
                            'inst_installment_id'=>$installment_id,
                            'inst_payment_id'=>$payment_id,
                            'inst_payment_total'=>$txn_amount,
                            'inst_payment_balance'=>$balance,
                            'inst_balance_partialy_paid'=>'yes',                        
                            'created_at'=>date('Y-m-d'),
                            'created_by'=>$user_id,
                            'created_by_type'=>$userdata->user_type
                        );

                        $balance_id=$this->fm->store_installments_balance($balance_data);

                       

                        if($balance_id){
                            $this->fm->update_installments_balance(array('inst_balance_partialy_paid'=>'yes'),array('inst_id'=>$booking_inst_id,
                                'inst_parent_id'=>$booking_inst_parent_id,
                                'inst_stu_id'=>$stu_id,
                                'inst_session_id'=>$session_id,
                                'inst_course_id'=>$course_id,
                                'inst_installment_id'=>$installment_id,
                                'inst_balance_type'=>'admission_balance'));
                            $this->fm->update_installments_balance(array('inst_balance_partialy_paid'=>'no'),array('balance_id'=>$balance_id));

                           // echo $balance_id;die;
                        }

                    }else if($balance==0){
                        //echo 'hi2';die;
                        if(!empty($balance_last_data)){
                            $balance_data=array(
                                'inst_id'=>$booking_inst_id,
                                'inst_parent_id'=>$booking_inst_parent_id,
                                'inst_stu_id'=>$stu_id,
                                'inst_session_id'=>$session_id,
                                'inst_course_id'=>$course_id,
                                'inst_subject_id'=>$subject_id,
                                'inst_year'=>$session_year,
                                'inst_installment_id'=>$installment_id,
                                'inst_payment_id'=>$payment_id,
                                'inst_payment_total'=>$txn_amount,
                                'inst_payment_balance'=>$balance,
                                'inst_balance_paid'=>'yes',
                                'inst_balance_partialy_paid'=>'yes',
                                'created_at'=>date('Y-m-d'),
                                'created_by'=>$user_id,
                                'created_by_type'=>$userdata->user_type
                            );

                            $balance_id=$this->fm->store_installments_balance($balance_data);

                            //'inst_id'=>$booking_inst_id,
                            // 'inst_parent_id'=>$booking_inst_parent_id,
                            // 'inst_stu_id'=>$stu_id,
                            // 'inst_session_id'=>$session_id,
                            // 'inst_course_id'=>$course_id,

                            $this->fm->update_installments_balance(array('inst_balance_paid'=>'yes'),array(
                                'inst_installment_id'=>$installment_id,
                                'inst_balance_type'=>'admission_balance'));
                        }

                        $this->fm->update_installments(array('installment_paid_full'=>'yes'),array('installment_id'=>$installment_id));
                    }
                }
                
                //echo 'split_balance:'.$split_balance;die;

                //Split Balance
                if($split_balance>0){
                    $split_balance_data=array(
                        'balance_split_id'=>$balance_id,
                        'inst_id'=>$booking_inst_id,
                        'inst_parent_id'=>$booking_inst_parent_id,
                        'inst_stu_id'=>$stu_id,
                        'inst_session_id'=>$session_id,
                        'inst_course_id'=>$course_id,
                        'inst_subject_id'=>$subject_id,
                        'inst_year'=>$session_year,
                        'inst_installment_id'=>$installment_id,
                        'inst_payment_id'=>$payment_id,
                        'inst_payment_total'=>(isset($param['paid_split_amount']))?$txn_split_amount:$txn_amount,
                        'inst_payment_balance'=>$split_balance,
                        'inst_balance_partialy_paid'=>'yes',   
                        'inst_balance_type'=>'admission_split_balance',                     
                        'created_at'=>date('Y-m-d'),
                        'created_by'=>$user_id,
                        'created_by_type'=>$userdata->user_type
                    );

                    //print_obj($split_balance_data);die;

                    $split_balance_id=$this->fm->store_installments_balance($split_balance_data);
                }else if($split_balance==0){
                    if(!in_array($payment_mode,array('cash','online_before_software','cheque','phonepeutr','online'))){
                        $balance_data=array(
                            'balance_split_id'=>$balance_id,
                            'inst_id'=>$booking_inst_id,
                            'inst_parent_id'=>$booking_inst_parent_id,
                            'inst_stu_id'=>$stu_id,
                            'inst_session_id'=>$session_id,
                            'inst_course_id'=>$course_id,
                            'inst_subject_id'=>$subject_id,
                            'inst_year'=>$session_year,
                            'inst_installment_id'=>$installment_id,
                            'inst_payment_id'=>$payment_id,
                            'inst_payment_total'=>(isset($param['paid_split_amount']))?$txn_split_amount:$txn_amount,
                            'inst_payment_balance'=>$split_balance,
                            'inst_balance_paid'=>'yes',
                            'inst_balance_partialy_paid'=>'yes',
                            'inst_balance_type'=>'admission_split_balance',
                            'created_at'=>date('Y-m-d'),
                            'created_by'=>$user_id,
                            'created_by_type'=>$userdata->user_type
                        );

                        $split_balance_id=$this->fm->store_installments_balance($balance_data);

                        $this->fm->update_installments_balance(array('inst_balance_paid'=>'yes'),array('inst_balance_type'=>'admission_split_balance', 'balance_split_id'=>$balance_id));
                        $this->fm->update_installments_balance(array('inst_balance_partialy_paid'=>'no'),array('inst_balance_type'=>'admission_balance', 'balance_id'=>$balance_id));
                    }
                }
                   

                $payment_details=array(
                    'details_type_text'=>$details_type_text,
                    'details_order_code'=>$_fisrt_sec_order_id.$installemnt_unique_code,
                    'details_payment_platform'=>$payment_platform,
                    'details_type'=>$booking_type,
                    'details_payment_type'=>$details_payment_type,
                    'details_type_id'=>$booking_id,
                    'details_payment_id'=>$payment_id,
                    'details_inst_id'=>$booking_inst_id,
                    'details_parent_inst_id'=>$booking_inst_parent_id,
                    'details_emp_id'=>decode_data(session_userdata('admin_id')),
                    'details_stu_id'=>$student_data->stu_user_id,
                    'details_sess_id'=>$session_id,
                    'details_course_id'=>$course_id,
                    'details_sess_year'=>$session_year,
                    'details_installment_id'=>$installment_id,
                    'details_txn_id'=>$txn_id,
                    'details_order_id'=>$param['installment_order_id'],
                    'details_utr_id'=>(isset($param['phonepe_utr_no']))?$param['phonepe_utr_no']:null,
                    'details_pay_id'=>(isset($param['pay_id']))?$param['pay_id']:null,
                    'details_pay_checq_files_ids'=>(isset($param['booking_payment_checq_files_ids']))?$param['booking_payment_checq_files_ids']:null,
                    'details_amount'=>(isset($param['paid_split_amount']))?$txn_split_amount:$txn_amount,
                    'details_discount_amount'=>$discount_amount,
                    'details_prev_total_amount'=>(isset($param['paid_split_amount']))?$prev_split_payment:$prev_payment,
                    'details_accounting_type'=>$accounting_type,
                    'details_accounting_type_id'=>'1',
                    'details_payment_note'=>(!empty($param['payment_note']))?$param['payment_note']:null,
                    'details_status'=>$details_status,
                    'details_msg'=>$details_msg,
                    'details_created_by_type'=>$userdata->user_type,
                    'details_created_by'=>$user_id,
                    'details_created_at'=>date('Y-m-d',strtotime($pay_date)),
                    'details_created_at_actual'=>date('Y-m-d')
                );

                //print_obj($payment_details);die;

                //echo $paytype;die;


                $payment_details_id=$this->fm->store_payment_details($payment_details);

                if($payment_details_id){
                    $amount_paid=(isset($param['paid_split_amount']))?$txn_split_amount:$txn_amount;
                    if($paytype==='bal'){

                        if($balance>0){
                            $inst_balance_paid='no';
                        }else{
                            $inst_balance_paid='yes';
                        }


                        $this->fm->update_installments_balance(array('inst_balance_paid'=>$inst_balance_paid,'updated_at'=>date('Y-m-d'),'updated_by'=>$userdata->user_id,'updated_by_type'=>$userdata->user_type),array('inst_id'=>$booking_inst_id,'inst_stu_id'=>$student_data->stu_user_id,'inst_session_id'=>$session_id,'inst_installment_id'=>$installment_id,'inst_balance_type'=>'admission_balance'));
                    }


                    //Auto credit to Cash or Bank Accounts
                    if($param['pay_auto_credit_account']!='0' && $param['pay_auto_credit_account']!='cash'){
                        //Bank Balance update
                        $balance_opening_amount=0;
                        $get_balance_data=$this->sm->get_bank_balance(array('balance_inst_id'=>$inst_id,'balance_bank_id'=>$param['pay_auto_credit_account'],'balance_inst_type'=>$inst_type,'balance_status'=>'active'));

                        if(!empty($get_balance_data)){
                            $last_balance=$get_balance_data->balance_opening_amount;
                            $balance_opening_amount=$get_balance_data->balance_opening_amount;
                        }

                        $balance_amount=$last_balance+$amount_paid;
                        $bank_balance=array(
                            'balance_inst_id'=>$inst_id,
                            'balance_bank_id'=>$param['pay_auto_credit_account'],
                            'balance_opening_amount'=>$balance_amount,
                            'balance_adjusted_amount'=>$amount_paid,
                            'balance_status'=>'active',
                            'balance_created_by'=>$emp_id
                        );

                        $balance_id=$this->sm->store_bank_balance_data($bank_balance);
                        if($balance_id){
                            $this->fm->update_payment_details(array('details_accounting_account'=>'bank_account','details_accounting_account_id'=>$param['pay_auto_credit_account']),array('details_id'=>$payment_details_id));
                            if(!empty($get_balance_data)){
                                $this->sm->update_bank_balance_data(array('balance_status'=>'inactive','balance_updated_by'=>$data['emp_id']),array('balance_id'=>$get_balance_data->balance_id));
                            }                
                        }
                    }else if($param['pay_auto_credit_account']=='cash'){
                        //Cash balance update
                        $balance_opening_amount=0;
                        $get_balance_data=$this->sm->get_cash_balance(array('balance_inst_id'=>$inst_id,'balance_status'=>'active'));

                        if(!empty($get_balance_data)){
                            $last_balance=$get_balance_data->balance_opening_amount;
                            $balance_opening_amount=$get_balance_data->balance_opening_amount;
                        }

                        $balance_amount=$last_balance+$amount_paid;
                        $cash_balance=array(
                            'balance_inst_id'=>$inst_id,                
                            'balance_opening_amount'=>$balance_amount,
                            'balance_adjusted_amount'=>$amount_paid,
                            'balance_status'=>'active',
                            'balance_created_by'=>$emp_id
                        );

                        $balance_id=$this->sm->store_cash_balance_data($cash_balance);
                        if($balance_id){
                            $this->fm->update_payment_details(array('details_accounting_account'=>'cash_account'),array('details_id'=>$payment_details_id));
                            if(!empty($get_balance_data)){
                                $this->sm->update_cash_balance_data(array('balance_status'=>'inactive','balance_updated_by'=>$emp_id),array('balance_id'=>$get_balance_data->balance_id));
                            }                
                        }
                    }
                }

               // print_obj($payment_details);die;

                return $redirect_url;

            }else{
                return 'error';
            }

            

        }else{
            return 'error';
        }

    }


    /**Split INstallmentas**/

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

                $user_id=$this->user_id;

                if($this->inst_type=='institute_branch'){
                    $parent_inst_id=$this->branch_parent_inst_id;
                }else{
                    $parent_inst_id=$this->inst_parent_id;
                }

                $paid_amount=post_data('total_amount');
                $paid_split_amount=post_data('pay_amount');
                $pay_mode=post_data('pay_mode');
                $order_id=post_data('pay_order_id');
                $installment_id=post_data('pay_installment_id');
                $pay_note=post_data('pay_note');
                $payment_discount=post_data('pay_discount');
                $pay_discount_other=post_data('pay_discount_other');
                $pay_date=post_data('pay_date');
                $pay_auto_credit_account=post_data('pay_auto_credit_account');

                $current_date=date('Y-m-d');

                $discount=0;

                if($order_id && $installment_id){
                    $installment_id=decode_data($installment_id);

                    //echo $installment_id;

                    if(is_numeric($installment_id)){
                        $_order_id=explode('_', $order_id);

                        if(!empty($_order_id)){

                            $admission_code=$_order_id[0];
                            $installment_data=$this->fm->get_installments(array('installment_id'=>$installment_id));
                            $admission_data=$this->adm->get_admission_data(array('admission_code'=>$admission_code));

                            //print_obj($installment_data);die;

                            $txn='';
                            $scholarship_amount=0;
                            $special_amount=0;
                            $penalty_applied='no';
                            $total_amount_pyable='';
                            $balance_amount=0;
                            $pay_phonepe_utr=null;
                            $pay_phonepe_utr_txn=null;
                            $payment_platform=$pay_mode;
                            $pay_special_remarks='';
                            $pay_special_amount_reason='';
                            $pay_date=date('Y-m-d',strtotime($pay_date));
                            $total_payable_amount=$installment_data->installment_value;

                            //Check for any prev balance
                            $last_balance=$this->fm->_get_installments_balance_last(array('balance_split_id'=>null,'inst_installment_id'=>$installment_id));

                            //print_obj($last_balance);

                            if(!empty($last_balance)){
                                $total_payable_amount=$last_balance->inst_payment_balance;
                            }else{
                                $total_payable_amount=$total_payable_amount;
                            }

                            $balance_amount=($total_payable_amount-($payment_discount+$pay_discount_other))-$paid_amount;

                            //print_obj($balance_amount);die;

                            if(!empty($admission_data) && !empty($installment_data)){
                                $stu_id=$stu_id=$admission_data->admission_stu_id;
                                $details_order_code=$admission_data->admission_code.$installment_data->installment_unique_code;

                                $payment_data_param=array(
                                    'installment_unique_code'=>$installment_data->installment_unique_code,
                                    'installment_order_id'=>$order_id,
                                    'installment_data'=>$installment_data,
                                    'scholarship_amount'=>$scholarship_amount,
                                    'special_amount'=>$special_amount,
                                    'penalty_applied'=>$penalty_applied,
                                    'total_payable_amount'=>$total_payable_amount,
                                    'paid_amount'=>$paid_amount,
                                    'paid_split_amount'=>$paid_split_amount,
                                    'pay_auto_credit_account'=>$pay_auto_credit_account,
                                    'balance_amount'=>$balance_amount,
                                    'phonepe_utr_no'=>$pay_phonepe_utr,
                                    'phonepeutr_txn'=>$pay_phonepe_utr_txn,
                                    'payment_mode'=>$pay_mode,
                                    'payment_platform'=>$payment_platform,
                                    'pay_date'=>$pay_date,
                                    'payment_note'=>$pay_note,
                                    'msg'=>'success',
                                    'scholarship_amount'=>$payment_discount,
                                    'special_amount'=>$pay_discount_other,
                                    'scholarship_reason'=>$pay_special_remarks,
                                    'special_discount_reason'=>$pay_special_amount_reason,
                                    'split_no'=>'1'
                                );

                                //print_obj($payment_data_param);die;

                                $response=$this->get_payment($payment_data_param);

                                if($response=='error'){
                                    $return['error']='There was an internal error occurre.Try after some time.';
                                }else{
                                    $return['success']='Payment has been recieved.';
                                    $return['redirect']=$response;
                                }
                            }else{
                                $return['error']='No data found';
                            }

                        }else{
                            $return['error']='Data manipulation not allowed';
                        }
                    }else{
                        $return['error']='Data manipulation not allowed';
                    }

                    //print_obj($_order_id);
                }else{
                    $return['error']='Data manipulation not permitted.';
                }    

                json_headers($return);

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


    public function onPayInstallments_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=$this->data['userdata']->user_id;

                if($this->data['userdata']->user_type=='institute_branch'){
                    $branch_data=$this->get_user(array('user_id'=>$user_id),'institute_branch');
                    $parent_inst_id=$barnch_data->user_id;
                }else{
                    $parent_inst_id=$user_id;
                }

                $stu_id=post_data('stu_id');
                $inst_id=post_data('inst_id');
                $admission_id=post_data('admission_id');
                $course_id=post_data('course_id');
                $session_id=post_data('session_id');
                $installment_id=post_data('installment_id');

                $session_year=post_data('pay_session_year');

                $total_amount=post_data('pay_amount');
                $scholarship_amount=post_data('pay_scholarship_amount');
                $special_amount=post_data('pay_special_amount');
                $paid_amount=post_data('pay_amount_paid');
                $balance=post_data('pay_balance_amount');

                $final_amount=post_data('pay_final_amount');

                $pay_special_remarks=post_data('pay_special_remarks');
                $pay_special_amount_reason=post_data('pay_special_amount_reason');


                $pay_mode=post_data('pay_mode');

                $bank_name=post_data('pay_bank_name');

                $cheque_no=post_data('pay_bank_cheque_no');

                $deposite_bank=post_data('pay_deposite_bank');

                $pay_phonepe_utr=post_data('pay_phonepe_utr');
                $pay_phonepe_utr_txn=post_data('pay_phonepe_utr_txn');

                //print_obj($this->input->post());die;

                $current_date=date('Y-m-d');


                if($paid_amount<=$final_amount){
                    $fees_details_found=$this->fm->get_fees_details(array('payment_stu_id'=>$stu_id,'payment_inst_id'=>$inst_id,'payment_session_id'=>$session_id,'payment_admission_id'=>$admission_id,'payment_course_id'=>$course_id,'payment_installment_id'=>$installment_id));

                    $admission_data=$this->adm->get_admission_data(array('admission_id'=>$admission_id));

                    $institute_data=$this->um->get_user(array('user_id'),'institute');

                    $installment_data=$this->fm->get_installment(array('installment_id'=>$installment_id));
                    $installment_date=date('Y-m-d',strtotime($installment_data->installment_date));

                    //print_obj($institute_data);die;

                    //echo 'installment value:'.$installment_data->installment_value.'<br>';

                    //echo $scholarship_amount;die;

                    if(!empty($scholarship_amount)){
                        $samount=$scholarship_amount;
                    }else{
                        $samount=0;
                    }

                    if(!empty($special_amount)){
                        $ssamount=$special_amount;
                    }else{
                        $ssamount=0;
                    }

                    if($current_date>$installment_date){

                        $total_payable_amount=($installment_data->installment_value+$installment_data->installment_value_penalty)-($samount+$ssamount);

                        $late_fee_applied='yes';
                    }else{

                        $total_payable_amount=$installment_data->installment_value-($samount+$ssamount);
                        $late_fee_applied='no';
                    }


                   // echo 'total_payable_amount:'.$total_payable_amount.'<br>';

                    //echo 'paid_amount:'.$paid_amount.'<br>';

                    //$total_payable_amount=$total_payable_amount-($scholarship_amount+$special_amount);

                    $balance_amount=$total_payable_amount-$paid_amount;

                    //echo 'balance_amount:'.$balance_amount;die;

                    if(empty($fees_details_found)){

                        if($pay_mode=='cheque'){
                            if(!empty($bank_name) && !empty($cheque_no)){
                                if($deposite_bank!='0'){
                                    $bankexists=TRUE;
                                }else if($deposite_bank=='0'){
                                    $bankexists=FALSE;
                                } 
                            }else{
                                $bankexists=FALSE;
                            }

                            $utrexists=FALSE;
                                                       
                        }else if($pay_mode=='cash'){
                            $bankexists=TRUE;
                            $utrexists=FALSE;
                        }else if($pay_mode=='online'){
                            $utrexists=FALSE;
                            $bankexists=TRUE;
                        }else if($pay_mode=='phonepeutr'){
                            $utrexists=TRUE;
                            $bankexists=TRUE;
                        }

                        if($bankexists==TRUE){

                            if($utrexists==TRUE){

                                if(!empty($pay_phonepe_utr) && !empty($pay_phonepe_utr_txn)){
                                    $utrrequired=FALSE;
                                }else{
                                    $utrrequired=TRUE;
                                }
                            }else{
                                $utrrequired=FALSE;
                            }

                            if($utrrequired==FALSE){
                                $scholarship_amount=(!empty($scholarship_amount))?$scholarship_amount:'0';
                                $special_amount=(!empty($special_amount))?$special_amount:'0';

                                $payment_fees_total_discount=$scholarship_amount+$special_amount;                           
                                
                                $payment_fees_grand_total=($total_amount-$payment_fees_total_discount);

                               // $balance_amount=$total_payable_amount-$paid_amount;   //$payment_fees_grand_total-$paid_amount;

                                

                                if($scholarship_amount>0 && $special_amount>0){
                                    if(!empty($pay_special_remarks) && !empty($pay_special_amount_reason)){
                                        $remarks_added='yes';
                                        $special_remarks_added='yes';
                                        $payment_fees_scholarship_discount_reason=$pay_special_remarks;
                                        $payment_fees_special_discount_reason=$pay_special_amount_reason;
                                        //echo '1';
                                    }else{
                                        $remarks_added='no';
                                        $special_remarks_added='no';
                                        $payment_fees_scholarship_discount_reason=null;
                                        $payment_fees_special_discount_reason=null;
                                       // echo '2';
                                    }
                                }else if($scholarship_amount>0 && $special_amount==0){
                                    if(!empty($pay_special_remarks)){
                                        $remarks_added='yes';
                                        $special_remarks_added='yes';                                
                                       // echo '3';
                                    }else{
                                        $remarks_added='no';
                                        $special_remarks_added='yes';
                                        //echo '4';
                                    }
                                    $payment_fees_scholarship_discount_reason=$pay_special_remarks;
                                    $payment_fees_special_discount_reason=null;
                                }else if($scholarship_amount==0 && $special_amount>0){
                                    if(!empty($pay_special_amount_reason)){
                                        $remarks_added='yes';
                                        $special_remarks_added='yes';
                                        //echo '5';
                                    }else{
                                        $remarks_added='yes';
                                        $special_remarks_added='no';
                                       // echo '6';
                                    }
                                    $payment_fees_scholarship_discount_reason=null;
                                    $payment_fees_special_discount_reason=$pay_special_amount_reason;
                                }else{
                                    $remarks_added='yes';
                                    $special_remarks_added='yes';
                                    $payment_fees_scholarship_discount_reason=null;
                                    $payment_fees_special_discount_reason=null;
                                    //echo '7';
                                }

                                //echo $special_remarks_added;die;

                               // echo $balance_amount;die;

                                //echo $installment_id;die;

                                if($remarks_added=='yes' && $special_remarks_added=='yes'){
                                    $data_to_add=array(
                                        'payment_stu_id'=>$stu_id,
                                        'payment_inst_id'=>$inst_id,
                                        'payment_session_id'=>$session_id,
                                        'payment_session_year'=>$session_year,
                                        'payment_admission_id'=>$admission_id,
                                        'payment_course_id'=>$course_id,
                                        'payment_installment_id'=>$installment_id,
                                        'payment_late_fee_applied'=>$late_fee_applied,
                                        'payment_late_fee'=>($late_fee_applied=='yes')?$installment_data->installment_value_penalty:0,
                                        'payment_fees_total'=>$total_payable_amount,
                                        'payment_fees_scholarship_discount'=>$scholarship_amount,
                                        'payment_fees_scholarship_discount_reason'=>$payment_fees_scholarship_discount_reason,
                                        'payment_fees_special_discount'=>$special_amount,
                                        'payment_fees_special_discount_reason'=>$payment_fees_special_discount_reason,
                                        'payment_fees_total_discount'=>$payment_fees_total_discount,
                                        'payment_fees_grand_total'=>$payment_fees_grand_total,
                                        'payment_fees_admission_amount'=>$paid_amount,
                                        'payment_fees_balance_amount'=>$balance_amount,
                                        'pay_mode'=>$pay_mode,
                                        'pay_bank_cheque_no'=>(!empty($cheque_no))?$cheque_no:null,
                                        'pay_utr_no'=>($utrexists==TRUE)?$pay_phonepe_utr:null,
                                        'pay_bank_name'=>(!empty($bank_name))?$bank_name:null,
                                        'pay_deposit_bank'=>($deposite_bank>0)?$deposite_bank:null,
                                        'created_by'=>$user_id,
                                        'created_at'=>date('Y-m-d')
                                    );

                                    $payment_id=$this->fm->store_fees_details($data_to_add);

                                    if($payment_id){
                                        if($balance_amount<=0){
                                            $this->fm->update_installments(array('installment_paid_full'=>'yes'),array('installment_id'=>$installment_id));
                                        }

                                        $txn_code=generate_string(4);
                                        if(!empty($pay_phonepe_utr)){
                                            $txn_id=$pay_phonepe_utr_txn;
                                        }else{
                                            $txn_id='T'.date('Ymd').$installment_id.$payment_id.$stu_id;
                                        }
                                        
                                        $order_id=$admission_data->admission_code.$txn_code;

                                        $payment_details=array(
                                            'details_order_code'=>$txn_code,
                                            'details_payment_platform'=>$pay_mode,
                                            'details_type'=>'new_admission',
                                            'details_payment_type'=>'installment_fees',
                                            'details_type_id'=>$admission_id,
                                            'details_payment_id'=>$payment_id,
                                            'details_inst_id'=>$inst_id,
                                            'details_parent_inst_id'=>$parent_inst_id,
                                            'details_stu_id'=>$stu_id,
                                            'details_sess_id'=>$session_id,
                                            'details_course_id'=>$course_id,
                                            'details_sess_year'=>$session_year,
                                            'details_installment_id'=>$installment_id,
                                            'details_txn_id'=>$txn_id,
                                            'details_utr_id'=>($utrexists==TRUE)?$pay_phonepe_utr:null,
                                            'details_order_id'=>$order_id,
                                            'details_amount'=>$paid_amount,
                                            'details_discount_amount'=>$payment_fees_total_discount,
                                            'details_prev_total_amount'=>0,
                                            'details_accounting_type'=>'income',
                                            'details_created_by_type'=>$this->data['userdata']->user_type,
                                            'details_created_by'=>$this->data['userdata']->user_id,
                                            'details_pay_currency'=>'INR',
                                            'details_status'=>'success',
                                            'details_msg'=>'TXN Success',
                                            'details_created_at'=>date('Y-m-d')
                                        );

                                        $payment_details_id=$this->fm->store_payment_details($payment_details);


                                        //print_obj($installment_data);die;



                                        $mail_data['inst_id']=$inst_id;
                                        $mail_data['mail_from']='webmaster';

                                        if(isset($installment_data) && !empty($installment_data)){

                                            if(!empty($installment_data->stu_mid_name)){
                                                $student_name=ucwords(strtolower($installment_data->stu_first_name)).' '.ucwords(strtolower($installment_data->stu_mid_name)).' '.ucwords(strtolower($installment_data->stu_last_name));
                                            }else{
                                                $student_name=ucwords(strtolower($installment_data->stu_first_name)).' '.ucwords(strtolower($installment_data->stu_last_name));
                                            }


                                            $mail_data['to_email']=$installment_data->stu_email;
                                        }


                                        

                                        if($userdata->user_type=='student'){
                                            $mail_data['mail_from_name']=$institute_data->user_profile_name;

                                            // if($payment_details->details_payment_type=='installment_balance_fees'){
                                            //     $mail_data['mail_subject']='Admission ['.$booking_data->admission_code.'] Balance Payment Details';
                                            // }else{
                                                $mail_data['mail_subject']='Admission ['.$admission_data->admission_code.'] Payment Details';
                                            //}


                                            
                                            $profile_name=$institute_data->user_profile_name;
                                            $college_email=$institute_data->user_email;
                                            $college_phone=$institute_data->user_contact_no;
                                            $link_logo=$this->data['link_logo'];
                                        }else{
                                            $mail_data['mail_from_name']=ucwords($institute_data->user_profile_name);
                                            $mail_data['mail_subject']=ucwords($institute_data->user_profile_name).' Admission ['.$admission_data->admission_code.'] Details';
                                            $profile_name=$institute_data->user_profile_name;
                                            $college_email=$institute_data->user_email;
                                            $college_phone=$institute_data->user_contact_no;
                                            $link_logo=$this->data['link_logo'];
                                        }

                                        $college_email=$institute_data->user_email;
                                        $college_phone=$institute_data->user_contact_no;
                                        $profile_name=$institute_data->user_profile_name;
                                        $link_logo=$this->data['link_logo'];


                                        $payment_data=$this->fm->get_fees_details(array('payment_fees_details_id'=>$payment_id));
                                        $payment_details=$this->fm->get_payment_details(array('details_id'=>$payment_details_id));
                                  
                                        
                                        $mail_data['mail_type']='html';
                                        $mail_data['mail_custom_type']='html';
                                        $mail_data['mail_data']=array(
                                            'stu_name'=>ucwords($student_name),
                                            'stu_email'=>$installment_data->stu_email,
                                            'stu_ph'=>$installment_data->stu_ph_no,
                                            'booking_code'=>$admission_data->admission_code,
                                            'booking_session'=>$installment_data->session_start_year.'-'.$installment_data->session_end_year,
                                            'booking_course'=>$installment_data->course_name,
                                            'booking_subject'=>(!empty($installment_data->subject_name))?$installment_data->subject_name:'N/A',
                                            'booking_amount'=>'0',
                                            'installment_data'=>$installment_data,
                                            'payment_data'=>$payment_data,
                                            'payment_details'=>$payment_details,
                                            'portal_url'=>$this->data['base_url'],
                                            'portal_logo'=>$link_logo,
                                            'portal_inst_name'=>$profile_name,
                                            'college_email'=>$college_email,
                                            'college_phone'=>$college_phone,
                                            'default_logo_small'=>$this->data['default_logo_small'],
                                            'created_at'=>date('d-m-Y')
                                        );


                                        //print_obj($mail_data);die;

                                        
                                        $mail_data['mail_view']='_pages/mails/vw_admission_installments_payment_mail';

                                        $this->onSendMail($mail_data);

                                        $mail_data_2=$mail_data;

                                        $mail_data_2['to_email']=$institute_data->user_email;
                                        // if($payment_details->details_payment_type=='installment_balance_fees'){
                                        //     $mail_data_2['mail_subject']='Admission ['.$booking_data->admission_code.'] Balance Payment Details [Copy mail]';
                                        // }else{
                                            $mail_data_2['mail_subject']='Admission ['.$admission_data->admission_code.'] Payment Details [Copy mail]';
                                        //}
                                        
                                        $this->onSendMail($mail_data_2);

                                        $return['success']='Payment recieved';
                                    }else{
                                        $return['error']='Payment not recieved.';
                                    }
                                }else if($remarks_added=='no' && $special_remarks_added=='no'){
                                    $return['error']='Scolarship remarks and Special discount remarks are required.';
                                }else if($remarks_added=='no' && $special_remarks_added=='yes'){
                                    $return['error']='Scolarship remarks is required.';
                                }else if($remarks_added=='yes' && $special_remarks_added=='no'){
                                    $return['error']='Special discount remarks is required.';
                                }
                            }else if($utrrequired==TRUE){
                                $return['error']='UTR and TXN number is required';
                            }

                                                                
                        }else{
                            $return['error']='Bank Name,Cheque No,Deposit bank are required';
                        }
                    }else{

                    }
                }else{
                    $return['error']='Pay amount can not be less than zero value.';
                }
                    

                json_headers($return);

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


    public function onPayFullInstallments(){
        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;

                if($this->data['userdata']->user_type=='institute'){
                    $parent_inst_id=$this->data['userdata']->user_id;
                }else if($this->data['userdata']->user_type=='institute_branch'){
                    $parent_inst_id=$this->data['userdata']->branch_parent_inst_id;
                }

                $stu_id=post_data('stu_id');
                $inst_id=post_data('inst_id');
                $admission_id=post_data('admission_id');
                $course_id=post_data('course_id');
                $session_id=post_data('session_id');

                $session_year=post_data('_session_year');

                $pay_amount=post_data('full_pay_amount');
                $paid_amount=post_data('full_pay_amount_paid');
                $scholarship_amount=post_data('full_pay_scholarship_amount');
                $special_amount=post_data('full_pay_special_amount');

                $scholarship_remarks=post_data('full_pay_scholarship_remarks');
                $special_amount_remarks=post_data('full_pay_special_amount_reason');
                
                $pay_mode=post_data('full_pay_mode');

                $bank_name=post_data('full_pay_bank_name');

                $cheque_no=post_data('full_pay_bank_cheque_no');

                $utr_no=post_data('full_pay_phonepe_utr');

                $txn_no=post_data('full_pay_phonepe_utr_txn');

                $deposite_bank=post_data('full_pay_deposite_bank');

                $payment_fees_total_discount=($scholarship_amount+$special_amount);
                $total_amount=$pay_amount-$payment_fees_total_discount;

                if($total_amount>=0){
                    $fees_details_found=$this->fm->get_fees_details(array('payment_stu_id'=>$stu_id,'payment_inst_id'=>$inst_id,'payment_session_id'=>$session_id,'payment_admission_id'=>$admission_id,'payment_course_id'=>$course_id,'payment_session_year'=>$session_year));

                    //print_obj($fees_details_found);die;


                    if(empty($fees_details_found)){

                        if($pay_mode=='cheque'){
                            if(!empty($bank_name) && !empty($cheque_no)){
                                if($deposite_bank!='0'){
                                    $bankexists=TRUE;
                                }else if($deposite_bank=='0'){
                                    $bankexists=FALSE;
                                } 
                            }else{
                                $bankexists=FALSE;
                            }

                            $utrexists=FALSE;
                                                       
                        }else if($pay_mode=='cash'){
                            $bankexists=TRUE;
                            $utrexists=FALSE;
                        }else if($pay_mode=='phonepeutr'){
                            $bankexists=TRUE;
                            if($txn_no!='' && $utr_no!=''){
                                $utrexists=FALSE;
                            }else{
                                $utrexists=TRUE;
                            }                            
                        }

                        if($bankexists==TRUE){

                            if($scholarship_amount>0 && $special_amount>0){
                                if(!empty($scholarship_remarks) && !empty($special_amount_remarks)){
                                    $remarks_added='yes';
                                    $special_remarks_added='yes';
                                    $payment_fees_scholarship_discount_reason=$scholarship_remarks;
                                    $payment_fees_special_discount_reason=$special_amount_remarks;
                                    //echo '1';
                                }else{
                                    $remarks_added='no';
                                    $special_remarks_added='no';
                                    $payment_fees_scholarship_discount_reason=null;
                                    $payment_fees_special_discount_reason=null;
                                   // echo '2';
                                }
                            }else if($scholarship_amount>0 && $special_amount==0){
                                if(!empty($scholarship_remarks)){
                                    $remarks_added='yes';
                                    $special_remarks_added='yes';                                
                                   // echo '3';
                                }else{
                                    $remarks_added='no';
                                    $special_remarks_added='yes';
                                    //echo '4';
                                }
                                $payment_fees_scholarship_discount_reason=$scholarship_remarks;
                                $payment_fees_special_discount_reason=null;
                            }else if($scholarship_amount==0 && $special_amount>0){
                                if(!empty($special_amount_remarks)){
                                    $remarks_added='yes';
                                    $special_remarks_added='yes';
                                    //echo '5';
                                }else{
                                    $remarks_added='yes';
                                    $special_remarks_added='no';
                                   // echo '6';
                                }
                                $payment_fees_scholarship_discount_reason=null;
                                $payment_fees_special_discount_reason=$special_amount_remarks;
                            }else{
                                $remarks_added='yes';
                                $special_remarks_added='yes';
                                $payment_fees_scholarship_discount_reason=null;
                                $payment_fees_special_discount_reason=null;
                                //echo '7';
                            }

                            //echo $remarks_added;die;



                            if($remarks_added=='yes' && $special_remarks_added=='yes'){


                                if($utrexists==FALSE){
                                    $installment_data_to_add=array(
                                        'installment_stu_id'=>$stu_id,
                                        'installment_inst_id'=>$inst_id,
                                        'installment_admission_id'=>$admission_id,
                                        'installment_sess_id'=>$session_id,
                                        'installment_sess_year'=>$session_year,
                                        'installment_course_id'=>$course_id,
                                        'installment_value'=>$total_amount,
                                        'installment_date'=>date('Y-m-d'),
                                        'created_by'=>$this->data['userdata']->user_id,
                                        'created_at'=>date('Y-m-d')
                                    );


                                    $installment_id=$this->fm->store_installments($installment_data_to_add);

                                    if($installment_id){

                                        $pay_data_to_add=array(
                                            'payment_stu_id'=>$stu_id,
                                            'payment_inst_id'=>$inst_id,
                                            'payment_session_id'=>$session_id,
                                            'payment_session_year'=>$session_year,
                                            'payment_admission_id'=>$admission_id,
                                            'payment_course_id'=>$course_id,
                                            'payment_installment_id'=>$installment_id,
                                            'payment_fees_total'=>$pay_amount,
                                            'payment_fees_scholarship_discount'=>$scholarship_amount,
                                            'payment_fees_scholarship_discount_reason'=>$payment_fees_scholarship_discount_reason,
                                            'payment_fees_special_discount'=>$special_amount,
                                            'payment_fees_special_discount_reason'=>$payment_fees_special_discount_reason,
                                            'payment_fees_total_discount'=>$payment_fees_total_discount,
                                            'payment_fees_grand_total'=>$total_amount,
                                            'payment_fees_admission_amount'=>$paid_amount,
                                            'payment_fees_balance_amount'=>'0',
                                            'pay_mode'=>$pay_mode,
                                            'pay_utr_no'=>(!empty($utr_no))?$utr_no:null,
                                            'pay_bank_cheque_no'=>(!empty($cheque_no))?$cheque_no:null,
                                            'pay_bank_name'=>(!empty($bank_name))?$bank_name:null,
                                            'pay_deposit_bank'=>($deposite_bank>0)?$deposite_bank:null,
                                            'created_by'=>$user_id,
                                            'created_at'=>date('Y-m-d')
                                        );

                                        $payment_id=$this->fm->store_fees_details($pay_data_to_add);

                                        if($payment_id){

                                            // $this->fm->update_installments(array('installment_paid_full'=>'yes'),array('installment_id'=>$installment_id));


                                            $hf=$this->fm->update_installments(array('installment_paid_full'=>'yes'),array('installment_admission_id'=>$admission_id,'installment_sess_id'=>$session_id,'installment_sess_year'=>$session_year));

                                            //echo $hf;die;

                                            $admission_data=$this->adm->get_admission_data(array('admission_id'=>$admission_id));

                                            if($pay_mode=='phonepeutr'){
                                                $txn_id=$txn_no;
                                            }else{
                                                $txn_id='T'.date('Ymd').$installment_id.$payment_id.$stu_id;
                                            }

                                            
                                            $order_code=generate_string(4);
                                            $order_id=$admission_data->admission_code.$order_code;

                                            $payment_details=array(
                                                'details_type'=>'new_admission',
                                                'details_payment_type'=>'installment_fees',
                                                'details_payment_id'=>$payment_id,
                                                'details_type_id'=>$admission_id,
                                                'details_inst_id'=>$inst_id,
                                                'details_stu_id'=>$stu_id,
                                                'details_parent_inst_id'=>$parent_inst_id,
                                                'details_sess_id'=>$session_id,
                                                'details_sess_year'=>$session_year,
                                                'details_course_id'=>$course_id,
                                                'details_installment_id'=>$installment_id,
                                                'details_payment_platform'=>$pay_mode,
                                                'details_txn_id'=>$txn_id,
                                                'details_utr_id'=>(!empty($utr_no))?$utr_no:null,
                                                'details_order_id'=>$order_id,
                                                'details_order_code'=>$order_code,
                                                'details_amount'=>$paid_amount,
                                                'details_discount_amount'=>$payment_fees_total_discount,
                                                'details_accounting_type'=>'income',
                                                'details_status'=>'success',
                                                'details_msg'=>'TXN Success',
                                                'details_created_by_type'=>'institute',
                                                'details_created_by'=>$user_id,
                                                'details_created_at'=>date('Y-m-d')
                                            );

                                            $this->fm->store_payment_details($payment_details);

                                            

                                            $return['success']='Payment recieved';
                                        }else{
                                            $return['error']='Payment not recieved.';
                                        }

                                    }else{
                                        $return['error']='There was an ocurred';
                                    }
                                }else if($utrexists==TRUE){
                                    $return['error']='UTR no and TXN no is required';
                                }


                                    
                            }else if($remarks_added=='no' && $special_remarks_added=='no'){
                                $return['error']='Scolarship remarks and Special discount remarks are required.';
                            }else if($remarks_added=='no' && $special_remarks_added=='yes'){
                                $return['error']='Scolarship remarks is required.';
                            }else if($remarks_added=='yes' && $special_remarks_added=='no'){
                                $return['error']='Special discount remarks is required.';
                            }
                                
                        }else{
                            $return['error']='Bank Name,Cheque No,Deposit bank are required';
                        }
                            
                    }else{
                        $return['error']='Data already found';
                    }
                }else{
                    $return['error']='Payable amount can not be less than zero';
                }

                //data manipulation neede
                    

                json_headers($return);

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



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

                $agent_id=post_data('agent_id');
                $inst_id=post_data('inst_id');
                $booking_id=post_data('booking_id');
                $payment_id=post_data('payment_id');
                $payment_mode=post_data('full_pay_mode');
                $full_pay_date=post_data('full_pay_date');
                $full_pay_note=post_data('full_pay_note');
                $full_pay_amount=post_data('full_pay_amount');
                $paymet_balance=0;

                //echo decode_data($agent_id);

                if(!empty($payment_id)){

                    $agent_id=decode_data($agent_id);
                    $payment_id=decode_data($payment_id);
                    $booking_id=decode_data($booking_id);
                    $inst_id=decode_data($inst_id);

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

                    $parent_inst_id=$check_institute['inst_parent_id'];

                    $inst_type=$check_institute['inst_type'];

                    //$payment_date=date('Y-m-d H:i:s',strtotime($full_pay_date));

                    //$datetime = DateTime::createFromFormat('d/m/Y', $full_pay_date);
                    $payment_date = date('Y-m-d H:i:s',strtotime($full_pay_date));

                    //echo $payment_date;die;

                    if($this->data['userdata']->user_type=='institute'){
                        $parent_inst_id=$this->data['userdata']->user_id;
                    }else if($this->data['userdata']->user_type=='institute_branch'){
                        $parent_inst_id=$this->data['userdata']->branch_parent_inst_id;
                    }


                    $payment_data=$this->fm->_get_agent_payment(array('payment_id'=>$payment_id,'institute_payments_agents.agent_id'=>$agent_id,'booking_id'=>$booking_id));

                    //print_obj($payment_data);die;

         
                    if(!empty($payment_data)){

                        $amount_value=$payment_data->amount_value;
                        $booking_session_id=$payment_data->session_id;
                        $booking_course_id=$payment_data->course_id;
                        $booking_code=$payment_data->booking_code;
                        $student_id=$payment_data->stu_id;
                        $booking_type=($payment_data->booking_type=='seat_booking')?'seatbooking_agent_fees':'admission_agent_fees';

                        $total_balance_payment=$this->fm->get_installments_paid_total(array('inst_agent_id'=>$agent_id,'inst_payment_id'=>$payment_id));

                        //print_obj($total_balance_payment);die;


                        if($full_pay_amount<=$amount_value){
                            $paymet_balance=$amount_value-$full_pay_amount;

                            $agent_amount=$full_pay_amount;

                            if(isset($total_balance_payment[0]->total)){
                                $total_payment_balance=$amount_value-($agent_amount+$total_balance_payment[0]->total);
                            }else{
                                $total_payment_balance=$paymet_balance;
                            }

                            //echo $total_payment_balance;die;


                            if($payment_mode=='online'){

                                $this->fm->update_agent_payment(array('booking_code'=>$booking_code,'booking_pay_mode'=>'online',),array('payment_id'=>$payment_id,'agent_id'=>$agent_id,'booking_id'=>$booking_id));

                                $return['success']='Ready for online payment.';
                                $return['booking_value']=$agent_amount;
                                $return['booking_code']=$payment_order_id;

                            }else{
                                $agent_pay_data=array(
                                    'booking_code'=>$booking_code,
                                    'booking_pay_mode'=>$payment_mode,
                                    'amount_paid'=>($total_payment_balance>0)?'no':'yes',
                                    'amount_paid_by'=>$this->user_id,
                                    'amount_paid_at'=>$payment_date
                                );


                                $updated=$this->fm->update_agent_payment($agent_pay_data,array('payment_id'=>$payment_id,'agent_id'=>$agent_id,'booking_id'=>$booking_id));

                                if($updated){

                                    //echo $booking_code;die;

                                    $payment_details=array(
                                        'details_type'=>'agent_payment',
                                        'details_payment_type'=>$booking_type,
                                        'details_type_text'=>($paymet_balance>0)?"Agent Commission [{$booking_code}] Balance Payment":"Agent Commission [{$booking_code}] Payment",
                                        'details_payment_type'=>$booking_type,
                                        'details_payment_id'=>$payment_data->payment_id,
                                        'details_type_id'=>$booking_id,
                                        'details_emp_id'=>$this->user_id,
                                        'details_inst_id'=>$inst_id,
                                        'details_stu_id'=>$student_id,
                                        'details_parent_inst_id'=>$parent_inst_id,
                                        'details_agent_id'=>$agent_id,
                                        'details_sess_id'=>$booking_session_id,
                                        'details_course_id'=>$booking_course_id,
                                        'details_subject_id'=>$booking_subject_id,
                                        'details_amount'=>$agent_amount,
                                        'details_discount_amount'=>'0',
                                        'details_payment_platform'=>'cash',
                                        'details_txn_id'=>ge_rand_code('TXN'.$inst_id.$booking_id,3,TRUE),
                                        'details_order_id'=>($paymet_balance>0)?$booking_code.'_agent_bal':$booking_code.'_agent',
                                        'details_order_code'=>$booking_code,
                                        'details_accounting_type'=>'expenditure',
                                        'details_status'=>'success',
                                        'details_msg'=>'Cash Payment',
                                        'details_created_by_type'=>$inst_type,
                                        'details_created_by'=>$this->user_id,
                                        'details_payment_note'=>(!empty($full_pay_note))?$full_pay_note:null,
                                        'details_created_at'=>$payment_date,
                                        'details_created_at_actual'=>date('Y-m-d')
                                    );

                                   // print_obj($payment_details);die;

                                    $this->fm->store_payment_details($payment_details);

                                    if($paymet_balance>0){
                                        
                                        $balance_detaila=array(
                                            'inst_id'=>$inst_id,
                                            'inst_parent_id'=>$parent_inst_id,
                                            'inst_stu_id'=>$payment_data->stu_id,
                                            'inst_session_id'=>$booking_session_id,
                                            'inst_course_id'=>$booking_course_id,
                                            'inst_agent_id'=>$agent_id,
                                            'inst_payment_id'=>$payment_id,
                                            'inst_payment_total'=>$agent_amount,
                                            'inst_payment_balance'=>$total_payment_balance,
                                            'inst_balance_paid'=>'no',
                                            'inst_balance_type'=>'agent_balance',
                                            'created_at'=>date('Y-m-d'),
                                            'created_by'=>$this->user_id,
                                            'created_by_type'=>$this->user_type
                                        );

                                        $this->fm->store_installments_balance($balance_detaila);
                                    }

                                    
                                    $total_payments=$this->fm->_get_payments_total(array('details_agent_id'=>$agent_id,'details_type'=>'agent_payment','details_inst_id'=>$inst_id));
                                    $total_payments_due=$this->fm->_get_agent_payments_total(array('agent_id'=>$agent_id,'amount_paid'=>'no','inst_id'=>$inst_id));

                                    //print_obj($total_payments);die;

                                    $return['total_payments']=(!empty($total_payments[0]) && !empty($total_payments[0]->total))?number_format($total_payments[0]->total,2):'0.00';
                                    $return['total_payments_due']=(!empty($total_payments_due[0]) && !empty($total_payments_due[0]->total))?number_format($total_payments_due[0]->total,2):'0.00';

                                    $return['success']='Payment done.';
                                }else{
                                    $return['error']='Payment can not be proceessed at this time.try again later.';
                                }
                            }



                        }else if($full_pay_amount>$amount_value){
                            $return['error']='Please check the amount.';
                        }

                        // if($payment_data->booking_type=='seat_booking'){
                        //     $booking_data=$this->adm->get_seat_booking_data(array('booking_id'=>$booking_id));
                        //     $student_data=$this->um->get_students(array('stu_id'=>$booking_data->booking_stu_profile_id));
                        //     $booking_id=$booking_id;
                        //     $booking_code=$booking_data->booking_code;
                        //     $booking_course_id=$booking_data->booking_course_id;
                        //     $booking_session_id=$booking_data->booking_sess_id;
                        //     $booking_subject_id=$booking_data->booking_subject_id;
                        //     $student_id=$student_data->stu_user_id;
                        //     $payment_order_id=$booking_code.'_agt_'.date('Ymd');
                        //     $details_payment_type='seatbooking_fees';
                        // }else if($payment_data->booking_type=='admission'){
                        //     $booking_id=$booking_id;
                        //     $booking_code=$payment_data->booking_code;
                        //     $booking_course_id=$payment_data->course_id;
                        //     $booking_session_id=$payment_data->session_id;
                        //     $booking_subject_id=$payment_data->subject_id;
                        //     $student_id=$payment_data->stu_id;
                        //     $payment_order_id=$booking_code;
                        //     $details_payment_type='admission_agent_fees';
                        // }
                        // else{
                        //     $booking_data=array();
                        //     $booking_code=null;
                        //     $booking_course_id='';
                        //     $booking_session_id='';
                        //     $booking_subject_id='';
                        //     $student_id='';
                        //     $details_payment_type='';
                        // }


                            

                    }else{
                        $return['error']='Payment data 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 onAddAgentpayment(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                $admission_id=post_data('admission_id');
                $agent_id=post_data('agent_id');

                $agent_commission=post_data('agent_commission');

                if(!empty($admission_id) && !empty($agent_id)){

                    $agent_id=decode_data($agent_id);
                    $admission_id=decode_data($admission_id);

                    if(is_numeric($admission_id) && is_numeric($agent_id)){
                        $admission_data=$this->adm->get_admission_data(array('admission_id'=>$admission_id));                        

                        if(!empty($admission_data)){

                            if(!empty($agent_id)){

                                if(!empty($agent_commission) && (is_double($agent_commission) || is_numeric($agent_commission))){

                                    $agent_data=$this->um->get_user(array('agent_id'=>$agent_id),'agent');

                                    $agent_commision_preset=$this->sm->get_agent_commission_settings(array('com_inst_id'=>$admission_data->admission_inst_id,'com_session_id'=>$admission_data->admission_sess_id,'com_course_id'=>$admission_data->admission_course_id));

                                    if(!empty($agent_commision_preset)){
                                        if($agent_commission<=$agent_commision_preset->com_max_value){
                                            $agent_commision_error='';
                                        }else{
                                            $agent_commision_error='Agent commission can not exceeds of max commission ₹ '.number_format($agent_commision_preset->com_max_value,2).'.';
                                        }
                                    }else{
                                        $agent_commision_error='Agent commission presets not found for this session and course but ';
                                    }

                                        
                                    if(empty($agent_commision_error)){


                                        $payment_booking_data=$this->fm->get_agent_payment(array('agent_id'=>$agent_id,'booking_id'=>$admission_data->admission_id,'booking_type'=>'admission'));

                                        if(empty($payment_booking_data)){
                                            $details_to_store=array(
                                                'agent_id'=>$agent_data->agent_user_id,
                                                'booking_id'=>$admission_data->admission_id,
                                                'booking_type'=>'admission',
                                                'stu_id'=>$admission_data->admission_stu_id,
                                                'booking_code'=>$admission_data->admission_code.'_agt_'.date('Ymd'),
                                                'session_id'=>$admission_data->admission_sess_id,
                                                'course_id'=>$admission_data->admission_course_id,
                                                'subject_id'=>$admission_data->admission_subject_id,
                                                'inst_id'=>$admission_data->admission_inst_id,
                                                'inst_parent_id'=>$admission_data->admission_inst_parent_id,
                                                'amount_value'=>$agent_commission,
                                                'amount_paid'=>'no',
                                                'amount_created_at'=>date('Y-m-d H:i:s')
                                            );

                                            $inserted=$this->fm->store_agent_payment($details_to_store);

                                            if($inserted){
                                                $return['success']='Agent commission has been set';
                                            }else{
                                                $return['error']='Agent commission has not been set';
                                            }

                                        }else{
                                            $return['error']='Agent payment already set for this admission';
                                        }
                                            

                                    }else{
                                        $return['error']=$agent_commision_error;
                                    }
                                }else{
                                    $return['error']='Enter proper value for the amount.';
                                }



                            }else{
                                $return['error']='Agent data not foud in the system.';
                            }

                        }else{
                            $return['error']='Admission data not found in the system';
                        }
                    }else{
                        $return['error']='Data manipulation not allowed 1';
                    }  

                }else{
                    $return['error']='Data manipulation not allowed 2';
                }

                json_headers($return);

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


    public function onBuildAdmissionPaymentForm(){
        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');
                $inst_id=$this->data['userdata']->user_id;

                $session_fees_data=array();
                $session_fees_types=array();

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

                if(!empty($session_data)){
                    $fees_types=$this->fm->__get_fees_type(array('fees_type_inst_id'=>$inst_id,'fees_type_group'=>'Admission'),FALSE);

                    if(!empty($fees_types)){
                        foreach ($fees_types as $key => $value) {
                            $session_fees_types[]=array(
                                'fees_type_id'=>$value->fees_type_id,
                                'fees_type'=>$value->fees_type,
                                'fees_value'=>$value->fees_value
                            );
                        }
                    }

                    //print_obj($session_fees_types);die;

                    if($session_data->session_duration_type=='yearwise'){
                        $session_years=$this->sessm->get_session_year(array('year_session_id'=>$session_id),FALSE);

                        //print_obj($session_years);die;

                        if(!empty($session_data)){
                            foreach ($session_years as $k => $v) {
                                $session_fees_data[]=array(
                                    'session_year'=>$v->year_value,
                                    'session_fees_types'=>$session_fees_types
                                );
                            }
                        }
                    }

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

                    //print_obj($this->data['session_fees_data']);die;

                    $return['payment_form']=$this->theme->view('_pages/admission/vw_admission_payment_form',$this->data,true);

                    json_headers($return);

                }else{
                    $return[''];
                }

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

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

                $admission_id=post_data('admission_id');
                $student_id=post_data('student_id');
                $admission_date=post_data('admission_date');
                $admission_subject=post_data('admission_subject');

                if(!empty($student_id) && !empty($admission_id)){
                    $student_id=decode_data($student_id);
                    $admission_id=decode_data($admission_id);

                    $admission_data=$this->adm->_get_admission_data(array('admission_id'=>$admission_id));

                    if(!empty($admission_data)){
                        if(!empty($admission_date)){
                            $data_to_update['admission_date']=date('Y-m-d',strtotime($admission_date));
                        }

                        if(!empty($admission_subject) && $admission_subject>0){
                            $data_to_update['admission_subject_id']=$admission_subject;
                        }

                        $data_to_update['updated_at']=date('Y-m-d');
                        $data_to_update['updated_by']=decode_data(session_userdata('admin_id'));
                        $updated=$this->adm->update_admission_data($data_to_update,array('admission_id'=>$admission_data->admission_id));
                        if($updated){
                            $return['success']='Admission data updated successfully';
                        }else{
                            $return['error']='Admission data not updated.';
                        }
                    }else{
                        $return['error']='Admission data not found.';
                    }
                }else{
                    $return['error']='Error occurred';
                }
                

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

}

MMCT - 2023