dialer.blade_150217.php 12 KB
<?php
use App\Jobs\KHRMSLib;
use App\Models\CRMCall;

$client=Input::get("client","");
$prevData=Input::get("prev");
			$wakka=new KHRMSLib();
			$dispoclassarr=array('NC'=>array(0,array()),'CC'=>array(0,array()),'CB'=>array(0,array()),'NA'=>array(0,array()));
			
			$dataSelect = array('0'=>'MTD','1'=>'YTD');

			$owclientstr=array();
			$oclientlst=$wakka->clientsOwnerRWAccess();
			if(!empty($oclientlst))foreach($oclientlst as $tclnt)if($tclnt!="")
			{
				$owclientstr[]="'$tclnt'";
				if($client=="")$client=$tclnt;
			}
			if(!empty($owclientstr))$owclientstr="and client in (".implode(",",$owclientstr).")";else $owclientstr="";
			if($client!="")$owclientstr="and client='$client'";
			
			
			$roclientstr=array();$didlinesstr=array();if(Auth::user()->exten!="")$didlinesstr[]=Auth::user()->exten;
			$roclientlst=$wakka->clientsReadAccess();
			if(!empty($roclientlst))foreach($roclientlst as $tclnt)if($tclnt!="")
			{
				$roclientstr[]="'$tclnt'";
				if($client=="")$client=$tclnt;
				
				$mastersdata=$wakka->getCompanyMaster($tclnt);
				if(!empty($mastersdata["DialerDID"]))$didlinesstr[]=$mastersdata["DialerDID"];
				

				if(empty($mastersdata['dialerDispoList']))$mastersdata['dialerDispoList']=$wakka->HRCoreVars['dialerDispoList'];
				
				$dispoarr=explode("~",$mastersdata['dialerDispoList']);
				foreach($dispoarr as $dispo)
				{
					if(!empty($dispo))
					{
						$dispoprts=explode("|",$dispo);
						if(sizeof($dispoprts)>=3)
						{
							if(isset($dispoclassarr[$dispoprts[0]]))
							{
								$dispoclassarr[$dispoprts[0]][1][]=$dispoprts[1];
							}
						}
					}
				}
			}
			foreach($didlinesstr as $k=>$dids)
			{
				$didarr=explode(":",$dids);
				$didlinesstr[$k]=$didarr[0];
			}
			
			if(!empty($roclientstr))$roclientstr="and client in (".implode(",",$roclientstr).")";else $roclientstr="";
			if($client!="")$roclientstr="and client='$client'";
			
			
			$currentstatuses=$wakka->LoadAll("select distinct currentstatus from records where currentstatus!='' $owclientstr");
			$legalstatuses=$wakka->LoadAll("select distinct legalstatus from records where legalstatus!='' $owclientstr");
			
			$dispoarr=$wakka->LoadAll("select count(*) as cnt,currentstatus,legalstatus,dialer_status from records where 1=1 $owclientstr group by currentstatus,legalstatus,dialer_status");
		

			if($prevData!='YTD')	
			{
			$TotalData=$wakka->getCount("records","status IN ('New', 'Called') $owclientstr");
			$NotCalled=$wakka->getCount("records","status='New' $owclientstr");
			$TotalCalled=$wakka->getCount("records","status='Called' $owclientstr");
			$Priority=$wakka->getCount("records","status='Priority' $owclientstr");
			$Flagged=$wakka->getCount("records","dialer_flag='VIP' $owclientstr");
			$NotCalledFlagged=$wakka->getCount("records"," priority='VIP' $owclientstr");
			}
			else
			{
			$TotalData=$wakka->getCount("records","old_status IN ('New', 'Called') $owclientstr");
                        $NotCalled=$wakka->getCount("records","old_status='New' $owclientstr");
                        $TotalCalled=$wakka->getCount("records","old_status='Called' $owclientstr");
                        $Priority=$wakka->getCount("records","status='Priority' $owclientstr");
                        $Flagged=$wakka->getCount("records","dialer_flag='VIP' $owclientstr");
                        $NotCalledFlagged=$wakka->getCount("records"," priority='VIP' $owclientstr");
			}
			
			$MissedCalls=0;
				if(Auth::user()->id!='92')
				{

				$mc=CRMCall::where('userstatus','=','InboundDROP')->where('created_at','>',date('Y-m-d H:i:s',time()-(7*24*60*60)));
				$mc=$mc->where(function ($query) use($roclientlst,$didlinesstr){
					$query->orWhereIn('client',$roclientlst)->orWhereIn('did',$didlinesstr);
				});
				$mc=$mc->groupBy('number')->get();

				foreach($mc as $key=>$tcall)
				{
					$lcall=CRMCall::where('number','=',$tcall->number)->orderBy('id','DESC')->first();
					
					if($lcall->userstatus=="InboundDROP")
					{
						if($tcall->crm_id>0)
						{
							$rec=$wakka->getPersons("id=$tcall->crm_id")[0];
							if($rec['dialer_status']=="InboundDROP")$MissedCalls++;
						}
						else $MissedCalls++;
					}
				}

				}else{

				$newdidlinesstr='';

				function searchFor($number, $array){
                                foreach ($array as $key => $value) {
                                        if($value->number==$number)
                                                $numArr[]=$value;
                                }
                                return $numArr;
                                }

				 //select did from Array
                                if($didlinesstr)
                                    $newdidlinesstr = $didlinesstr[0];
				
				$mc=CRMCall::where('userstatus','=','InboundDROP')->where('created_at','>',date('Y-m-d H:i:s',time()-(7*24*60*60)));
				$mc=$mc->where(function ($query) use($roclientlst,$didlinesstr){
					$query->orWhereIn('client',$roclientlst)->orWhereIn('did',$didlinesstr);
				});
				$mcArray = CRMCall::orWhereIn('client',$roclientlst)->orWhere('did','like','%'.$newdidlinesstr.'%')->orderBy('id','ASC')->get();
				$mc=$mc->groupBy('number')->get();

				foreach($mc as $tcall)
				{
					/*$lcall=CRMCall::where('number','=',$tcall->number)->orderBy('id','DESC')->first();*/
					$numArray=searchFor($tcall->number, $mcArray);

					$lcall = end($numArray);
					
					if($lcall->userstatus=="InboundDROP")
					{
						if($tcall->crm_id>0)
						{
							$rec=$wakka->getPersons("id=$tcall->crm_id")[0];
							if($rec['dialer_status']=="InboundDROP")$MissedCalls++;
						}
						else $MissedCalls++;
					}
				}			

			}//check - else close
			
			$callstoday=CRMCall::where("created_at",">=",date("Y-m-d 00:00:00"))->where("user_id","=",Auth::user()->id)->count();
			$callsmonth=CRMCall::where("created_at",">=",date("Y-m-01 00:00:00"))->where("user_id","=",Auth::user()->id)->count();


			$recstoday=$wakka->getCount("records","dialer_lastcall>='".date("Y-m-d 00:00:00")."' $owclientstr");
			$recsmonth=$wakka->getCount("records","dialer_lastcall>='".date("Y-m-01 00:00:00")."' $owclientstr");
			
?>



		<div class=col-md-3>
		<div class=col-md-11>
		<?php if(sizeof($roclientlst)>1){ ?>
		<h5>
			Campaign 
			<select class='form-control pull-right' id=tcampaign_select onchange='campaignSelect();' style='width:50%'>
			<?php foreach($roclientlst as $c){$s="";if($c==$client)$s='selected';echo "<option value='$c' $s>$c</option>";} ?>
			</select>
		</h5>
		<br>
		<div class=col-md-6>
                        <select class=form-control id=data_select onchange='dataSelect();'>
                        <?php foreach($dataSelect as $d){$s="";if($d==$prevData)$s='selected';echo "<option value='$d' $s>$d</option>";} ?>
                        </select>
                </div>
		<div style='clear:both'></div>
		<br>
		<?php } ?>

		<h5>
			Buckets
			<span class='label label-small label-default pull-right'>
				<a href=# onclick="dialerLoadData('CallsMonth','','',1,'','');return false;" style='color:#fff;font-size:12px'>
					Month:&nbsp;&nbsp; {!!$recsmonth!!} / {!!$callsmonth!!}
				</a>
			</span>
			<span class='label label-small label-default pull-right' style='margin-right:5px'>
				<a href=# onclick="dialerLoadData('CallsToday','','',1,'','');return false;" style='color:#fff;font-size:12px'>
					Today:&nbsp;&nbsp; {!!$recstoday!!} / {!!$callstoday!!}
				</a>
			</span>

		</h5>
		<div style='clear:both'></div>
		<hr><br>
		<?php 
			//print_r($legalstatuses);
			//print_r($currentstatuses);
			
		?>
		<div class=col-md-6>
			<select class=form-control id=legalstatus_select onchange='bucketSelect();'>
			<?php foreach($legalstatuses as $ls)echo "<option value='$ls[legalstatus]'>$ls[legalstatus]</option>"; ?>
			</select>
		</div>
		<div class=col-md-6>
			<select class=form-control id=currentstatus_select onchange='bucketSelect();'>
			<?php foreach($currentstatuses as $ls)echo "<option value='$ls[currentstatus]'>$ls[currentstatus]</option>"; ?>
			</select>
		</div>
		<div style='clear:both'></div>
		
					<ul style="list-style:none">
						<li class="notify_alert">
							<span><a href=# onclick="dialerLoadData('CurrentQueue','','',1,'','');return false;">CurrentQueue</a></span>
							<!--<span class="label label-small pull-right" >
								0
							</span>-->
						</li>
						<li class="notify_alert">
							<span><a href=# onclick="dialerLoadData('MissedCalls','','',1,'','');return false;">MissedCalls</a></span>
							<span class="label label-small label-primary pull-right" >
								{!!$MissedCalls!!}
							</span>
						</li>
						<li class="notify_alert">
							<span><a href=# onclick="dialerLoadData('TotalData','','',1,'','');return false;">TotalData</a></span>
							<span class="label label-small label-default pull-right" >
								{!!$TotalData!!}
							</span>
						</li>
						<li class="notify_alert">
							<span><a href=# onclick="dialerLoadData('NotCalled','','',1,'','');return false;">NotCalled</a></span>
							<span class="label label-small label-default pull-right" >
								{!!$NotCalled!!}
							</span>
						</li>
						<li class="notify_alert">
							<span><a href=# onclick="dialerLoadData('Called','','',1,'','');return false;">Called</a></span>
							<span class="label label-small label-success pull-right" >
								{!!$TotalCalled!!}
							</span>
						</li>
						<li class="notify_alert">
							<span><a href=# onclick="return false;">Contacted</a></span>
							<span class="label label-small label-success pull-right" id=contactedcnt_span>
								0
							</span>
						</li>
						<li class="notify_alert">
							<span><a href=# onclick="dialerLoadData('Flagged-Called','','',1,'','');return false;">Flagged-Called</a></span>
							<span class="label label-small label-success pull-right" >
								{!!$Flagged!!}
							</span>
						</li>
						<li class="notify_alert">
							<span><a href=# onclick="dialerLoadData('Flagged-Notcalled','','',1,'','');return false;">Flagged-NotCalled</a></span>
							<span class="label label-small label-warning pull-right" >
								{!!$NotCalledFlagged!!}
							</span>
						</li>
						
						<hr><br>
						
						<?php foreach($dispoarr as $disp) {
						
						foreach($dispoclassarr as $dclass=>$darr)
						{
							if(in_array($disp['dialer_status'],$darr[1]))
							{
								$dispoclassarr[$dclass][0]+=$disp['cnt'];
							}
						}
						
						
							$class=str_replace(" ","_","CLS_".$disp['currentstatus'].$disp['legalstatus']);
						?>
						<li class="notify_alert bucketliitem {!!$class!!}">
							<span><a href=# onclick="dialerLoadData('{!!$disp['dialer_status']!!}','{!!$disp['currentstatus']!!}','{!!$disp['legalstatus']!!}',1,'','');return false;">{!!$disp['dialer_status']==''?'------':$disp['dialer_status']!!}</a></span>
							<span class="label label-small label-success pull-right" >
								{!!$disp['cnt']!!}
							</span>
						</li>
						<?php }
						
						$contacted=$dispoclassarr['CC'][0]+$dispoclassarr['CB'][0]+$dispoclassarr['NC'][0];
						echo "<script>$('#contactedcnt_span').html('$contacted');</script>";
						?>
					</ul>
		</div>
		</div>
		<div class=col-md-9  id=bucketlistdiv>
		

		</div>

		
		<div style='clear:both'></div>



<script>
function campaignSelect()
{
	var dashlet="Dialer";
	doAjax("dashboard/dashlet?module="+dashlet+"&client="+$("#tcampaign_select").val(),"","DashletT-"+dashlet,"ajax_dashlet_"+dashlet,"singlefail","GET");
}

function dataSelect()
{
        var dashlet="Dialer";
        doAjax("dashboard/dashlet?module="+dashlet+"&prev="+$("#data_select").val(),"","DashletT-"+dashlet,"ajax_dashlet_"+dashlet,"singlefail","GET");
}

function bucketSelect()
{
	var activeclass='CLS_'+$('#currentstatus_select').val()+$('#legalstatus_select').val();
	$('.bucketliitem').hide();
	$('.'+activeclass).show();
}
bucketSelect();

function dialerLoadData(listname,currentstatus,legalstatus,page,skey,stxt)
{
	doAjax("dialer/bucketdata","client={!!$client!!}&bucket="+listname+"&currentstatus="+currentstatus+"&legalstatus="+legalstatus+'&page='+page+'&skey='+skey+'&stxt='+stxt,"bucketlistdiv","ajax_dialer_list","singlefail","GET");
}
dialerLoadData('CurrentQueue','','',1,'','');
</script>