liveusers.blade10112017.php 9.71 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();
}
foreach($allusers as $tuser)$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","Cust_ID");
$reportarray=array();
foreach($newcalls as $newcall)
{
	$tcall=CRMCall::where('dialline_id','=',$newcall->id)->orderBy('id','DESC')->first();
	$cust_id=DB::table('records')->select('clientcode','id','currentstatus','legalstatus')->where('id','=',$tcall->crm_id)->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);
	$obj["Cust_ID"]=$cust_id->clientcode;

	$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>";
}
//charts
?>


            <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{!!$nowts!!} style='min-height:300px;width:100%'></div>
<script>
var livechart001='';
$(function () {
    livechart001=$('#liveuserlogschart1{!!$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: {!!Input::get('Online',$ccc)!!}
        }, {
            name: 'NoCall',
            data: {!!Input::get('NoCall',$ccc)!!}
        }, {
            name: 'InCall',
            data: {!!Input::get('InCall',$ccc)!!}
        }, {
            name: 'CallWait',
            data: {!!Input::get('CallWait',$ccc)!!}
        }, {
            name: 'CmdList',visible: false,
            data: {!!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{!!$nowts!!}").length)
			doAjax('dialer/liveusers',sdata,'rightmainreportdiv','ajax_dialer_reports','singlethis','GET');
	},delay);
}
function liveLogReloadChartFun(delay)
{
	setTimeout(function(){
		if($("#liveuserlogschart1{!!$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')); ?>

-->