447bd6b62d4b0889b79569e2c0d1dbb9eb99c437.php 9.65 KB
<?php
use App\Models\CRMCall;
use App\Models\Dialline;
use App\Models\Sipid;
use App\Models\User;
use App\Models\UserLog;
use App\Models\Kqueue;
use App\Jobs\KHRMSLib;

$wakka = new KHRMSLib();
$dashboarduser=Auth::user();
$nowts=time();
$chart=array('ts'=>date('H:i:s',time()-($dashboarduser->timezone*60)),'Online'=>0,'NoCall'=>0,'InCall'=>0,'CallWait'=>0,'CmdList'=>0);

if($dashboarduser->usertype != 'Admin')
//if(!$dashboarduser->moduleACL("Dialer",false,false,true))
{
	$allusers=User::where(function ($query)  use($dashboarduser) {
			$query->where('supervisor','=',$dashboarduser->username)
			->orWhere('lteam2','=',$dashboarduser->username)
			->orWhere('lteam','=',$dashboarduser->username)
			->orWhere('id','=',$dashboarduser->id);
	})
	->where(function ($query) {
			$query->where('status', '=', 'Active');
	})->get();
}
else
{
	$allusers=User::where("status","=","Active")->get();
}

$loginUsers = DB::table('sessions')->where('user_id','!=','Null')->groupBy('user_id')->get();
foreach($loginUsers as $user)$loginUserList[]=$user->user_id;

foreach($allusers as $tuser)if(in_array($tuser->id,$loginUserList))$uidlist[]=$tuser->id;

$newcalls=Dialline::where('status','!=','Free')->where('conf','=','')->orderBy('updated_at')->get();
$acalls=Dialline::where('status','!=','Free')->where('conf','!=','')->orderBy('updated_at')->get();
$sipids=Sipid::whereIn("user",$uidlist)->where("status","=","1")->get();
$alist=array();
$sipidsfound=array();

$userarr=array();$i=1;
//$reporthead=array("#","ID","User","Name","Campaign","Station","Status","CRMId","Number","Type","State","Duration");
$reporthead=array("#","ID","User","Name","Campaign","Station","Status");
$reportarray=array();

foreach($newcalls as $newcall)
{
	$tcall=CRMCall::where('dialline_id','=',$newcall->id)->orderBy('id','DESC')->first();
	$un="";$uid="";$us="";
	if($tcall->user_id>0)
	{
		$tuser=User::find($tcall->user_id);
		$un=$tuser->username;
		$uname=$tuser->fullname;
		$uid=userchatbox($tuser).$tuser->id;

		$userlog=UserLog::where('user_id','=',$tuser->id)->orderBy("id","DESC")->first();
		$stend=$userlog->getLastStatus();
		$us="$stend[0]-$stend[1]";
		
		$chart['Online']++;
		$chart['InCall']++;
	}
	else $chart['CallWait']++;
	
	if($tcall->state == 'DialEnd')
	{
		$us = "Talk";
	}		

	$obj=array();
	$obj["#"]='';//$i++;
	$obj["ID"]=$uid;
	$obj["User"]=$un;
	$obj["Name"]=$uname;
	$obj["Campaign"]=$tcall->client;
	$obj["Station"]=$tcall->sipid_id.userSpyStr($tcall->sipid_id);
	$obj["Status"]=$us;
	$obj["CRMId"]=$tcall->crm_id;
	$obj["Number"]=$tcall->number;
	$obj["Type"]=$tcall->type;
	$obj["State"]=$tcall->state;
	$obj["Duration"]=$nowts-strtotime($tcall->created_at);

	//$reportarray[$newcall->id]=$obj;
	if(!empty($tcall->sipid_id))$sipidsfound[]=$tcall->sipid_id;
}

foreach($acalls as $acall)
{
	$tcall=CRMCall::where('dialline_id','=',$acall->id)->orderBy('id','DESC')->first();
	
	$tsipid=substr($acall->conf,4);
	$tsip=Sipid::find($tsipid);
	$clidata=json_decode($tsip->clients,true);
	
	$tuser=User::find($tsip->user);
	
	$userlog=UserLog::where('user_id','=',$tuser->id)->orderBy("id","DESC")->first();
	$stend=$userlog->getLastStatus();
	
	$obj=array();
	$obj["#"]='';//$i++;
	$obj["ID"]=userchatbox($tuser).$tsip->user;
	$obj["User"]=$tuser->username;
	$obj["Name"]=$tuser->fullname;
	$obj["Campaign"]=substr($clidata['r'],0,20);
	$obj["Station"]=$tsip->id.userSpyStr($tsip->id);
	$obj["Status"]="$stend[0]-$stend[1]";
	$obj["CRMId"]=$tcall->crm_id;
	$obj["Number"]=$tcall->number;
	$obj["Type"]=$tcall->type;
	$obj["State"]=$tcall->state;
	$obj["Duration"]=$nowts-strtotime($tcall->created_at);

	//$reportarray[$acall->id]=$obj;
	$sipidsfound[]=$tsipid;
	
	$chart['Online']++;
	$chart['InCall']++;
}

foreach($sipids as $sipid)
{
	/*if(in_array($sipid->id,$sipidsfound))
	{*/
		$clidata=json_decode($sipid->clients,true);
		
		$tuser=User::find($sipid->user);
		$userlog=UserLog::where('user_id','=',$tuser->id)->orderBy("id","DESC")->first();
		$stend=$userlog->getLastStatus();
		
		$obj=array();
		$obj["#"]=$i++;
		$obj["ID"]=userchatbox($tuser).$sipid->user;
		$obj["User"]=$tuser->username;
		$obj["Name"]=$tuser->fullname;
		$obj["Campaign"]=substr($clidata['r'],0,20);
		$obj["Station"]=$sipid->id.userSpyStr($sipid->id);
		$obj["Status"]="$stend[0]-$stend[1]";
		$obj["CRMId"]="";
		$obj["Number"]="";
		$obj["Type"]="";
		$obj["State"]="";
		$obj["Duration"]="";
		
		$reportarray[]=$obj;
		
		$chart['Online']++;
		$chart['NoCall']++;
	/*}*/
}

$chart['CmdList']=-1*Kqueue::count();

if(Input::get('chartvals')==1)
{
	echo json_encode($chart);
	return;
}

$highestColumn = sizeof($reporthead);
$outhead="<tr>";$outstr="";
for ($head = 0; $head < $highestColumn; $head++){
	$outhead.="<td>".$reporthead[$head]."</td>";
}
$outhead.="</tr>";

foreach($reportarray as $uid=>$uarr)
{
	$outstr.="<tr>";
	for ($head = 0; $head < $highestColumn; $head++){
		$outstr.="<td>".$uarr[$reporthead[$head]]."</td>";
	}
	$outstr.="</tr>";
}

function userchatbox($tuser){
	return "<a data-toggle='image-preview' data-title='".$tuser->dispname()."'  data-content='<small></small>' data-image-preview='".$tuser->fetchphotothumb()."' width='100' href='#' class='innerAll half border-none' onclick='tchatbox(\"chatpop_".$tuser->id."\",\"".$tuser->dispname()."\");return false;' style='padding:0 !important'><img src='".$tuser->fetchphotothumb()."' alt='photo' width='22'></a> ";
}

function userSpyStr($sipid){
	if(!empty($sipid))return "&nbsp;&nbsp;&nbsp;<a href=# onclick='kDialerSpy(\"$sipid\",\"L\");return false;'>L</a> <a href=# onclick='kDialerSpy(\"$sipid\",\"B\");return false;'>B</a> <a href=# onclick='kDialerSpy(\"$sipid\",\"W\");return false;'>W</a>";
}
?>

<div class=innerAll>
	<style>#logtable.td{vertical-align:top;}#logtable.tr{height:28px;overflow-y:hidden;}</style>
	<script>
		$(document).ready(function(){
			if(!$('#dialoglog').hasClass('ui-dialog-content')){
				$('#dialoglog').dialog({
					autoOpen: false,
					width: '70%',
					buttons: {
						"Ok": function() {
							$(this).dialog("close"); 
						}, 
						"Cancel": function() {
							$(this).dialog("close"); 
						} 
					}
				});
			}
		});
	</script>
	<div style="float:left;width:50%">
		<h5>Dialer : Live</h5>
	</div>
	
	<div style="float:left;width:50%">
		<button class="pull-right btn btn-sm btn-default" onclick='liveLogReloadFun(10);return false;' title='Reload' style='margin-top:-8px'><i class='fa fa-refresh'></i> Reload</button>
	</div>
	<div style="clear:both"></div>
	<hr/>

	<div class=col-md-12>
		<div id=liveuserlogschart1<?php echo $nowts; ?> style='min-height:300px;width:100%'></div>
		<script>
			var livechart001='';
			$(function () {
				livechart001=$('#liveuserlogschart1<?php echo $nowts; ?>').highcharts({
					title: {
						text: '', x: -20 //center
					},
					subtitle: {
						text: '', x: -20
					},
					xAxis: {
						categories: [<?php $ccc=array();for($c=60;$c>0;$c--){echo "'",date('H:i:s',time()-($c*10)-($dashboarduser->timezone*60))."',";$ccc[]="0";}$ccc="[".implode(",",$ccc)."]"; ?>],
						labels:{
							enabled:false//default is true
						},
					},
					yAxis: {
						title: {
							text: ''
						},
						plotLines: [{
							value: 0, width: 1, color: '#808080'
						}]
					},
					tooltip: {
						valueSuffix: ''
					},
					legend: {
					},
					series: [{
						name: 'Online', data: <?php echo Input::get('Online',$ccc); ?>

					}, {
						name: 'NoCall', data: <?php echo Input::get('NoCall',$ccc); ?>

					}, {
						name: 'InCall', data: <?php echo Input::get('InCall',$ccc); ?>

					}, {
						name: 'CallWait', data: <?php echo Input::get('CallWait',$ccc); ?>

					}, {
						name: 'CmdList',visible: false, data: <?php echo Input::get('CmdList',$ccc); ?>

					}]
				});
			});

			function liveLogReloadFun(delay)
			{
				var tchart=livechart001.highcharts();
				var sdata='';
				sdata+='&Online='+JSON.stringify(tchart.series[0].yData);
				sdata+='&NoCall='+JSON.stringify(tchart.series[1].yData);
				sdata+='&InCall='+JSON.stringify(tchart.series[2].yData);
				sdata+='&CallWait='+JSON.stringify(tchart.series[3].yData);
				sdata+='&CmdList='+JSON.stringify(tchart.series[4].yData);
				
				setTimeout(function(){
					if($("#liveuserlogschart1<?php echo $nowts; ?>").length)
						doAjax('dialer/liveusers',sdata,'rightmainreportdiv','ajax_dialer_reports','singlethis','GET');
				},delay);
			}

			function liveLogReloadChartFun(delay)
			{
				setTimeout(function(){
					if($("#liveuserlogschart1<?php echo $nowts; ?>").length)
						doAjax('dialer/liveusers','chartvals=1','__FD__','ajax_dialer_reports','singlethis','GET',function(res)
						{
							var resobj=JSON.parse(res.responseText);
							var tchart=livechart001.highcharts();
							var shift = tchart.series[0].data.length > 60;

							// add the point
							tchart.series[0].addPoint([resobj['ts'],resobj['Online']], true, shift);
							tchart.series[1].addPoint([resobj['ts'],resobj['NoCall']], true, shift);
							tchart.series[2].addPoint([resobj['ts'],resobj['InCall']], true, shift);
							tchart.series[3].addPoint([resobj['ts'],resobj['CallWait']],true,shift);
							tchart.series[4].addPoint([resobj['ts'],resobj['CmdList']],true,shift);
							
							// call it again after one second
							setTimeout(liveLogReloadChartFun, 10000);
							
							
						});
				},delay);
			}

			liveLogReloadChartFun(10);
		</script>
	</div>

	<div style='clear:both'></div>
	<div style='clear:both'></div>
	<div style='overflow:auto'>
		<table id=logtable class='footable table table-striped table-bordered table-white table-primary footable-loaded' style='font-size:12px'>
			<thead>
				<?php echo $outhead; ?>
			</thead>
			<?php echo $outstr; ?>
		</table>
	</div>
	<div id=dialoglog></div>
</div>

<!--
<?php //if($dashboarduser->moduleACL("Admin",false,false,true))print_r(Config::get('app.sqllog')); ?>
-->