%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµù Õ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream

nadelinn - rinduu

Command :

ikan Uploader :
Directory :  /var/www/html/shardahospital.org/shardalms/api/application/models/
Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 
Current File : /var/www/html/shardahospital.org/shardalms/api/application/models/Leads_model.php
<?php 
class Leads_model extends CI_Model {
	function set_search_cond($qs, $lvOpt){
		if(USER_TYPE!='ADMIN' && USER_TYPE!='USER'){
            $users=$this->user->active_users(true);
            $userids=[0];
            foreach($users as $u){
                $userids[]=$u['id'];
            }
        }
        if($qs['data_set_id']){
            $lvOpt=$this->dataset->detail($qs['data_set_id']);
        }
        $this->common->set_data_set_cond($lvOpt, true);

        /** */
        if(Lead_View_ByYou && $qs['level']!='ASSIGNED_ME'){
            $uids=$userids;
            if(!$uids){
                $uids=[USER_ID];
            }
            $this->db->where_in("A.created_by", $uids);
        }
        if((Online_Leads || Offline_Leads) && !(Online_Leads && Offline_Leads)){
            if(Online_Leads){
                $this->db->where("U.verified_by!=", 'OFFLINE');
            }
            if(Offline_Leads){
                $this->db->where("U.verified_by", 'OFFLINE');
            }
        }
        /** \ */
		
		if($qs['k']){
			if(LEAD_RESTRICT){
				$this->db->group_start()
					->where('U.name', $qs['k'])
					->or_where('U.email', $qs['k'])
					->or_where('U.mob', $qs['k'])
					->or_where('A.application_no', $qs['k'])
				->group_end();
			}else{
				$this->db->group_start()
					->like('U.name', $qs['k'])
					->or_like('U.email', $qs['k'])
					->or_like('U.mob', $qs['k'])
					->or_like('A.application_no', $qs['k'])
				->group_end();
			}
        }
        
        if($qs['campus_id']){
            $this->db->where("A.campus_id", $qs['campus_id']);
        }
		
		if($qs['utm_group']){
			$utmids=$this->db->select("id")->get_where("master_utm_sources", array('grp'=>$qs['utm_group']))->result_array();
			$sids=[];
			foreach($utmids as $r){
				$sids[]=$r['id'];
			}
			if($sids){
				$this->db->where_in("U.utm_source_id", $sids);
			}
		}
		if($qs['utm_source_id']){
			$this->db->where_in("U.utm_source_id", $qs['utm_source_id']);
		}
		if($qs['utm_campaign']){
			$this->db->where_in("U.utm_campaign", $qs['utm_campaign']);
		}
		if($qs['utm_medium']){
			$this->db->where_in("U.utm_medium", $qs['utm_medium']);
		}
		if($qs['step_completed']){
            if($qs['level']!=='PHD'){
                /* if(in_array('0', $qs['step_completed'])){
                    $this->db->where("A.step_completed", 0);
                }else{
                    $this->db->where_in("A.step_completed", $qs['step_completed']);
                } */
                if(in_array('EX0', $qs['step_completed'])){
                    $this->db->where(["A.step_completed"=>0, "U.is_excel_upload"=>0]);
                }elseif(in_array('API0', $qs['step_completed'])){
                    $this->db->where(["A.step_completed"=>0, "U.is_excel_upload"=>NULL]);
                }else{
                    $this->db->where_in("A.step_completed", $qs['step_completed']);
                }
            }else{
                $this->db->where_in("PF.step_completed", $qs['step_completed']);
            }
		}else{
            //$this->db->where("A.step_completed!=", 0);
        }

        if(strlen($qs['method'])){
            if($qs['method']==='01'){
                $this->db->where_in("U.is_excel_upload", [0,1]);
            }
            if($qs['method']==='0'){
                $this->db->where("U.is_excel_upload", 0);
            }
            if($qs['method']==='1'){
                $this->db->where("U.is_excel_upload", 1);
            }
            if($qs['method']==='NULL'){
                $this->db->where("U.is_excel_upload", NULL);
            }
        }
		
		if($qs['payStatusMode']=='Paid'){
			$this->db->where("A.payment_status", 1);
		}elseif($qs['payStatusMode']=='OnlinePaid'){
			$this->db->where("A.payment_mode", 'ONLINE');
		}elseif($qs['payStatusMode']=='CashPaid'){
			$this->db->where("A.payment_mode", 'CASH');
		}elseif($qs['payStatusMode']=='NotPaid'){
			$this->db->where("A.payment_status", 0);
		}elseif($qs['payStatusMode']=='PaidFromApp'){
            $this->db->where("PTRANS.from_mob_app", 1);
        }elseif($qs['payStatusMode']=='Step1Paid'){
            $this->db->where(['A.step1_paid'=>1]);
        }

        if($qs['paid_amt']){
            $this->db->where("(A.fee-A.coupan_amt)=", $qs['paid_amt']);
        }

        if(!LEAD_RESTRICT){
            if($qs['fromDate']){
                $this->db->where("A.created >=", date('Y-m-d', strtotime($qs['fromDate'])));
            }
            if($qs['toDate']){
                $this->db->where("A.created <=", date('Y-m-d 23:59:59', strtotime($qs['toDate'])));
            }
        }

		if($qs['remarks_id']){
            /* $rids=array_map('intval', $qs['remarks_id']);
            asort($rids);
            $rids=implode("|", $rids);
            $cond="CONCAT(',', A.remarks_ids , ',') REGEXP ".'",('.$rids.'),"';
            $this->db->where($cond, NULL, FALSE); */

            $this->db->where_in("AR.remarks_id", $qs['remarks_id']);
            if($qs['subremarks']){
                $this->db->where_in("AR.subremarks", $qs['subremarks']);
            }
		}
		if($qs['type_id']){
			$this->db->where("P.type_id", $qs['type_id']);
		}
		if($qs['ac_id']){
			$this->db->where_in("P.ac_id", $qs['ac_id']);
		}
		if($qs['discipline_id']){
			$this->db->where_in("P.discipline_id", $qs['discipline_id']);
		}
		if($qs['program_id']){
			$this->db->where_in("P.id", $qs['program_id']);
		}
		if($qs['plan_id']){
			$this->db->where_in("A.plan_id", $qs['plan_id']);
		}
		if($qs['state_id']){
			$this->db->where_in("U.state_id", $qs['state_id']);
		}
		if($qs['city_id']){
			$this->db->where_in("U.city_id", $qs['city_id']);
		}
		if($qs['lpage_id']){
			$this->db->where_in("U.lpage_id", $qs['lpage_id']);
        }
        if($qs['ps_app_status']){
			$this->db->where_in("PSS.DESCR1", $qs['ps_app_status']);
        }
        if($qs['ps_status']){
            if($qs['ps_status']==='PAID'){
			    $this->db->where("PSS_PAID.EMPLID IS NOT NULL", null, false);
            }else{
                $this->db->where("PSS.status", $qs['ps_status']);
            }
        }
        
        if($qs['isdead']){
            $this->db->where("A.isdead", $qs['isdead']);
        }

        if(strlen($qs['suat_status'])){
            if($qs['suat_status']==='NULL'){
                $this->db->where("A.suat_status", NULL);
            }else{
                $this->db->where("A.suat_status", $qs['suat_status']);
            }
        }

        /* if($qs['level']!=='PHD' && $qs['level']!=='CALLER_LEADS'){
            $this->db->where("U.is_phd", 0);
        }
        if($qs['level']!=='MEDICAL' && $qs['level']!=='CALLER_LEADS'){
            $this->db->where("U.is_medical", 0);
        } */

        if($qs['med_phd']==='1'){
			$this->db->where("U.is_medical", 1);
		}elseif($qs['med_phd']==='2'){
			$this->db->where("U.is_phd", 1);
		}elseif($qs['med_phd']==='4'){
			$this->db->where(["U.is_medical"=>0, "U.is_phd"=>0]);
		}elseif($qs['med_phd']==='3'){
			$this->db->where(["U.is_phd"=>0]);
		}

        if($qs['online_offline']==='Online'){
            $this->db->where(['U.verified_by!='=>'OFFLINE']);
        }
        if($qs['online_offline']==='Offline'){
            $this->db->where(['U.verified_by='=>'OFFLINE']);
        }

        if($qs['followup_flg']=='Untouched'){
            $this->db->where("A.last_followup_id", 0);
        }
        if($qs['followup_flg']=='Touched'){
            $this->db->where("A.last_followup_id>",0);
        }
        if($qs['followup_flg']=='TouchedToday'){
            $this->db->where("DATE(AR.created)=", date("Y-m-d"));
        }
        if($qs['followup_flg']=='TouchedYesterday'){
            $this->db->where("DATE(AR.created)=", date("Y-m-d", strtotime("-1 days")));
        }
        if($qs['followup_flg']=='Upcoming'){
            $this->db->where("A.next_followup>=", date("Y-m-d"));
        }
        if($qs['followup_flg']=='UpcomingToday'){
            $this->db->where("A.next_followup=", date("Y-m-d"));
        }
        if($qs['followup_flg']=='Overdue'){
            $this->db->where("A.next_followup<", date("Y-m-d"));
        }

        if($qs['no_of_visits']){
            $a=substr($qs['no_of_visits'], -1);
            $n=replace_non_digits($qs['no_of_visits']);
            $this->db->where("U.no_of_visits".($a==='+'?'>=':($a==='-'?'<=':'')), $n);
        }

        if($qs['followup']=='Y'){
            $this->db->where("A.last_followup_id>", 0);
        }
        if($qs['followup']=='N'){
            $this->db->where("A.last_followup_id", 0);
        }

        if($qs['followup']=='PY'){
            $this->db->where("A.followup_count_all_paid>", 0);
        }
        if($qs['followup']=='PN'){
            $this->db->where("A.followup_count_all_paid", 0);
        }

        if(strlen($qs['followup_count_tab'])){
            $qs['followup_count']=str_replace('p', '+', $qs['followup_count_tab']);
        }

        $followupCountKey="A.followup_count_all";
        if($qs['followup_count_type']==='Paid'){
            $followupCountKey="A.followup_count_all_paid";
        }

        if(strlen($qs['followup_count'])){
            $n=(int)$qs['followup_count'];
            switch($qs['followup_count']){
                case '1':
                case '2':
                case '3':
                    $this->db->where("$followupCountKey", $n);
                break;

                case '1+':
                case '2+':
                case '3+':
                    $this->db->where("$followupCountKey >= ", $n);
                break;
            }
        }

        if($qs['only_other_cities']==='Y'){
            $this->db->where("U.city_id", '-1');
        }

        if($qs['is_campus_offline']){
            $this->db->where(['U.is_campus_offline='=>$qs['is_campus_offline']]);
        }

        if($qs['superbot_disposition']){
            if($qs['superbot_disposition']==='all'){
                $this->db->where("U.superbot_resp_id!=", null);
            }else{
                $this->db->where(['SR.disposition='=>$qs['superbot_disposition']]);
            }
        }

        if($qs['level']){
            switch($qs['level']){
                case 'MEDICAL':
                    $this->db->where("U.is_medical", 1);
                break;
                case 'PHD':
                    $this->db->where("U.is_phd", 1);
                break;
                case 'ONLINE':
                    $this->db->where(['U.verified_by!='=>'OFFLINE']);
                break;
                case 'OFFLINE':
                    $this->db->where(['U.verified_by='=>'OFFLINE']);
                break;
                case 'CAMPUS_OFFLINE':
                    $this->db->where(['U.is_campus_offline='=>'Y']);
                break;
                case 'STEP1':
                    $this->db->where(['A.step_completed'=>1, "U.is_medical"=>0, "U.is_phd"=>0]);
                break;
                case 'STEP2':
                    $this->db->where(['A.step_completed'=>2, "U.is_medical"=>0, "U.is_phd"=>0]);
                break;
                case 'STEP1_PAID':
                    $this->db->where(['A.step_completed'=>1, 'A.payment_status'=>1, "U.is_medical"=>0, "U.is_phd"=>0]);
                break;
                case 'STEP3':
                    $this->db->where(['A.step_completed'=>3, "U.is_medical"=>0, "U.is_phd"=>0]);
                break;
                case 'STEP4':
                    $this->db->where(['A.step_completed'=>4, "U.is_medical"=>0, "U.is_phd"=>0]);
                break;
                case 'STEP5':
                    $this->db->where(['A.step_completed'=>5, "U.is_medical"=>0, "U.is_phd"=>0]);
                break;
                case 'STEP6':
                    $this->db->where(['A.step_completed'=>6, "U.is_medical"=>0, "U.is_phd"=>0]);
                break;
                case 'STEP7':
                    $this->db->where(['A.step_completed'=>7, "U.is_medical"=>0, "U.is_phd"=>0]);
                break;
                case 'PAID':
                    $this->db->where(['A.payment_status'=>1, "U.is_medical"=>0, "U.is_phd"=>0]);
                break;
                case 'ADM_OFFERED':
                    $this->db->where(['PSS.status'=>'ADM_OFFERED', "U.is_medical"=>0, "U.is_phd"=>0]);
                break;
                case 'ADM_FINAL':
                    $this->db->where(['PSS.status'=>'ADM_FINAL', "U.is_medical"=>0, "U.is_phd"=>0]);
                break;

                case 'ASSIGNED_ME':
                    $this->db->where(['A.assigned_to'=>USER_ID]);
                break;
                case 'RESOLVED':
                    $this->db->where(['A.isresolved'=>'Y']);
                break;
                case 'RESOLVED_ME':
                    $this->db->where(['A.resolved_by'=>USER_ID]);
                break;

                case 'PAYMENT_FAIL':
                    $this->db->where(['PTRANS.payment_status'=>'FAIL', 'A.payment_status'=>0]);
                break;
            }
        }
	}

	function lists(){
		$qs=trim_array($_REQUEST);
		$lvOpt=$this->dataset->detail(0, USER_ID);
		/* if($lvOpt['expiry_date'] && strtotime($lvOpt['expiry_date'])<strtotime(date('Y-m-d'))){
			return [];
		} */

        //SQL_CALC_FOUND_ROWS

        $this->set_search_cond($qs, $lvOpt);
        $f="A.id, A.campus_id, A.applicant_id, A.application_no, A.created leadCreated, A.updated leadUpdated, A.plan_id, A.followup_by, 
            A.followup_count, A.followup_count_all, A.followup_count_all_paid, A.created_by, A.isdead, (A.fee-A.coupan_amt) paid_amt,
            A.assigned_to, A.isresolved, A.resolved_by, A.resolved_on, A.suat_status, A.slot_booking_date, A.suat_score, A.next_followup,IF(A.admission_status IS NULL, 'NOT ADMITTED', 'ADMITTED') admission_status,
            P.title program, P.ac_id, P.type_id, P.discipline_id, P.school_id, 
            U.is_phd, U.name, U.email, U.mob, U.city, U.per_12th, U.newsletter_subscribed, U.is_campus_offline,U.country, U.address, U.region,
            U.pincode, U.verified_by, U.state_id, U.lpage_id, U.utm_source_id, U.utm_source, U.process_by, U.lead_source_id, U.lead_source_remarks, U.no_of_visits, 
            A.payment_status, A.payment_mode, A.payment_date, A.cash_order_id, PTRANS.pay_order_id, PTRANS.txn_id, PTRANS.txn_status, 
            PSS.ADM_APPL_NBR ps_app_no, PSS.DESCR1 ps_app_status, PSS.status ps_status, IF(PSS_PAID.EMPLID IS NULL, 'NOT_PAID', 'PAID') ps_paid_status, 
            AL.program_name api_program, AL.plan_name api_plan, SR.disposition superbot_disposition, CL.code, CL.title AS student_country,CL.isd_code AS ISD_CODE, MS.id AS region_id, MS.title AS state_name, MS.code";

        if($qs['remarks_id'] || $qs['followup_flg']=='TouchedToday' || $qs['followup_flg']=='TouchedYesterday' || strlen($qs['followup_count'])){
            $f="SQL_CALC_FOUND_ROWS ".$f;
        }

        if($qs['level']!=='PHD'){
            $f.=", A.step_completed, A.step2date, A.step3date, A.step4date, A.step5date, A.step6date, A.step7date";
        }
		$this->db->select($f, FALSE)
		->from("applications A") //.(ENVIRONMENT=='development'?" USE INDEX(applicant_id)":"")
		->join("applicants U", "U.id=A.applicant_id")
		->join("master_programs P", "P.id=A.program_id", "LEFT")
		->join("pay_trans PTRANS", "PTRANS.id=A.pay_trans_id", "LEFT")
        ->join("ps_stu_status PSS", "PSS.EMPLID=A.application_no", "LEFT")
        ->join("ps_paid_system_ids PSS_PAID", "PSS_PAID.EMPLID=A.application_no", "LEFT")
        ->join("superbot_response SR", "SR.id=U.superbot_resp_id", "LEFT")
        ->join("api_leads AL", "AL.id=A.api_lead_id", "LEFT")
        ->join("master_countrys AS CL", "CL.code = U.country", "LEFT")
        ->join("master_states AS MS", "MS.id = U.state_id", "LEFT");
        if($qs['level']==='PHD'){
            $this->db->join("phd_app_form PF", "PF.app_id=A.id", "LEFT");
            $this->db->select("PF.step_completed, PF.step1date, PF.step2date, PF.step3date, PF.step4date, PF.step5date");
        }

        if($qs['remarks_id'] || $qs['followup_flg']=='TouchedToday' || $qs['followup_flg']=='TouchedYesterday'){
            $this->db->join("applications_remarks AR", "AR.application_id=A.id", "LEFT");
            $this->db->group_by('A.id');
        }

        switch($qs['level']){
            case 'STEP1':
                $this->db->order_by("A.id", "DESC");
                $this->db->group_by('A.id');
            break;
            case 'STEP2':
                $this->db->order_by("A.step2date", "DESC");
                $this->db->group_by('A.id');
            break;
            case 'STEP1_PAID':
                $this->db->order_by("A.payment_date", "DESC");
                $this->db->group_by('A.id');
            break;
            case 'STEP3':
                $this->db->order_by("A.step3date", "DESC");
                $this->db->group_by('A.id');
            break;
            case 'PAID':
                $this->db->order_by("A.payment_date", "DESC");
                $this->db->group_by('A.id');
            break;
            case 'RESOLVED': 
            case 'RESOLVED_ME':            
                $this->db->order_by("A.resolved_on", "DESC"); 
                $this->db->group_by('A.id');                          
            break;
            default:
                $this->db->group_by('A.id');
                $this->db->order_by("A.id", "DESC");
            break;
        }
        
		$rs=$this->dba->pagedRows($qs['p'], 20);
		
        if($rs['result']){
            $md=$this->common->master_data_for_leads();
            $usrs=$this->user->active_users();
            $users=key_val_array($usrs, 'id', 'name');
            $utypes=key_val_array($usrs, 'id', 'type');
            $leadsources=key_val_array($this->master->all_lead_sources(), 'id', 'name');

            foreach($rs['result'] as &$r){
                $r['is_phd']=(int)$r['is_phd'];
                $r['campus']		=$md['campus'][$r['campus_id']];

                $r['state']			=$md['states'][$r['state_id']];
                $r['lpage']			=$md['lpages'][$r['lpage_id']];
                $r['plan']			=$md['plans'][$r['plan_id']];
                $r['ac']			=$md['acs'][$r['ac_id']];
                $r['program_type']	=$md['program_types'][$r['type_id']];
                $r['discipline']	=$md['disciplines'][$r['discipline_id']];
                $r['school']	    =$md['schools'][$r['school_id']];
                //$r['utm_source']	=$md['utm_sources'][$r['utm_source_id']];

                $r['payment_status']	=(int)$r['payment_status'];
                $r['leadCreated']		=get_date($r['leadCreated'], true);
                $r['leadUpdated']		=get_date($r['leadUpdated'], true);
                $r['next_followup']	    =get_date($r['next_followup']);
                
                $r['step2date']			=$r['step2date']?get_date($r['step2date'], true):'Pending';
                $r['step3date']			=$r['step3date']?get_date($r['step3date'], true):'Pending';

                $r['step1date']			=$r['step1date']?get_date($r['step1date'], true):'Pending';
                $r['step4date']			=$r['step4date']?get_date($r['step4date'], true):'Pending';
                $r['step5date']			=$r['step5date']?get_date($r['step5date'], true):'Pending';
                $r['step6date']			=$r['step6date']?get_date($r['step6date'], true):'Pending';
                $r['step7date']			=$r['step7date']?get_date($r['step7date'], true):'Pending';

                $r['payment_date']		=$r['payment_date']?get_date($r['payment_date'], true):'N/A';
                $r['utm_source']		=$r['utm_source']?$r['utm_source']:'N/A';
                $r['lead_source']       =$leadsources[$r['lead_source_id']];

                $r['payment_status_text']='Not Paid';
                if($r['payment_status']){
                    $r['payment_status_text']='Paid';
                }

                if($r['payment_mode']=='CASH'){
                    $r['pay_order_id']=$r['cash_order_id'];
                }
                
                $r['pay_order_id']=$r['pay_order_id']?$r['pay_order_id']:'N/A';
                $r['txn_id']=$r['txn_id']?$r['txn_id']:'N/A';
                $r['txn_status']=$r['txn_status']?$r['txn_status']:'N/A';

                $r['followup_by']=(int)$r['followup_by'];
                $r['receiptPrintUrl']=URL.'common/printReceipt/'.$r['id'];

                $r['ps_status']="N/A";
                if($r['ps_app_no']){
                    if($r['ps_status']=='ADM_OFFERED'){
                        $r['ps_status']="OFFERED";
                    }elseif($r['ps_status']=='ADM_FINAL'){
                        $r['ps_status']="FINAL";
                    }elseif($r['ps_status']=='ADM_WITHDRAW'){
                        $r['ps_status']="WITHDRAW";
                    }else{
                        $r['ps_status']="N/A";
                    }
                }

                $r['usr']=$r['created_by']?($users[$r['created_by']].' ['.user_types($utypes[$r['created_by']]).']'):'Self Registered';

                /** No. of Issues and emails */
                $issue=$this->db->select("COUNT(IF(status=3, 1, NULL)) iclose, COUNT(1) iall", false)->from("issues_reported")->where(['applicant_id'=>$r['applicant_id']])->get()->row_array();
                $r['iclose']=(int)$issue['iclose'];
                $r['iall']=(int)$issue['iall'];

                $r['email_count']=(int)$this->db->select("COUNT(1) n", false)->from("sent_emails")->where(['to_email'=>$r['email'], 'is_letter'=>0])->get()->row()->n;
                $r['whatsapp_count']=(int)$this->db->select("COUNT(1) n", false)->from("sent_whatsapp")->where(['app_id'=>$r['id']])->get()->row()->n;
                $r['letter_count']=(int)$this->db->select("COUNT(1) n", false)->from("sent_emails")->where(['to_email'=>$r['email'], 'is_letter'=>1])->get()->row()->n;
                $r['sms_count']=(int)$this->db->select("COUNT(1) n", false)->from("followup_sent_sms")->where(['application_id'=>$r['id']])->get()->row()->n;
                $r['admin_remark_count']=(int)$this->db->select("COUNT(1) n", false)->from("admin_remarks")->where(['application_id'=>$r['id']])->get()->row()->n;
                /** \ */

                $r['login_url']=generate_login_url($r['lpage'], $r['mob']);
                $r['followup_count']=(int)$r['followup_count'];
                $r['followup_count_all']=(int)$r['followup_count_all'];
                $r['followup_count_all_paid']=(int)$r['followup_count_all_paid'];

                $r['paid_amt']=(float)$r['paid_amt'];

                /** Assigned */
                $r['assigned_to_usr']=$r['assigned_to']?($users[$r['assigned_to']].' ['.user_types($utypes[$r['assigned_to']]).']'):'';
                $r['isresolved']=($r['assigned_to'] || $r['isresolved']=='Y')?$r['isresolved']:'';
                $r['resolve_allowed']=($r['assigned_to'] && (IS_ADMIN || $r['assigned_to']==USER_ID) && $r['isresolved']=='N')?1:0;
                $r['resolved_by_usr']=$r['resolved_by']?($users[$r['resolved_by']].' ['.user_types($utypes[$r['resolved_by']]).']'):'';
                $r['resolved_on']=get_date($r['resolved_on'], true);

                $r['slot_booking_date']=get_date($r['slot_booking_date']);

                unset($r['state_id'], $r['lpage_id'], $r['plan_id'], $r['ac_id'], $r['type_id']);

                $r['admission_card_url']=URLF.'api/phdform/download_adm_form_pdf/'.encode($r['id']);
                $r['admission_card_print_url']=$r['admission_card_url'].'?print=1';
            }
		
			$rs['result']=filterLeadData($rs['result'], $lvOpt);
		}

		return $rs;
	}

	function listsToExport(){
        $md=$this->common->master_data_for_leads();
		$qs=trim_array($this->input->get());
		$lvOpt=$this->dataset->detail(0, USER_ID);
		if($lvOpt['expiry_date'] && strtotime($lvOpt['expiry_date'])<strtotime(date('Y-m-d'))){
			return [];
		}

        $f="A.id, A.campus_id, A.applicant_id, A.application_no, A.step_completed, A.created AS leadCreated, A.updated AS leadUpdated, 
        A.step2date, A.step3date, A.step4date, A.step6date, A.step6date, A.step7date, A.plan_id, A.followup_count, A.followup_count_all, A.followup_by, A.isdead, A.suat_status,A.susat_appeared_status,A.admission_status,A.contract_status,A.fee_paid_status,A.slot_booking_date, A.suat_score, A.admission_status,
        P.title program, P.ac_id, P.type_id, P.discipline_id, S.title school, S.ps_code school_code,
        U.name, U.email, U.mob, U.mob2, U.dob, U.gender, U.address, U.city, U.pincode, U.state_id, U.lpage_id, 
        U.cat_id, U.religion_id, U.verified_by, U.father_name, U.identity_proof, U.identity_proof_no, U.profile_pic, U.is_campus_offline,
		US.grp utm_group, U.utm_source, U.utm_campaign, U.utm_medium, U.utm_term, U.utm_content, U.utm_keyword, U.utm_placement, U.is_medical, U.neet_roll_no, 
        U.neet_marks, U.neet_all_india_rank, U.per_12th, U.newsletter_subscribed,
        ED.board_10th, ED.marking_scheme_id_10th, ED.marks_10th, ED.passing_year_10th, 
		ED.board_12th, ED.marking_scheme_id_12th, ED.marks_12th, ED.passing_year_12th, 
		ED.board_dip, ED.marking_scheme_id_dip, ED.marks_dip, ED.passing_year_dip, 
        ED.university_ug, ED.marking_scheme_id_ug, ED.marks_ug, ED.passing_year_ug, 
        ED.university_pg, ED.marking_scheme_id_pg, ED.marks_pg, ED.passing_year_pg, 
        A.payment_status, A.payment_mode, A.cash_order_id, PTRANS.pay_order_id, PTRANS.txn_id, PTRANS.txn_status, PTRANS.txn_amt, 
        PTRANS.respmsg, PSS.ADM_APPL_NBR ps_app_no, PSS.DESCR1 ps_app_status, PSS.status ps_status, IF(PSS_PAID.EMPLID IS NULL, 'NOT_PAID', 'PAID') ps_paid_status,
        MLR.title followup_title, AR.subremarks, AR.feedback, AL.program_name api_program, AL.plan_name api_plan, SR.disposition superbot_disposition,
        PHD.net, PHD.gate, PHD.slet, PHD.mphil, PHD.other_entrance_exam_dtl, MS.id state_id, MS.title region_name";

        $rs=[];

        for($i=0; $i<=99; $i++){
            $limit=20000;
            $offset=$i*$limit;

            $this->set_search_cond($qs, $lvOpt);
            $this->db->select($f)
            ->from("applications A")
            ->join("applicants U", "U.id=A.applicant_id")
            ->join("master_programs P", "P.id=A.program_id", "LEFT")
            ->join("master_schools S", "S.id=A.school_id", "LEFT")
            ->join("master_utm_sources US", "U.utm_source_id=US.id", "LEFT")
            ->join("applicants_edu_details ED", "ED.applicant_id=U.id", "LEFT")
            ->join("pay_trans PTRANS", "PTRANS.id=A.pay_trans_id", "LEFT")
            ->join("ps_stu_status PSS", "PSS.EMPLID=A.application_no", "LEFT")
            ->join("ps_paid_system_ids PSS_PAID", "PSS_PAID.EMPLID=A.application_no", "LEFT")
            ->join("applications_remarks AR", "AR.id=A.last_followup_id", "LEFT")
            ->join("master_lead_remarks MLR", "MLR.id=AR.remarks_id", "LEFT")
            ->join("superbot_response SR", "SR.id=U.superbot_resp_id", "LEFT")
            ->join("api_leads AL", "AL.id=A.api_lead_id", "LEFT")
            ->join("phd_app_form PHD", "PHD.app_id=A.id", "LEFT")
            ->join("master_states MS", "MS.id=U.state_id", "LEFT")
            ->group_by('A.id')
            ->order_by("A.id", "DESC")
            ->limit($limit, $offset);
            //echo $this->db->get_compiled_select(); die;
            $records=$this->db->get()->result_array();
            if($records){
                foreach($records as $rw){
                    $rs[]=$rw;
                }
                unset($records);
            }else{
                break;
            }
        }
        
        if($rs){
            //$ps_status=$this->ps_stu_status();
        }else{
            return [];
        }
		
		foreach($rs as &$r){
            $r['campus']		=$md['campus'][$r['campus_id']];
            $r['state']			=$md['states'][$r['state_id']];
            $r['stateCode']		=$md['state_codes'][$r['state_id']];
			$r['lpage']			=$md['lpages'][$r['lpage_id']];
            $r['plan']			=$md['plans'][$r['plan_id']];
            $r['ac_code']		=$md['plan_ac_codes'][$r['plan_id']];
            $r['prgCode']		=$md['plan_prg_codes'][$r['plan_id']];
            $r['planCode']		=$md['plan_codes'][$r['plan_id']];

            if(!$r['program']){
                $r['program']=$r['api_program'];
            }
            if(!$r['plan']){
                $r['plan']=$r['api_plan'];
            }

			$r['ac']			=$md['acs'][$r['ac_id']];
			$r['program_type']	=$md['program_types'][$r['type_id']];
            //$r['utm_source']	=$md['utm_sources'][$r['utm_source_id']];
            $r['discipline']    =$md['disciplines'][$r['discipline_id']];
            $r['cat']           =$md['soc_cats'][$r['cat_id']];
            $r['religion']      =$md['religions'][$r['religion_id']];

            $r['marking_scheme_10']			=$md['mark_schemes'][$r['marking_scheme_id_10th']];
            $r['marking_scheme_12']			=$md['mark_schemes'][$r['marking_scheme_id_12th']];
            $r['marking_scheme_dip']		=$md['mark_schemes'][$r['marking_scheme_id_dip']];
            $r['marking_scheme_ug']			=$md['mark_schemes'][$r['marking_scheme_id_ug']];
            $r['marking_scheme_pg']			=$md['mark_schemes'][$r['marking_scheme_id_pg']];

			$r['payment_status']=(int)$r['payment_status'];
			$r['leadCreated']=get_date($r['leadCreated'], true);
			$r['leadUpdated']=get_date($r['leadUpdated'], true);
            $r['susat_status'] = $r['suat_status']?'Y':'N';
            $r['susat_appeared_status'] = $r['susat_appeared_status'] == '1'?'Y':'N';
            $r['admission_status']=$r['admission_status'] == '1'?'Y':'N';
            $r['contract_status']=$r['contract_status'] == '1'?'Y':'N';
            $r['fee_paid_status']=$r['fee_paid_status'] == '1'?'Y':'N';
			$r['step2date']=$r['step2date']?get_date($r['step2date'], true):'N/A';
			$r['step3date']=$r['step3date']?get_date($r['step3date'], true):'N/A';
			$r['step4date']=$r['step4date']?get_date($r['step4date'], true):'N/A';
			$r['step5date']=$r['step5date']?get_date($r['step5date'], true):'N/A';
			$r['step6date']=$r['step6date']?get_date($r['step6date'], true):'N/A';
			$r['step7date']=$r['step7date']?get_date($r['step7date'], true):'N/A';

			$r['dob']=get_date($r['dob']);
			$r['utm_source']=$r['utm_source']?$r['utm_source']:'N/A';

			$r['payment_status_text']='Not Paid';
			if($r['payment_status']){
				$r['payment_status_text']='Paid';
			}
			
			$r['passing_year_10th']=$r['passing_year_10th']?$r['passing_year_10th']:'';
			$r['passing_year_12th']=$r['passing_year_12th']?$r['passing_year_12th']:'';
			$r['passing_year_ug']=$r['passing_year_ug']?$r['passing_year_ug']:'';
			$r['passing_year_pg']=$r['passing_year_pg']?$r['passing_year_pg']:'';

			if($r['payment_mode']=='CASH'){
				$r['pay_order_id']=$r['cash_order_id'];
			}

			$r['pay_order_id']=$r['pay_order_id']?$r['pay_order_id']:'N/A';
			$r['txn_id']=$r['txn_id']?'#'.$r['txn_id']:'N/A';
            $r['txn_status']=$r['txn_status']?$r['txn_status']:'N/A';

            /*if($r['step_completed']==3){
                $ps=$ps_status[$r['application_no']];
                if($ps){
                    $r['ps_application_no']=$ps[0]['application_no'];
                    $r['ps_application_status']=$ps[0]['application_status'];
                    $r['ps_status']=$ps[0]['status'];
                }
            }*/
            // if($r['ps_app_no']){
            //     if($r['ps_status']=='ADM_OFFERED'){
            //         $r['ps_status']="OFFERED";
            //     }elseif($r['ps_status']=='ADM_FINAL'){
            //         $r['ps_status']="FINAL";
            //     }elseif($r['ps_status']=='ADM_WITHDRAW'){
            //         $r['ps_status']="WITHDRAW";
            //     }else{
            //         $r['ps_status']="N/A";
            //     }
            // }
            // echo "<pre>"; print_r($r); die;
            $r['login_url']=generate_login_url($r['lpage'], $r['mob']);

            $r['slot_booking_date']=get_date($r['slot_booking_date']);
            if(!$r['suat_status']){
                $r['suat_status']='Slot Not Booked';
            }
            
            unset($r['state_id'], $r['lpage_id'], $r['plan_id'], $r['ac_id'], $r['type_id'], $r['discipline_id'], $r['marking_scheme_id_10th'], $r['marking_scheme_id_12th'], $r['marking_scheme_id_dip'], $r['marking_scheme_id_ug'], $r['marking_scheme_id_pg'], $r['cat_id'], $r['religion_id']);
        }
		if($rs){
			$rs=filterLeadData($rs, $lvOpt, TRUE);
		}
		return $rs;
	}

	function listsStepZero($export=FALSE){
		$qs=trim_array($_REQUEST);
		if($qs['utm_source_id']){
			$res=$this->db->select("title")->from("master_utm_sources")->where_in("id", $qs['utm_source_id'])->get()->result_array();
			$sources=[];
			foreach($res as $s){
				$sources[]=$s['title'];
			}
		}

		$lvOpt=$this->dataset->detail(0, USER_ID);
		if($lvOpt['utm_sources']){
			$res=$this->db->select("title")->from("master_utm_sources")->where_in("id", $lvOpt['utm_sources'])->get()->result_array();
			$sources_lv=[];
			foreach($res as $s){
				$sources_lv[]=$s['title'];
			}
		}

		if($lvOpt['expiry_date'] && strtotime($lvOpt['expiry_date'])<strtotime(date('Y-m-d'))){
			return [];
		}
		if($lvOpt['steps']){
			if(!in_array('0', $lvOpt['steps'])){
				return [];
			}
		}

		if($lvOpt['states']){
			$this->db->where_in("U.state_id", $lvOpt['states']);
		}
		if($lvOpt['programs']){
			$this->db->where_in("P.id", $lvOpt['programs']);
		}
		if($lvOpt['utm_sources']){
			$this->db->where_in("U.utm_source", $sources_lv);
        }
        
        if($qs['campus_id']){
            $this->db->where("U.campus_id", $qs['campus_id']);
        }

		if($qs['k']){
			$this->db->group_start()
				->like('U.name', $qs['k'])
				->or_like('U.email', $qs['k'])
				->or_like('U.mob', $qs['k'])
			->group_end();
		}
		if($qs['type_id']){
			$this->db->where("P.type_id", $qs['type_id']);
		}
		if($qs['utm_source_id']){
			$this->db->where_in("U.utm_source", $sources);
		}
		if($qs['fromDate']){
			$this->db->where("U.created >=", date('Y-m-d', strtotime($qs['fromDate'])));
		}
		if($qs['toDate']){
			$this->db->where("U.created <=", date('Y-m-d 23:59:59', strtotime($qs['toDate'])));
		}

		if($qs['is_medical']){
			$this->db->where("U.is_medical", 1);
		}else{
			$this->db->where("U.is_medical", 0);
		}

		$this->db->select("U.id, U.campus_id, U.created AS leadCreated, PP.title AS plan, P.title AS program, PP.ac_code, PP.program_code AS prgCode, PP.code AS planCode, AC.title AS ac, PT.title AS program_type, 
		U.name, U.email, U.mob, S.title AS state, S.code AS stateCode, LP.title AS lpage, U.utm_source, U.utm_campaign, U.utm_medium, U.utm_term, U.utm_content, U.utm_keyword, U.utm_placement, 
		U.is_medical, U.neet_roll_no, U.neet_marks, U.neet_all_india_rank, CMP.title campus")
        ->from("tmp_applicants U")
        ->join("master_campus CMP", "CMP.id=U.campus_id")
		->join("landing_pages AS LP", "LP.id=U.lpage_id")
		->join("master_states AS S", "S.id=U.state_id", "LEFT")
		->join("master_program_plans AS PP", "PP.id=U.plan_id", "LEFT")
		->join("master_programs AS P", "P.id=PP.program_id", "LEFT")
		->join("master_academic_careers AS AC", "AC.id=P.ac_id", "LEFT")
		->join("master_program_types AS PT", "PT.id=P.type_id", "LEFT")
		->order_by("U.id", "DESC");
		
		$ps=50;
        if($export){
			$qs['p']=1;
            $ps=100000;
        }
        $rs=$this->dba->pagedRows($qs['p'], $ps, 5, $export?'0':'');
		
		foreach($rs['result'] as &$r){
			$r['step_completed']='-1';
			$r['payment_status']=(int)$r['payment_status'];
			$r['leadCreated']=get_date($r['leadCreated'], true);

			$r['utm_source']=$r['utm_source']?$r['utm_source']:'N/A';

			$r['payment_status_text']='Not Paid';
			
			$r['pay_order_id']=$r['pay_order_id']?$r['pay_order_id']:'N/A';
			$r['txn_id']=$r['txn_id']?$r['txn_id']:'N/A';
			$r['txn_status']=$r['txn_status']?$r['txn_status']:'N/A';
		}

		if($rs['result']){
			$rs['result']=filterLeadData($rs['result'], $lvOpt);
		}
		return $rs;
    }
    
    function save($data1, $data2, $edu=false){
		$err = FALSE;
		$this->db->trans_strict(FALSE);
        $this->db->trans_begin();
		
		try{
            if(!$data1['id']){
                $data1['verified_by']='OFFLINE';
            }
            $id=$this->dba->save("applicants", $data1);
            $data2['applicant_id']=$id;
            
            if(!$data2['id']){
                /* if($data1['is_phd']){
                    $num=$this->getCounter('phd_app_count');
                }else{
                    $num=$this->getCounter('application_no_count');
                } */
                $num=$this->getCounter('application_no_count');
                $data2['application_no']=zero_format_no($num);
            }

            if($data2['step_completed']==1){
                $data2['step1_date']=currentDT();
                $data2['step1_by']=USER_ID;
            }
            if($data2['step_completed']==2){
                $data2['step2_by']=USER_ID;
            }

            $app_id=$this->dba->save("applications", $data2);

            if($edu){
                $edu['id']=(int)$this->db->select("id")->get_where("applicants_edu_details", ['applicant_id'=>$id])->row()->id;
                $edu['applicant_id']=$id;
                $this->dba->save("applicants_edu_details", $edu);
            }

            if(!$data1['id']){
                /** Visit History */
                $d=['verified_by'=>'OFFLINE'];
                $d['applicant_id']=$id;
                $d['lpage']=rtrim($this->db->get_where("landing_pages", array('id'=>$data1['lpage_id']))->row()->title, "/");
                $this->common->save(replace_null($d), "applicants_visit_history");
            }
		}catch(Exception $e) {
            $err = TRUE;
            $msg = $e->getMessage();
        }
		
		if($this->db->trans_status() === FALSE) {
            $err = TRUE;
        }
		
		if($err){
            $this->db->trans_rollback();
			return FALSE;
        }else{
            $this->db->trans_commit();
			return $app_id;
        }
    }
	
	function delete($id){
        //$inf['msg']="Can't be deleted because payment has been made!"; $this->json_data($inf);
		//$this->db->db_debug=FALSE;
		$this->db->delete("data_set_leads", array('application_id'=>$id));
		$this->db->delete("data_set_split_leads", array('application_id'=>$id));
		$this->db->delete("pay_trans", array('application_id'=>$id));
		$this->db->delete("phd_app_form", array('app_id'=>$id));
		$this->db->delete("superbot_campaign_leads", array('app_id'=>$id));
		$this->db->delete("sent_emails", array('application_id'=>$id));
		$this->db->delete("followup_sent_sms", array('application_id'=>$id));
		$this->db->delete("applications", array('id'=>$id));
        return $this->db->affected_rows();
	}

	function deleteApplicant($id){
		$this->db->db_debug=FALSE;
		
		$this->db->delete("applicants_edu_details", array('applicant_id'=>$id));
		$this->db->delete("applications", array('applicant_id'=>$id));
		return $this->db->delete("applicants", array('id'=>$id));
	}

	/** */
	function userDetail($id){
		$dtl=$this->db->get_where("applicants", array('id'=>$id))->row_array();
		if($dtl){
			$dtl['dob']=get_date($dtl['dob']);
			$dtl['state_id']=$dtl['state_id']?$dtl['state_id']:'';
			$dtl['city_id']=$dtl['city_id']?$dtl['city_id']:'';
			$dtl['cat_id']=$dtl['cat_id']?$dtl['cat_id']:'';
			$dtl['religion_id']=$dtl['religion_id']?$dtl['religion_id']:'';
			$dtl['profilePicUrl']=$dtl['profile_pic']?UP_URLF.'profile_pics/'.$dtl['profile_pic']:'';

			$dtl['is_medical']=(int)$dtl['is_medical'];
            $dtl['neet_scorecard_file_url']=$dtl['neet_scorecard_file']?UP_URLF.'scorecards/'.$dtl['neet_scorecard_file']:'';
            
            if($dtl['lead_source_id']){
                $ls=$this->db->select("name, state_id")->get_where("lead_sources", ['id'=>$dtl['lead_source_id']])->row_array();
                $dtl['lead_source']=$ls['name'];
                $dtl['lead_source_state_id']=$ls['state_id'];
            }else{
                $dtl['lead_source']=$dtl['lead_source_id']=$dtl['lead_source_state_id']='';
            }
		}
		return $dtl;
	}

	function eduDetail($id){
		$dtl=$this->db->get_where("applicants_edu_details", array('applicant_id'=>$id))->row_array();
		if($dtl){
			$dtl['board_id_10th']=$dtl['board_id_10th']?$dtl['board_id_10th']:'';
			$dtl['marking_scheme_id_10th']=$dtl['marking_scheme_id_10th']?$dtl['marking_scheme_id_10th']:'';
			$dtl['passing_year_10th']=$dtl['passing_year_10th']?$dtl['passing_year_10th']:'';
			
			$dtl['board_id_12th']=$dtl['board_id_12th']?$dtl['board_id_12th']:'';
			$dtl['marking_scheme_id_12th']=$dtl['marking_scheme_id_12th']?$dtl['marking_scheme_id_12th']:'';
			$dtl['passing_year_12th']=$dtl['passing_year_12th']?$dtl['passing_year_12th']:'';

			$dtl['board_id_dip']=$dtl['board_id_dip']?$dtl['board_id_dip']:'';
			$dtl['marking_scheme_id_dip']=$dtl['marking_scheme_id_dip']?$dtl['marking_scheme_id_dip']:'';
			$dtl['passing_year_dip']=$dtl['passing_year_dip']?$dtl['passing_year_dip']:'';

			$dtl['university_id_ug']=$dtl['university_id_ug']?$dtl['university_id_ug']:'';
			$dtl['marking_scheme_id_ug']=$dtl['marking_scheme_id_ug']?$dtl['marking_scheme_id_ug']:'';
			$dtl['passing_year_ug']=$dtl['passing_year_ug']?$dtl['passing_year_ug']:'';

			$dtl['university_id_pg']=$dtl['university_id_pg']?$dtl['university_id_pg']:'';
			$dtl['marking_scheme_id_pg']=$dtl['marking_scheme_id_pg']?$dtl['marking_scheme_id_pg']:'';
			$dtl['passing_year_pg']=$dtl['passing_year_pg']?$dtl['passing_year_pg']:'';
		}
		return $dtl;
	}

    function getCounter($type, $dbcon=false){
        if(!$dbcon){
            $dbcon=$this->db;
        }
        while(1){
            $c=(int)$dbcon->get_where("master_data", array('datakey'=>$type))->row()->datavalue;
            $dbcon->update("master_data", array('datavalue'=>$c+1), array('datakey'=>$type));
            if(!$dbcon->affected_rows()){
                continue;
            }
            break;
        }
        return $c;
    }
	function updateLead($post, $appDtl){
		$err = FALSE;
		$this->db->trans_strict(FALSE);
        $this->db->trans_begin();
		
		try{
			$dtl=$post['dtl'];
            $dtl['id']=(int)$appDtl['applicant_id'];
            if(!$dtl['id']){
                $dtl['verified_by']='OFFLINE';
            }
			$applicant_id=$this->dba->save("applicants", replace_null($dtl));

			$eduDtl=$post['eduDtl'];
			$eduDtl['applicant_id']=$applicant_id;
			$eduId=$this->db->select("id")->get_where("applicants_edu_details", array('applicant_id'=>$eduDtl['applicant_id']))->row()->id;
			if($eduId){
				$eduDtl['id']=$eduId;
			}
			$this->dba->save("applicants_edu_details", replace_null($eduDtl));
			
            $app=$post['app'];
            $prg=$this->db->select("type_id, ac_id, discipline_id, school_id, is_medical, is_phd")->get_where("master_programs", ['id'=>$app['program_id']])->row_array();
            $appData=array(
                'id'=>(int)$appDtl['id'], 
                'applicant_id'=>$applicant_id,
                'step_completed'=>$appDtl['step_completed']<3?2:3, 
                'program_id'=>$app['program_id'], 
                'plan_id'=>$app['plan_id'],
                'ac_id'=>$prg['ac_id'], 
                'school_id'=>$prg['school_id'], 
                'discipline_id'=>$prg['discipline_id'], 
            );
            if(!$appData['id']){
                $num=$this->getCounter('application_no_count');
                $appData['application_no']=zero_format_no($num);
                $appData['step2date']=currentDT();
            }
            $this->dba->save("applications", replace_null($appData));
            
		}catch(Exception $e) {
            $err = TRUE;
            $msg = $e->getMessage();
        }
		
		if($this->db->trans_status() === FALSE) {
            $err = TRUE;
        }
		
		if ($err) {
            $this->db->trans_rollback();
			return FALSE;
        } else {
            $this->db->trans_commit();
			return TRUE;
        }
	}

	/** */
	function detail($id, $filter=true){
		$this->db->select("A.id, A.campus_id, A.applicant_id, A.application_no, A.step_completed, A.created AS leadCreated, A.updated AS leadUpdated, A.step2date, A.step3date, A.suat_status, A.step_completed, PP.id plan_id, PP.title AS plan, P.id program_id, P.title AS program, 
        AC.title AS ac, PT.title AS program_type, PP.ac_code, PP.program_code AS prgCode, PP.code AS planCode, SCH.title school_name, SCH.website school_website,
        U.name, U.email, U.mob, U.mob2, U.dob, U.gender, U.address, U.abc_id, U.is_campus_offline,U.nationality,U.city, U.relation,U.designation, U.parent_email_id, U.parent_mobile,U.parent_current_address,U.region,U.parent_country,U.awards_achievements,U.university_transfer, U.university_sponsored_student,
		U.city, U.pincode, U.verified_by, U.father_name, U.identity_proof, U.identity_proof_no,U.passport_number, U.profile_pic, U.process_by, U.lead_source_id, U.lead_source_remarks,
		U.utm_source, U.utm_campaign, U.utm_medium, U.utm_term, U.utm_content, U.utm_keyword, U.utm_placement, U.is_medical, U.neet_roll_no, U.neet_marks, U.neet_all_india_rank, U.neet_scorecard_file,U.tenth_document,U.twth_document, U.state_id,
        ED.board_10th, B10.ps_code AS ps_code_b10, M10.title AS marking_scheme_10, M10.ps_code AS ps_code_m10, ED.marks_10th, ED.passing_year_10th, 
		ED.board_12th, B12.ps_code AS ps_code_b12, M12.title AS marking_scheme_12, M12.ps_code AS ps_code_m12, ED.marks_12th, ED.passing_year_12th, 
		ED.board_dip, DIP.ps_code AS ps_code_bdip, MDIP.title AS marking_scheme_dip, MDIP.ps_code AS ps_code_mdip, ED.marks_dip, ED.passing_year_dip, 
        ED.university_ug, UUG.ps_code AS ps_code_uug, MUG.title AS marking_scheme_ug, MUG.ps_code AS ps_code_mug, ED.marks_ug, passing_year_ug, 
        ED.university_pg, UPG.ps_code AS ps_code_upg, MPG.title AS marking_scheme_pg, MPG.ps_code AS ps_code_mpg, ED.marks_pg, passing_year_pg, 
        CT.title AS cat, CT.ps_code AS ps_code_cat, RL.title AS religion, RL.ps_code AS ps_code_religion,
        LP.title AS lpage, A.payment_status, A.payment_mode, A.payment_date, A.step1_paid, A.cash_order_id, A.pay_trans_id, A.pay_link_sent, A.adm_paid_by,
        PTRANS.pay_order_id, PTRANS.txn_id, PTRANS.txn_status, PTRANS.txn_amt, CMP.title campus, AL.program_name api_program, AL.plan_name api_plan,
        SR.disposition superbot_disposition, CN.id, CN.title AS country_name, CL.code, CL.title AS student_country,CL.isd_code AS ISD_CODE, MS.id, MS.title AS state_name, MS.code")
		
		->from("applications A")
        ->join("applicants U", "U.id=A.applicant_id")
        ->join("master_campus CMP", "CMP.id=A.campus_id")
		->join("landing_pages AS LP", "LP.id=U.lpage_id")
        ->join("master_countrys AS CN", "CN.id = U.parent_country", "LEFT")
        ->join("master_countrys AS CL", "CL.code = U.country", "LEFT")
        ->join("master_states AS MS", "MS.id = U.state_id", "LEFT")
		->join("master_program_plans AS PP", "PP.id=A.plan_id", "LEFT")
		->join("master_programs AS P", "P.id=PP.program_id", "LEFT")
		->join("master_schools SCH", "SCH.id=P.school_id", "LEFT")
		->join("master_academic_careers AS AC", "AC.id=P.ac_id", "LEFT")
        ->join("master_program_types AS PT", "PT.id=P.type_id", "LEFT")
        ->join("applicants_edu_details AS ED", "ED.applicant_id=U.id", "LEFT")
        ->join("master_edu_boards AS B10", "B10.id=ED.board_id_10th", "LEFT")
        ->join("master_marking_schemes AS M10", "M10.id=ED.marking_scheme_id_10th", "LEFT")
        ->join("master_edu_boards AS B12", "B12.id=ED.board_id_12th", "LEFT")
		->join("master_marking_schemes AS M12", "M12.id=ED.marking_scheme_id_12th", "LEFT")
		->join("master_edu_boards AS DIP", "DIP.id=ED.board_id_dip", "LEFT")
        ->join("master_marking_schemes AS MDIP", "MDIP.id=ED.marking_scheme_id_dip", "LEFT")
        ->join("master_universities AS UUG", "UUG.id=ED.university_id_ug", "LEFT")
        ->join("master_marking_schemes AS MUG", "MUG.id=ED.marking_scheme_id_ug", "LEFT")
        ->join("master_universities AS UPG", "UPG.id=ED.university_id_pg", "LEFT")
        ->join("master_marking_schemes AS MPG", "MPG.id=ED.marking_scheme_id_pg", "LEFT")

        ->join("master_applicat_cats AS CT", "CT.id=U.cat_id", "LEFT")
        ->join("master_applicat_religions AS RL", "RL.id=U.religion_id", "LEFT")
		->join("pay_trans AS PTRANS", "PTRANS.id=A.pay_trans_id", "LEFT")
        ->join("api_leads AS AL", "AL.id=A.api_lead_id", "LEFT")
        ->join("superbot_response SR", "SR.id=U.superbot_resp_id", "LEFT")
		->where("A.id", $id)
		->order_by("A.updated", "DESC")->limit(1);
		
		$rs=$this->db->get()->row_array();
        //echo $this->db->last_query(); die;
		
		$dtl=[];
		if($rs){
			$rs['profilePicUrl']=$rs['profile_pic']?UP_URLF.'profile_pics/'.$rs['profile_pic']:'';
			$rs['receiptPrintUrl']=URL.'common/printReceipt/'.$rs['id'];

			$rs['payment_status']=(int)$rs['payment_status'];
			$rs['leadCreated']=get_date($rs['leadCreated'], true);
			$rs['leadUpdated']=get_date($rs['leadUpdated'], true);
			$rs['step2date']=get_date($rs['step2date'], true);
            $rs['step3date']=get_date($rs['step3date'], true);
            $rs['payment_date']=get_date($rs['payment_date'], true);
			$rs['dob']=get_date($rs['dob']);
			$rs['utm_source']=$rs['utm_source']?$rs['utm_source']:'N/A';
			$rs['mob2']=$rs['mob2']?$rs['mob2']:'N/A';
			$rs['identity_proof']=$rs['identity_proof']?$rs['identity_proof']:'N/A';
			$rs['identity_proof_no']=$rs['identity_proof_no']?$rs['identity_proof_no']:'N/A';

			$rs['utm_source']=$rs['utm_source']?$rs['utm_source']:'N/A';
			$rs['utm_campaign']=$rs['utm_campaign']?$rs['utm_campaign']:'N/A';
			$rs['utm_medium']=$rs['utm_medium']?$rs['utm_medium']:'N/A';
			$rs['utm_term']=$rs['utm_term']?$rs['utm_term']:'N/A';
			$rs['utm_content']=$rs['utm_content']?$rs['utm_content']:'N/A';
			$rs['utm_keyword']=$rs['utm_keyword']?$rs['utm_keyword']:'N/A';
			$rs['utm_placement']=$rs['utm_placement']?$rs['utm_placement']:'N/A';

			$rs['payment_status_text']='Not Paid';
			if($rs['payment_status']){
				$rs['payment_status_text']='Paid';
            }
            
            if($rs['lead_source_id']){
                $ls=$this->db->select("name, state_id")->get_where("lead_sources", ['id'=>$rs['lead_source_id']])->row_array();
                $rs['lead_source']=$ls['name'];
                $rs['lead_source_state_id']=$ls['state_id'];
            }else{
                $rs['lead_source']=$rs['lead_source_id']=$rs['lead_source_state_id']='';
            }
			
			$rs['passing_year_10th']=$rs['passing_year_10th']?$rs['passing_year_10th']:'';
			$rs['passing_year_12th']=$rs['passing_year_12th']?$rs['passing_year_12th']:'';
			$rs['passing_year_dip']=$rs['passing_year_dip']?$rs['passing_year_dip']:'';
			$rs['passing_year_ug']=$rs['passing_year_ug']?$rs['passing_year_ug']:'';
			$rs['passing_year_pg']=$rs['passing_year_pg']?$rs['passing_year_pg']:'';

			if($rs['payment_mode']=='CASH'){
				$rs['pay_order_id']=$rs['cash_order_id'];
			}
			$rs['pay_order_id']=$rs['pay_order_id']?$rs['pay_order_id']:'N/A';
			$rs['txn_id']=$rs['txn_id']?$rs['txn_id']:'N/A';
			$rs['txn_status']=$rs['txn_status']?$rs['txn_status']:'N/A';

			$rs['payTrans']=$this->db->get_where("pay_trans", array('application_id'=>$id))->result_array();
			if($rs['payTrans']){
				foreach($rs['payTrans'] as &$r){
					if($r['payment_status']=='FAIL'){
						$r['txn_date']=$r['created'];
					}
					$r['txn_date']=get_date($r['txn_date'], true);

					unset($r['created'], $r['updated'], $r['full_resp']);
				}
			}
			$rs['cashTrans']=$this->db->get_where("cash_collections", array("application_id"=>$id))->row_array();
			if($rs['cashTrans']){
				$rs['cashTrans']['usr']=$this->db->select("name")->get_where("users", array('id'=>$rs['cashTrans']['created_by']))->row()->name;
			}

			$rs['is_medical']=(int)$rs['is_medical'];
			$rs['neet_scorecard_file_url']=$rs['neet_scorecard_file']?UP_URLF.'scorecards/'.$rs['neet_scorecard_file']:'';
            
            if($rs['step_completed']==3){
                $rs['ps_app']=$this->ps_stu_status($rs['application_no']);
                if(!$rs['ps_app']){
                    $rs['ps_app']=false;
                }
            }

            $rs['login_url']=generate_login_url($rs['lpage'], $rs['mob']);
            $rs['payment_link']=generate_payment_link($rs['lpage'], $rs['mob'], $rs['id']);
            $rs['payment_link_adm']=generate_payment_link($rs['lpage'], $rs['mob'], $rs['id'], USER_ID);
            $rs['pay_link_sent']=(int)$rs['pay_link_sent'];
            $rs['adm_paid_by']=(int)$rs['adm_paid_by'];

            $rs['plan_dtl']=$this->db->get_where("master_program_plans", array('id'=>$rs['plan_id']))->row_array();
            $rs['plan_dtl']['fee_year_wise']=explode(",", $rs['plan_dtl']['fee_year_wise']);
			$rs['plan_dtl']['fee_semester_wise']=explode(",", $rs['plan_dtl']['fee_semester_wise']);
            
            if($filter){
				$lvOpt=$this->dataset->detail(0, USER_ID);
				$rs=filterLeadData($rs, $lvOpt, TRUE);
				$dtl=$rs[0];
			}else{
				$dtl=$rs;
			}
		}
		return $dtl;
    }
    
    function ps_stu_status($system_id=''){
        if($system_id){
            $dtl=$this->db->select("EMPLID system_id, ADM_APPL_NBR application_no, DESCR1 application_status, status")->where(['EMPLID'=>$system_id])->limit(1)->get("ps_stu_status")->row_array();
            if($dtl){
                if($dtl['status']=='ADM_OFFERED'){
                    $dtl['status']="OFFERED";
                }elseif($dtl['status']=='ADM_FINAL'){
                    $dtl['status']="FINAL";
                }elseif($dtl['ps_status']=='ADM_WITHDRAW'){
                    $dtl['ps_status']="WITHDRAW";
                }else{
                    $dtl['status']="N/A";
                }
            }
            return $dtl;
        }
        $rs=$this->db->select("EMPLID system_id, ADM_APPL_NBR application_no, DESCR1 application_status, status")->get("ps_stu_status")->result_array();
        foreach($rs as &$r){
            if($r['status']=='ADM_OFFERED'){
                $r['status']="OFFERED";
            }elseif($r['status']=='ADM_FINAL'){
                $r['status']="FINAL";
            }elseif($r['ps_status']=='ADM_WITHDRAW'){
                $r['ps_status']="WITHDRAW";
            }else{
                $r['status']="N/A";
            }
        }
        return group_array($rs, 'system_id');
    }

	function coupans($user_id, $plan_id=0, $program_id=0){
		$lpage_id=$this->db->select()->get_where("applicants", array('id'=>$user_id))->row()->lpage_id;
		$res=$this->db->select("coupan_id")->get_where("coupans_in_use", array('plan_id'=>$plan_id))->result_array();
		if(!$res){
			$res=$this->db->select("coupan_id")->get_where("coupans_in_use", array('program_id'=>$program_id))->result_array();
		}
		if(!$res){
			$res=$this->db->select("coupan_id")->get_where("coupans_in_use", array('lpage_id'=>$lpage_id))->result_array();
		}

		$rs=[];
		if($res){
			$cids=[];
			foreach($res as $r){
				$cids[]=$r['coupan_id'];
			}
			$this->db->where(array('status'=>1, 'expiry_date >='=>date('Y-m-d')))->where_in("id", $cids);
			$rs=$this->db->select("id, title, amt, description")->from("master_coupans")->order_by("disp_odr")->get()->result_array();
			foreach($rs as &$r){
				$r['amt']=(float)$r['amt'];
			}
		}

		return $rs;
	}

	function applicationDtl($appId=0){
        $r=$this->db->select("A.id, A.campus_id, A.applicant_id, A.application_no, A.step_completed, A.payment_status, A.payment_date, A.payment_mode, A.fee, A.coupan_used, 
                              A.coupan_amt, A.pay_link_sent, A.adm_paid_by, A.created, P.ac_id, P.id AS program_id, A.plan_id, PP.title AS plan, PP.fee AS planAppFee, P.fee AS prgAppFee, P.title AS program, 
                              P.image AS progImage, P.brochure AS progBrochure, AL.program_name api_program, AL.plan_name api_plan")
			->from("applications AS A")
			->join("master_program_plans AS PP", "A.plan_id=PP.id", "LEFT")
			->join("master_programs AS P", "PP.program_id=P.id", "LEFT")
			->join("api_leads AS AL", "AL.id=A.api_lead_id", "LEFT")
			->where(array('A.id'=>$appId))
			->get()->row_array();
		if($r){
			$r['progImageUrl']=$r['progImage']?UP_URLF.'programs_images/'.$r['progImage']:'';
			$r['progBrochureUrl']=$r['progBrochure']?UP_URLF.'brochure/'.$r['progBrochure']:'';
			$r['progBrochureDwnUrl']=$r['progBrochure']?(URL.'common/downloadFile/'.encode(UP_PATHF.'brochure/'.$r['progBrochure'])):'';
            $r['receiptDownloadUrl']=URL.'common/downloadReceipt/'.$appId;
            $r['receiptPrintUrl']=URL.'common/printReceipt/'.$appId;
			$r['step_completed']=(int)$r['step_completed'];
			
			if($r['step_completed']==3){
				$r['fee']=(float)$r['fee'];
				$r['coupan_amt']=(float)$r['coupan_amt'];
			}else{
				if((float)$r['planAppFee']){
					$r['fee']=(float)$r['planAppFee'];
				}else{
					$r['fee']=(float)$r['prgAppFee'];
				}
				$r['coupan_used']='';
				$r['coupan_amt']=0;
			}
            $r['created']=get_date($r['created']);
            
            $udtl=$this->db->select("U.mob, U.gender, L.instant_fee, L.male_fee, L.female_fee, L.other_fee, L.title lpage")->from("applicants U")->join("landing_pages L", "L.id=U.lpage_id")->where(['U.id'=>$r['applicant_id']])->get()->row_array();
            $r['instant_fee']=(int)$udtl['instant_fee'];
            $r['male_fee']=(int)$udtl['male_fee'];
            $r['female_fee']=(int)$udtl['female_fee'];
            $r['other_fee']=(int)$udtl['other_fee'];

            if($udtl['gender']==='Male' && $r['male_fee']>0){
                $r['fee']=$r['male_fee'];
            }
            if($udtl['gender']==='Female' && $r['female_fee']>0){
                $r['fee']=$r['female_fee'];
            }
            if($udtl['gender']==='Other' && $r['other_fee']>0){
                $r['fee']=$r['other_fee'];
            }

            $r['netAmt']=($r['fee']-$r['coupan_amt']);
            
            $r['payment_link']=generate_payment_link($udtl['lpage'], $udtl['mob'], $r['id']);
            $r['payment_link_adm']=generate_payment_link($udtl['lpage'], $udtl['mob'], $r['id'], USER_ID);
            $r['pay_link_sent']=(int)$r['pay_link_sent'];
            $r['adm_paid_by']=(int)$r['adm_paid_by'];
            $r['payment_status']=(int)$r['payment_status'];

			unset($r['prgAppFee'], $r['planAppFee']);
		}
		return $r;
	}


	/** Follow-ups */
	function remarks_cats(){
		return $this->db->select('id,title')->from('master_lead_remarks_cats')->order_by('disp_odr')->get()->result_array();
	}
	function remarks(){
		$rs=$this->db->select("id, cat_id, title")->from("master_lead_remarks")->where("status",1)->order_by("cat_id")->order_by("disp_odr")->get()->result_array();
		foreach($rs as &$r){
			$r['subremarks']=$this->db->select("title")->order_by("disp_odr")->get_where("master_lead_subremarks", array('remarks_id'=>$r['id']))->result_array();
            if(!$r['subremarks']){
                $r['subremarks']=[];
            }
        }
		return $rs;
	}

    function get_follow_ups($id){
        $rs=$this->db->select("AR.id, AR.application_id, AR.is_after_paid, MR.title remarks, AR.subremarks, AR.feedback, AR.comm_mode, AR.created, U.name usr, U.type usr_type")
            ->from("applications_remarks AR")
            ->join("master_lead_remarks MR", "AR.remarks_id=MR.id")
            ->join("users U", "AR.created_by=U.id", "LEFT")
            ->where("AR.application_id", $id)
            ->order_by("AR.id", "DESC")
            ->get()->result_array();
        if($rs){
            foreach($rs as &$r){
                $r['created']=get_date($r['created'], true);
                if(!$r['usr']){
                    $r['usr']="--User Deleted--";
                }else{
                    $r['usr_type']=user_types($r['usr_type']);
                }
            }
        }
        return $rs;
    }
	function follow_up_detail($id=0){
		$rs['dtl']=$this->db->select("AR.id, AR.application_id, AR.remarks_id, AR.subremarks, AR.feedback, AR.comm_mode")->from("applications_remarks AR")->where("AR.id", $id)->get()->row_array();
		if($rs['dtl']){
			$rs['dtl']['cat_id']=$this->db->select("cat_id")->get_where("master_lead_remarks", ['id'=>$rs['dtl']['remarks_id']])->row()->cat_id;
            $rs['dtl']['next_followup']=$this->db->select("next_followup")->get_where("applications", ['id'=>$rs['dtl']['application_id']])->row()->next_followup;
            $rs['dtl']['next_followup']=get_date($rs['dtl']['next_followup']);
			$rs['subremarks']=$this->db->select("title")->order_by("disp_odr")->get_where("master_lead_subremarks", array('remarks_id'=>$rs['dtl']['remarks_id']))->result_array();
		}
		return $rs;
	}
	function delete_follow_up($id){
		$this->db->db_debug=FALSE;
		return $this->db->delete("applications_remarks", array('id'=>$id));
    }

    /** Emails */
    function get_sent_emails($to_email, $short=false, $is_letter=0){
        $post=$this->input->post();
        if(!$post['is_letter']){
            $post['is_letter']=$is_letter;
        }
        if($post['is_letter']){
            $this->db->where("is_letter", 1);
        }else{
            $this->db->where("is_letter", 0);
        }
        $rs=$this->db->select("e.subject, e.body, e.attachment, e.created, u.name usr, u.type usr_type")
            ->from("sent_emails e")
            ->join("users u", "u.id=e.created_by")
            ->where(['to_email'=>$to_email])
            ->order_by("e.id", "desc")
            ->limit(20)
            ->get()->result_array();

        foreach($rs as &$r){
            $r['usr_type']=user_types($r['usr_type']);
            $r['created']=get_date($r['created'], true);
            if($short){
                $r['body']=str_short($r['body'], 100);
                unset($r['attachment']);
            }else{
                $r['attachment_urls']=[];
                if($r['attachment']){
                    $attachments=explode(",", $r['attachment']);
                    foreach($attachments as $a){
                        $r['attachment_urls'][]=UP_URLF.'email_attachments/'.$a;
                    }
                }
            }
        }

        return $rs;
    }

    function get_sent_whatsapp($app_id){
        $rs=$this->db->select("e.msg, e.created, u.name usr, u.type usr_type")
            ->from("sent_whatsapp e")
            ->join("users u", "u.id=e.created_by")
            ->where(['e.app_id'=>$app_id])
            ->order_by("e.id", "desc")
            ->limit(50)
            ->get()->result_array();

        foreach($rs as &$r){
            $r['usr_type']=user_types($r['usr_type']);
            $r['created']=get_date($r['created'], true);
        }

        return $rs;
    }

    /** SMS */
    function get_sent_sms($app_id){
        $rs=$this->db->select("s.*, u.name usr, u.type usr_type")
            ->from("followup_sent_sms s")
            ->join("users u", "u.id=s.created_by")
            ->where(['s.application_id'=>$app_id])
            ->order_by("s.id", "desc")
            ->limit(20)
            ->get()->result_array();

        foreach($rs as &$r){
            $r['usr_type']=user_types($r['usr_type']);
            $r['created']=get_date($r['created'], true);
        }

        return $rs;
    }

    /** Assign */
    function application_assign_history($app_id){
        $res=$this->db->select("H.id, H.assigned_to, H.remarks, H.created, U.name usr, U.type usr_type, AU.name assign_to, AU.type ausr_type")
        ->from("application_assign_history H")
        ->join("users U", "U.id=H.created_by")
        ->join("users AU", "AU.id=H.assigned_to")
        ->where(['H.application_id'=>$app_id])
        ->order_by("H.id")
        ->get()->result_array();

        foreach($res as &$r){
            $r['usr_type']=user_types($r['usr_type']);
            $r['ausr_type']=user_types($r['ausr_type']);
            $r['created']=get_date($r['created'], true);
        }
        return $res;
    }

    function visitHistory($applicant_id){
        $rs=$this->db->order_by("id", "desc")->get_where("applicants_visit_history", ['applicant_id'=>$applicant_id])->result_array();
        if($rs){
            foreach($rs as &$r){
                $r['is_paid']=(int)$r['is_paid'];
                $r['created']=get_date($r['created'], true);
                $r['is_paid']=$r['is_paid']?'YES':'NO';
                unset($r['id'], $r['applicant_id']);
            }
        }else{
            $rs=[];
        }
        return $rs;
    }

    /** Lead from Old to New */
    function leadFromOldToNew($app_id){
        $curdb=$this->load->database("curdb", true);
        $curdb->query("SET sql_mode=''");
        $curdb->query("SET foreign_key_checks=0");

        $res=['success'=>false, 'msg'=>'Error!'];

        $err=FALSE;
		$this->db->trans_strict(FALSE);
        $this->db->trans_begin();
		
		try{
            $a=$this->db->get_where("applications", ['id'=>$app_id])->row_array();
            if(!$a){
                throw new Exception("Error 1!");
            }
            $applicant_id=$a['applicant_id'];

            $b=$this->db->get_where("applicants", ['id'=>$applicant_id])->row_array();
            if(!$b){
                throw new Exception("Error 2!");
            }

            $c=$this->db->get_where("admin_remarks", ['application_id'=>$app_id])->result_array();
            $d=$this->db->get_where("adm_form", ['app_id'=>$app_id])->row_array();
            $e=$this->db->get_where("applicants_edu_details", ['applicant_id'=>$applicant_id])->row_array();
            $f=$this->db->get_where("applicants_visit_history", ['applicant_id'=>$applicant_id])->result_array();
            $g=$this->db->get_where("applications_remarks", ['application_id'=>$app_id])->result_array();
            $h=$this->db->get_where("application_assign_history", ['application_id'=>$app_id])->result_array();
            $i=$this->db->get_where("pay_trans", ['application_id'=>$app_id])->result_array();
            $j=$this->db->get_where("cash_collections", ['application_id'=>$app_id])->result_array();

            unset($b['id']);
            $b['created']=currentDT();
            $b['updated']=currentDT();
            $b['created_by']=USER_ID;
            $b['updated_by']=USER_ID;
            $curdb->insert("applicants", $b);
            $newApplicantId=$curdb->insert_id();

            unset($a['id']);
            $a['step2date']=currentDT();
            $a['step3date']=currentDT();
            $a['created']=currentDT();
            $a['updated']=currentDT();
            $a['created_by']=USER_ID;
            $a['updated_by']=USER_ID;
            $a['applicant_id']=$newApplicantId;
            $num=$this->getCounter('application_no_count', $curdb);
            $a['application_no']=zero_format_no($num);
            $curdb->insert("applications", $a);
            $newAppId=$curdb->insert_id();

            if($c){
                foreach($c as $r){
                    unset($r['id']);
                    $r['application_id']=$newAppId;
                    $curdb->insert("applications", $r);
                }
            }
            if($d){
                unset($d['id']);
                $d['app_id']=$newAppId;
                $curdb->insert("adm_form", $d);
            }
            if($e){
                unset($e['id']);
                $e['applicant_id']=$newApplicantId;
                $curdb->insert("applicants_edu_details", $e);
            }
            if($f){
                foreach($f as $r){
                    unset($r['id']);
                    $r['applicant_id']=$newApplicantId;
                    $curdb->insert("applicants_visit_history", $r);
                }
            }
            if($g){
                foreach($g as $r){
                    unset($r['id']);
                    $r['application_id']=$newAppId;
                    $curdb->insert("applications_remarks", $r);
                }
            }
            if($h){
                foreach($h as $r){
                    unset($r['id']);
                    $r['application_id']=$newAppId;
                    $curdb->insert("application_assign_history", $r);
                }
            }
            if($i){
                foreach($i as $r){
                    unset($r['id']);
                    $r['application_id']=$newAppId;
                    $r['applicant_id']=$newApplicantId;
                    $curdb->insert("pay_trans", $r);
                    $trans_id=$curdb->insert_id();
                    $curdb->update("applications", ['pay_trans_id'=>$trans_id], ['id'=>$newAppId]);
                }
            }
            if($j){
                foreach($j as $r){
                    unset($r['id']);
                    $r['application_id']=$newAppId;
                    $curdb->insert("cash_collections", $r);
                }
            }


            /** Removing */
            $this->db->query("SET foreign_key_checks=0");
            $this->db->delete("applications", ['id'=>$app_id]);
            $this->db->delete("applicants", ['id'=>$applicant_id]);
            $c=$this->db->delete("admin_remarks", ['application_id'=>$app_id]);
            $d=$this->db->delete("adm_form", ['app_id'=>$app_id]);
            $e=$this->db->delete("applicants_edu_details", ['applicant_id'=>$applicant_id]);
            $f=$this->db->delete("applicants_visit_history", ['applicant_id'=>$applicant_id]);
            $g=$this->db->delete("applications_remarks", ['application_id'=>$app_id]);
            $h=$this->db->delete("application_assign_history", ['application_id'=>$app_id]);
            $i=$this->db->delete("pay_trans", ['application_id'=>$app_id]);
            $j=$this->db->delete("cash_collections", ['application_id'=>$app_id]);
            /** \ */

            /** Send Email */
            $this->common->sendSystemIdGenMsg($newAppId, $curdb);
            /** / */
            
            $res['success']=true;
            $res['msg']="Successfully moved to current year";

		}catch(Exception $e){
            $err=TRUE;
            $res['msg']=$e->getMessage();
        }
		
		if($this->db->trans_status() === FALSE) {
            $err=TRUE;
        }
		
		if($err){
            $this->db->trans_rollback();
			return FALSE;
        }else{
            $this->db->trans_commit();
			return $res;
        }
    }
    function susatExamStatus($id) 
    {
        $data = $this->db->get_where("applications", array('id'=>$id))->row_array();
        return $data;
    }
    function getIsdCodeByCode($country_code)
    {
        $data = $this->db->get_where("master_countrys", array('code'=>$country_code))->row_array();
        return $data;
    }
}

//End of file

Kontol Shell Bypass