%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
<?php class Dataset_model extends CI_Model { function lists(){ if(USER_TYPE == 'CALLER_MANAGER' || USER_TYPE == 'CALLER' || USER_TYPE == 'COUNSELOR'){ $this->db->where("D.created_by", USER_ID); } $this->db->where("D.is_hidden", 0); $qs=trim_array($this->input->get()); if($qs['k']){ $this->db->group_start() ->like('D.title', $qs['k']) ->group_end(); } $this->db->select("D.id, D.title, D.created, D.expiry_date, D.lead_date_from, D.lead_date_to, D.is_campaign, D.is_webinar, D.leads_count, U.name usr")->from("leads_data_sets D")->join("users U", "D.created_by=U.id")->order_by("D.id", "DESC"); $rs=$this->dba->pagedRows($qs['p'], 50, 5); foreach($rs['result'] as &$r){ $r['created'] =get_date($r['created'], true); $r['expiry_date'] =get_date($r['expiry_date']); $r['lead_date_from'] =get_date($r['lead_date_from']); $r['lead_date_to'] =get_date($r['lead_date_to']); $r['is_campaign'] =(int)$r['is_campaign']; $r['is_webinar'] =(int)$r['is_webinar']; $lc=$this->common->data_set_leads_count($r['id']); $r['leads_count']=$lc['n']; $r['filters_used']=$lc['filters']; //$r['leads_count']=(int)$r['leads_count']; $r['splitDtl']=$this->splitDtl($r['id']); } return $rs; } function all_lists($campaign_only=false, $webinar_only=false, $caller_only=false){ if(USER_TYPE == 'CALLER_MANAGER' || USER_TYPE == 'CALLER'){ $this->db->where("created_by", USER_ID); } if($campaign_only){ $cond=['is_campaign'=>1]; }else if($webinar_only){ $cond=['is_webinar'=>1]; }else if($caller_only){ $cond=['is_caller'=>1]; }else{ $cond=['is_hidden'=>0, 'is_campaign'=>0]; } $rs=$this->db->select("id, title, DATE_FORMAT(created, '%d %b %Y') created, leads_count", false)->from("leads_data_sets")->where($cond)->order_by("id", "DESC")->get()->result_array(); //echo $this->db->last_query(); foreach($rs as &$r){ if(!$campaign_only && !$webinar_only){ //$lc=$this->common->data_set_leads_count($r['id']); //$r['leads_count']=$lc['n']; $r['leads_count']=(int)$r['leads_count']; $r['filters_used']=$lc['filters']; } } return $rs; } function detail($id=0, $user_id=0, $extraDtl=false){ if(!$id){ $id=$this->db->select("data_set_id")->get_where("users", array('id'=>$user_id))->row()->data_set_id; } $dtl=$this->db->get_where("leads_data_sets", array('id'=>$id))->row_array(); if($dtl){ $dtl['is_hidden']=(int)$dtl['is_hidden']; $dtl['expiry_date'] =get_date($dtl['expiry_date']); $dtl['lead_date_from'] =get_date($dtl['lead_date_from']); $dtl['lead_date_to'] =get_date($dtl['lead_date_to']); $dtl['cities_serialized']=$dtl['cities']; $dtl['states'] =$dtl['states']?explode(",", $dtl['states']):[]; $dtl['cities'] =$dtl['cities']?unserialize($dtl['cities']):[]; $dtl['acs'] =$dtl['acs']?explode(",", $dtl['acs']):[]; $dtl['disciplines'] =$dtl['disciplines']?explode(",", $dtl['disciplines']):[]; $dtl['programs'] =$dtl['programs']?explode(",", $dtl['programs']):[]; $dtl['plans'] =$dtl['plans']?unserialize($dtl['plans']):[]; $dtl['fields'] =$dtl['fields']?explode(",", $dtl['fields']):[]; $dtl['utm_sources'] =$dtl['utm_sources']?explode(",", $dtl['utm_sources']):[]; $dtl['steps'] =strlen($dtl['steps'])?explode(",", $dtl['steps']):[]; $dtl['payment_modes'] =$dtl['payment_modes']?explode(",", $dtl['payment_modes']):[]; $dtl['ps_app_status'] =$dtl['ps_app_status']?explode(",", $dtl['ps_app_status']):[]; $dtl['schools'] =$dtl['schools']?explode(",", $dtl['schools']):[]; $dtl['lead_sources'] =$dtl['lead_sources']?explode(",", $dtl['lead_sources']):[]; $dtl['remarks_ids'] =$dtl['remarks_ids']?explode(",", $dtl['remarks_ids']):[]; $dtl['encrypt_mob'] =(int)$dtl['encrypt_mob']; $dtl['encrypt_email'] =(int)$dtl['encrypt_email']; $dtl['encrypt_txnid'] =(int)$dtl['encrypt_txnid']; $dtl['payment_failed'] =$dtl['payment_failed']?$dtl['payment_failed']:''; $dtl['superbot_disposition'] =$dtl['superbot_disposition']?explode(",", $dtl['superbot_disposition']):[]; $dtl['for']=''; if($dtl['is_campaign']){ $dtl['for']='C'; } if($dtl['is_webinar']){ $dtl['for']='W'; } if($extraDtl){ $lc=$this->common->data_set_leads_count(0, $dtl); $dtl['leads_count']=$lc['n']; $dtl['filters_used']=$lc['filters']; $dtl['splitDtl']=$this->splitDtl($dtl['id']); } } return $dtl; } function combineUsersDatasets($user_ids=[]){ $dsDtl=[]; $allDs=[]; foreach($user_ids as $user_id){ $allDs[]=$this->detail(0, $user_id); } foreach($allDs as $i=>$ds){ if($i===0){ $dsDtl=$ds; }else{ foreach($ds as $k=>$v){ if(in_array($k, ['expiry_date', 'lead_date_from', 'lead_date_to', 'followup_done', 'online_offline', 'med_phd', 'show_campus_offline_leads'])){ unset($dsDtl[$k]); //For now RO and CAMPUS users }else{ if(is_array($v)){ if($dsDtl[$k]){ if($v){ foreach($v as $val){ if(!in_array($val, $dsDtl[$k])){ $dsDtl[$k][]=$val; } } }else{ $dsDtl[$k]=[]; } } } } } } } return $dsDtl; } function splitDtl($dataset_id){ $rs=$this->db->select("sd.id, u.name, ds.expiry_date, sd.no_of_leads, sd.created, u1.name created_by") ->from("data_set_split_dtl sd") ->join("leads_data_sets ds", "sd.data_set_id=ds.id") ->join("users u", "u.id=sd.user_id") ->join("users u1", "sd.created_by=u1.id") ->where("sd.data_set_id", $dataset_id) ->order_by("sd.id") ->get() ->result_array(); $rs=$rs?$rs:[]; foreach($rs as &$r){ $r['created']=get_date($r['created'], true); $r['expired']=0; if(strtotime($r['expiry_date']."23:59:59")<time()){ $r['expired']=1; } $r['expiry_date']=get_date($r['expiry_date']); } return $rs; } function splitDatasetHistory($user_id){ $rs=$this->db->select("sd.id, ds.title dataset, ds.expiry_date, sd.no_of_leads, sd.created, u.name created_by") ->from("data_set_split_dtl_history sd") ->join("leads_data_sets ds", "sd.data_set_id=ds.id") ->join("users u", "sd.created_by=u.id") ->where("sd.user_id", $user_id) ->order_by("sd.id", "DESC") ->get() ->result_array(); $rs=$rs?$rs:[]; foreach($rs as &$r){ $r['created']=get_date($r['created'], true); $r['expired']=0; if(strtotime($r['expiry_date']."23:59:59")<time()){ $r['expired']=1; } $r['expiry_date']=get_date($r['expiry_date']); } return $rs; } function delete($id){ $this->db->db_debug=FALSE; return $this->db->delete("leads_data_sets", array('id'=>$id)); } function cities($state_id, $id=0){ $cities=$this->common->cities($state_id); $dscities=$this->db->get_where("leads_data_sets", array('id'=>$id))->row()->cities; $dscities=$dscities?unserialize($dscities):[]; if($dscities && isset($dscities[$state_id])){ $dscities=$dscities[$state_id]; } foreach($cities as &$r){ $r['isadded']=in_array($r['id'], $dscities)?true:false; unset($r['pincode']); } return $cities; } function plans($program_id, $id=0){ $plans=$this->common->plans($program_id); $dsplans=$this->db->get_where("leads_data_sets", array('id'=>$id))->row()->plans; $dsplans=$dsplans?unserialize($dsplans):[]; if($dsplans && isset($dsplans[$program_id])){ $dsplans=$dsplans[$program_id]; } foreach($plans as &$r){ $r['isadded']=in_array($r['id'], $dsplans)?true:false; } return $plans; } function saveDataset($data, $user_id=0){ $err=FALSE; $this->db->trans_strict(FALSE); $this->db->trans_begin(); try{ $data_set_id=$this->dba->save("leads_data_sets", $data); if($user_id){ $this->dba->save("users", ['id'=>$user_id, 'data_set_id'=>$data_set_id]); } $this->db->delete("data_set_leads", ['data_set_id'=>$data_set_id]); $ds_dtl=$this->detail($data_set_id); $this->common->set_data_set_cond($ds_dtl, false, false, '', true); $leads=$this->db->select("A.id") ->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") ->get()->result_array(); //pr($this->db->last_query()); //die; $leadsArr=[]; foreach($leads as $r){ $leadsArr[]=[ 'data_set_id'=>$data_set_id, 'application_id'=>$r['id'] ]; } if($leadsArr){ $this->db->insert_batch("data_set_leads", $leadsArr); } $this->dba->save("leads_data_sets", ['id'=>$data_set_id, 'leads_count'=>count($leadsArr)]); }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 splitDataset($data){ $ds_dtl=$this->dataset->detail($data['ds_id']); $this->common->set_data_set_cond($ds_dtl, false, false); $leads=$this->db->select("A.id")->from("applications A")->join("applicants U", "A.applicant_id=U.id")->get()->result_array(); $leadC=0; //pr($this->db->last_query()); //die; $err=FALSE; $this->db->trans_strict(FALSE); $this->db->trans_begin(); try{ if(!$ds_dtl['expiry_date']){ $res['success']=false; $res['msg']="This dataset has no expiry date so it can not be splited!"; json_data($res); } $this->db->where(['type'=>'CALLER', 'data_set_id'=>$data['ds_id']])->update("users", ['data_set_id'=>0]); $this->db->delete("data_set_split_dtl", ['data_set_id'=>$data['ds_id']]); $this->db->delete("data_set_split_leads", ['data_set_id'=>$data['ds_id']]); $dsid=(int)$data['ds_id']; $dt=date('Y-m-d'); foreach($data['callers'] as $c){ //$this->db->delete("data_set_split_dtl", ['user_id'=>$c['id']]); //$this->db->delete("data_set_split_leads", ['user_id'=>$c['id']]); $q="DELETE dsl FROM data_set_split_leads dsl JOIN leads_data_sets lds ON lds.id=dsl.data_set_id WHERE dsl.user_id='{$c['id']}' AND lds.expiry_date<'$dt'"; $this->db->query($q); $d=['id'=>$c['id'], 'data_set_id'=>$data['ds_id']]; $this->dba->save("users", $d); $d=['user_id'=>$c['id'], 'data_set_id'=>$data['ds_id'], 'no_of_leads'=>$c['no_of_leads']]; $this->dba->save("data_set_split_dtl", $d); $userLeads=[]; for($i=1; $i<=$c['no_of_leads']; $i++){ $userLeads[]=[ 'data_set_id'=>$data['ds_id'], 'user_id'=>$c['id'], 'application_id'=>$leads[$leadC]['id'], ]; $this->db->delete("data_set_split_leads", ['application_id'=>$leads[$leadC]['id']]); //'user_id'=>$c['id'], $leadC++; } if($userLeads){ $this->db->insert_batch("data_set_split_leads", $userLeads); } unset($userLeads); } }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 callerLeadsCount($user_id){ $n=(int)$this->db->select("COUNT(1) n", false) ->from("data_set_split_leads SD") ->join("leads_data_sets DS", "SD.data_set_id=DS.id") ->where(['SD.user_id'=>$user_id, 'DS.expiry_date>='=>date('Y-m-d')]) ->get() ->row("n"); return $n; } function dataset_leads($id){ $ds_dtl=$this->dataset->detail($id); $this->common->set_data_set_cond($ds_dtl, true, false); $rs=$this->db->select("A.id, A.application_no, A.step_completed, A.created, A.plan_id, P.title program, U.lpage_id, U.verified_by, U.state_id, U.name, U.email, U.mob, U.utm_source", false) ->from("applications A") ->join("applicants U", "A.applicant_id=U.id") ->join("master_programs P", "P.id=A.program_id", "LEFT") ->join("ps_stu_status PSS", "PSS.EMPLID=A.application_no", "LEFT") ->get()->result_array(); if($rs){ $md=$this->common->master_data_for_leads(); foreach($rs as &$r){ $r['state'] =$md['states'][$r['state_id']]; $r['lpage'] =$md['lpages'][$r['lpage_id']]; $r['plan'] =$md['plans'][$r['plan_id']]; $r['login_url']=generate_login_url($r['lpage'], $r['mob']); unset($r['state_id'], $r['lpage_id'], $r['plan_id']); } } return $rs; } } //End of file