Login report changes
Showing
3 changed files
with
312 additions
and
287 deletions
| ... | @@ -1315,25 +1315,25 @@ function getURLLoad(varurl) | ... | @@ -1315,25 +1315,25 @@ function getURLLoad(varurl) |
| 1315 | form.submit(); | 1315 | form.submit(); |
| 1316 | } | 1316 | } |
| 1317 | function filter2 (phrase, _id){ | 1317 | function filter2 (phrase, _id){ |
| 1318 | if(phrase) | 1318 | if(phrase) |
| 1319 | { | 1319 | { |
| 1320 | var words = phrase.value.toLowerCase().split(" "); | 1320 | var words = phrase.value.toLowerCase().split(" "); |
| 1321 | var table = document.getElementById(_id); | 1321 | var table = document.getElementById(_id); |
| 1322 | var ele; | 1322 | var ele; |
| 1323 | for (var r = 0; r < table.rows.length; r++){ | 1323 | for (var r = 0; r < table.rows.length; r++){ |
| 1324 | ele = table.rows[r].innerHTML.replace(/<[^>]+>/g,""); | 1324 | ele = table.rows[r].innerHTML.replace(/<[^>]+>/g,""); |
| 1325 | var displayStyle = 'none'; | 1325 | var displayStyle = 'none'; |
| 1326 | for (var i = 0; i < words.length; i++) { | 1326 | for (var i = 0; i < words.length; i++) { |
| 1327 | if (ele.toLowerCase().indexOf(words[i])>=0) | 1327 | if (ele.toLowerCase().indexOf(words[i])>=0) |
| 1328 | displayStyle = ''; | 1328 | displayStyle = ''; |
| 1329 | else { | 1329 | else { |
| 1330 | displayStyle = 'none'; | 1330 | displayStyle = 'none'; |
| 1331 | break; | 1331 | break; |
| 1332 | } | 1332 | } |
| 1333 | } | 1333 | } |
| 1334 | table.rows[r].style.display = displayStyle; | 1334 | table.rows[r].style.display = displayStyle; |
| 1335 | } | ||
| 1335 | } | 1336 | } |
| 1336 | } | ||
| 1337 | } | 1337 | } |
| 1338 | function mailFile(filepath,emailids,subject,from,mailbody) | 1338 | function mailFile(filepath,emailids,subject,from,mailbody) |
| 1339 | { | 1339 | { | ... | ... |
| ... | @@ -76,7 +76,7 @@ kstychAppObject['config']['colorInverse']='{!!$skinarr[8]!!}'; | ... | @@ -76,7 +76,7 @@ kstychAppObject['config']['colorInverse']='{!!$skinarr[8]!!}'; |
| 76 | <script src="{!!url('/')!!}/assets/components/modules/admin/chat/chatboxmanager.js"></script> | 76 | <script src="{!!url('/')!!}/assets/components/modules/admin/chat/chatboxmanager.js"></script> |
| 77 | <script src="{!!url('/')!!}/assets/js/highchart/highcharts.js"></script> | 77 | <script src="{!!url('/')!!}/assets/js/highchart/highcharts.js"></script> |
| 78 | <script> | 78 | <script> |
| 79 | var envCallback = "{{ env(app_domain) }}"; | 79 | var envCallback = "{{ env('app_domain') }}"; |
| 80 | </script> | 80 | </script> |
| 81 | <script src="{!!url('/')!!}/jsbody?v={!!$v!!}"></script> | 81 | <script src="{!!url('/')!!}/jsbody?v={!!$v!!}"></script> |
| 82 | 82 | ... | ... |
| ... | @@ -15,11 +15,15 @@ $logtime =(isset($_GET['logtime'])) ? $_GET['logtime'] :9; | ... | @@ -15,11 +15,15 @@ $logtime =(isset($_GET['logtime'])) ? $_GET['logtime'] :9; |
| 15 | $logtimeto =(isset($_GET['logtimeto']))? $_GET['logtimeto']:20; | 15 | $logtimeto =(isset($_GET['logtimeto']))? $_GET['logtimeto']:20; |
| 16 | 16 | ||
| 17 | $logdate =(isset($_GET['logdate'])) ? strtotime($_GET['logdate']." ".$logtime.":00:00") | 17 | $logdate =(isset($_GET['logdate'])) ? strtotime($_GET['logdate']." ".$logtime.":00:00") |
| 18 | : strtotime(date("Y-m-d")." 09:00:00"); | 18 | : strtotime(date("Y-m-d")." 09:00:00"); |
| 19 | $logdateto =(isset($_GET['logdateto']))? strtotime($_GET['logdateto']." ".$logtimeto.":00:00") | 19 | $logdateto =(isset($_GET['logdateto']))? strtotime($_GET['logdateto']." ".$logtimeto.":00:00") |
| 20 | : strtotime(date("Y-m-d")." 20:00:00"); | 20 | : strtotime(date("Y-m-d")." 20:00:00"); |
| 21 | $campaign =(isset($_GET['campaign'])) ? $_GET['campaign'] : "All"; | 21 | $campaign =(isset($_GET['campaign'])) ? $_GET['campaign'] : "All"; |
| 22 | 22 | ||
| 23 | // testing input | ||
| 24 | // $logtime = 9;$logtimeto = 20;$logdate = strtotime("2017-10-03 ".$logtime.":00:00");$logdateto = strtotime("2017-10-03 ".$logtimeto.":00:00");$campaign = 'All'; | ||
| 25 | // testing input | ||
| 26 | |||
| 23 | $alist=CRMCallArchive::where('user_id','!=',0)->where('created_at','>=',date("Y-m-d H:i:s",$logdate+$timeoffset))->where('created_at','<=',date("Y-m-d H:i:s",$logdateto+$timeoffset)); | 27 | $alist=CRMCallArchive::where('user_id','!=',0)->where('created_at','>=',date("Y-m-d H:i:s",$logdate+$timeoffset))->where('created_at','<=',date("Y-m-d H:i:s",$logdateto+$timeoffset)); |
| 24 | $alist->orderBy('user_id', 'ASC')->orderBy('ts_Close', 'ASC'); | 28 | $alist->orderBy('user_id', 'ASC')->orderBy('ts_Close', 'ASC'); |
| 25 | 29 | ||
| ... | @@ -29,8 +33,8 @@ if($campaign != 'All') $alist->where('client','=',$campaign); | ... | @@ -29,8 +33,8 @@ if($campaign != 'All') $alist->where('client','=',$campaign); |
| 29 | 33 | ||
| 30 | $userarr=array(); | 34 | $userarr=array(); |
| 31 | $allusers = DB::table('users as u1')->leftjoin('users AS u2', 'u2.username', '=', 'u1.supervisor') | 35 | $allusers = DB::table('users as u1')->leftjoin('users AS u2', 'u2.username', '=', 'u1.supervisor') |
| 32 | ->select('u1.id','u1.username','u1.fullname AS telecaller', 'u2.fullname AS sepervisor') | 36 | ->select('u1.id','u1.username','u1.fullname AS telecaller', 'u2.fullname AS sepervisor') |
| 33 | ->where('u1.status','=','Active'); | 37 | ->where('u1.status','=','Active'); |
| 34 | 38 | ||
| 35 | $roclientstr=array();$didlinesstr=array(); | 39 | $roclientstr=array();$didlinesstr=array(); |
| 36 | if($dashboarduser->exten!="")$didlinesstr[]=$dashboarduser->exten; | 40 | if($dashboarduser->exten!="")$didlinesstr[]=$dashboarduser->exten; |
| ... | @@ -38,34 +42,34 @@ $oclientlst=$wakka->clientsReadAccess(); sort($oclientlst); $oclientlst[0] = 'Al | ... | @@ -38,34 +42,34 @@ $oclientlst=$wakka->clientsReadAccess(); sort($oclientlst); $oclientlst[0] = 'Al |
| 38 | 42 | ||
| 39 | if(!empty($oclientlst))foreach($oclientlst as $tclnt)if($tclnt!="") | 43 | if(!empty($oclientlst))foreach($oclientlst as $tclnt)if($tclnt!="") |
| 40 | { | 44 | { |
| 41 | $roclientstr[]="$tclnt"; | 45 | $roclientstr[]="$tclnt"; |
| 42 | 46 | ||
| 43 | $mastersdata=$wakka->getCompanyMaster($tclnt); | 47 | $mastersdata=$wakka->getCompanyMaster($tclnt); |
| 44 | if(!empty($mastersdata["DialerDID"]))$didlinesstr[]=$mastersdata["DialerDID"]; | 48 | if(!empty($mastersdata["DialerDID"]))$didlinesstr[]=$mastersdata["DialerDID"]; |
| 45 | } | 49 | } |
| 46 | 50 | ||
| 47 | $breaks=array("Paused","AgentBriefing","TeamMeeting","QualityFeedback","LunchBreak","TeaBreak","UtilityBreak","FloorAnnouncements","DownTime"); | 51 | $breaks=array("Paused","AgentBriefing","TeamMeeting","QualityFeedback","LunchBreak","TeaBreak","UtilityBreak","FloorAnnouncements","DownTime"); |
| 48 | $reporthead=array_merge(array("#","Telecaller","TelecallerID","Supervisor","Signin","Signout","Count","Duration","Total","Wait","Call","Talk","Dispo","P-Call","P-Talk","P-Dispo","M-Call","M-Talk","M-Dispo","I-Call","I-Talk","I-Dispo"),$breaks); | 52 | $reporthead=array_merge(array("#","Telecaller","TelecallerID","Supervisor","Sessions","CallCount","Duration","Total","Wait","Call","Talk","Dispo","P-Call","P-Talk","P-Dispo","M-Call","M-Talk","M-Dispo","I-Call","I-Talk","I-Dispo"),$breaks); |
| 49 | $reportarray=array(); | 53 | $reportarray=array(); |
| 50 | 54 | ||
| 51 | $i=1; | 55 | $i=1; |
| 52 | if($dashboarduser->usertype != 'Admin') | 56 | if($dashboarduser->usertype != 'Admin') |
| 53 | { | 57 | { |
| 54 | $uidlist=array($dashboarduser->id); | 58 | $uidlist=array($dashboarduser->id); |
| 55 | $allusers=$allusers->where(function ($query) use($dashboarduser) { | 59 | $allusers=$allusers->where(function ($query) use($dashboarduser) { |
| 56 | $query->where('u1.supervisor','=',$dashboarduser->username) | 60 | $query->where('u1.supervisor','=',$dashboarduser->username) |
| 57 | ->orWhere('u1.lteam2','=',$dashboarduser->username) | 61 | ->orWhere('u1.lteam2','=',$dashboarduser->username) |
| 58 | ->orWhere('u1.lteam','=',$dashboarduser->username); | 62 | ->orWhere('u1.lteam','=',$dashboarduser->username); |
| 59 | })->get(); | 63 | })->get(); |
| 60 | 64 | ||
| 61 | foreach($allusers as $tuser) | 65 | foreach($allusers as $tuser) |
| 62 | { | 66 | { |
| 63 | $uidlist[]=$tuser->id; | 67 | $uidlist[]=$tuser->id; |
| 64 | $reportarray[$tuser->id]=array("#"=>$i++,"Telecaller"=>$tuser->telecaller,"TelecallerID"=>$tuser->username,"Supervisor"=>$tuser->sepervisor); | 68 | $reportarray[$tuser->id]=array("#"=>$i++,"Telecaller"=>$tuser->telecaller,"TelecallerID"=>$tuser->username,"Supervisor"=>$tuser->sepervisor); |
| 65 | } | 69 | } |
| 66 | $reportarray[$dashboarduser->id]=array("#"=>$i++,"Telecaller"=>$dashboarduser->fullname,"TelecallerID"=>$dashboarduser->username,"Supervisor"=>$dashboarduser->supervisor); | 70 | $reportarray[$dashboarduser->id]=array("#"=>$i++,"Telecaller"=>$dashboarduser->fullname,"TelecallerID"=>$dashboarduser->username,"Supervisor"=>$dashboarduser->supervisor); |
| 67 | 71 | ||
| 68 | $alist=$alist->whereIn('user_id',$uidlist); | 72 | $alist=$alist->whereIn('user_id',$uidlist); |
| 69 | 73 | ||
| 70 | /*$alist=$alist->where(function ($query) use($roclientstr,$uidlist,$didlinesstr){ | 74 | /*$alist=$alist->where(function ($query) use($roclientstr,$uidlist,$didlinesstr){ |
| 71 | $query->orWhereIn('client',$roclientstr) | 75 | $query->orWhereIn('client',$roclientstr) |
| ... | @@ -74,219 +78,240 @@ if($dashboarduser->usertype != 'Admin') | ... | @@ -74,219 +78,240 @@ if($dashboarduser->usertype != 'Admin') |
| 74 | 78 | ||
| 75 | $userlog=$userlog->whereIn('user_id',$uidlist); | 79 | $userlog=$userlog->whereIn('user_id',$uidlist); |
| 76 | }else{ | 80 | }else{ |
| 77 | $allusers=$allusers->get(); | 81 | $allusers=$allusers->get(); |
| 78 | foreach($allusers as $tuser) | 82 | foreach($allusers as $tuser) |
| 79 | { | 83 | { |
| 80 | $reportarray[$tuser->id]=array("#"=>$i++,"Telecaller"=>$tuser->telecaller,"TelecallerID"=>$tuser->username,"Supervisor"=>$tuser->sepervisor); | 84 | $reportarray[$tuser->id]=array("#"=>$i++,"Telecaller"=>$tuser->telecaller,"TelecallerID"=>$tuser->username,"Supervisor"=>$tuser->sepervisor); |
| 81 | } | 85 | } |
| 82 | } | 86 | } |
| 83 | 87 | ||
| 88 | // echo "<pre>"; print_r($allusers);exit; | ||
| 89 | |||
| 84 | $alist=$alist->get(); | 90 | $alist=$alist->get(); |
| 85 | $userlog=$userlog->get(); | 91 | $userlog=$userlog->get(); |
| 86 | $prev_close = 0; | 92 | $prev_close = 0; |
| 87 | 93 | ||
| 94 | // echo count($userlog);exit; | ||
| 95 | |||
| 88 | foreach($alist as $aline) | 96 | foreach($alist as $aline) |
| 89 | { | 97 | { |
| 90 | if($prev_user != $aline->user_id || $prev_close <= $aline->ts_Wait) | 98 | if($prev_user != $aline->user_id || $prev_close <= $aline->ts_Wait) |
| 91 | { | 99 | { |
| 92 | $userid=$aline->user_id; | 100 | $userid=$aline->user_id; |
| 93 | 101 | ||
| 94 | $talktime=$aline->talkSec+$aline->recstartSec+$aline->recendSec; | 102 | $talktime=$aline->talkSec+$aline->recstartSec+$aline->recendSec; |
| 95 | $totaltime=$aline->callSec+$talktime+$aline->dispoSec; | 103 | $totaltime=$aline->callSec+$talktime+$aline->dispoSec; |
| 96 | 104 | ||
| 97 | $reportarray[$userid]["oncall"]+=$totaltime/1000; | 105 | $reportarray[$userid]["oncall"]+=$totaltime/1000; |
| 98 | //$reportarray[$userid]["Wait"]+=$aline->waitSec/1000; | 106 | //$reportarray[$userid]["Wait"]+=$aline->waitSec/1000; |
| 99 | $reportarray[$userid]["Call"]+=$aline->callSec/1000; | 107 | $reportarray[$userid]["Call"]+=$aline->callSec/1000; |
| 100 | $reportarray[$userid]["Talk"]+=$talktime/1000; | 108 | $reportarray[$userid]["Talk"]+=$talktime/1000; |
| 101 | $reportarray[$userid]["Dispo"]+=$aline->dispoSec/1000; | 109 | $reportarray[$userid]["Dispo"]+=$aline->dispoSec/1000; |
| 102 | 110 | ||
| 103 | if($aline->type == 'Progressive') | 111 | if($aline->type == 'Progressive') |
| 104 | { | 112 | { |
| 105 | $reportarray[$userid]["P-Call"]+=$aline->callSec/1000; | 113 | $reportarray[$userid]["P-Call"]+=$aline->callSec/1000; |
| 106 | $reportarray[$userid]["P-Talk"]+=$talktime/1000; | 114 | $reportarray[$userid]["P-Talk"]+=$talktime/1000; |
| 107 | $reportarray[$userid]["P-Dispo"]+=$aline->dispoSec/1000; | 115 | $reportarray[$userid]["P-Dispo"]+=$aline->dispoSec/1000; |
| 116 | } | ||
| 117 | |||
| 118 | if($aline->type == 'Manual') | ||
| 119 | { | ||
| 120 | $reportarray[$userid]["M-Call"]+=$aline->callSec/1000; | ||
| 121 | $reportarray[$userid]["M-Talk"]+=$talktime/1000; | ||
| 122 | $reportarray[$userid]["M-Dispo"]+=$aline->dispoSec/1000; | ||
| 123 | } | ||
| 124 | |||
| 125 | if($aline->type == 'Inbound') | ||
| 126 | { | ||
| 127 | $reportarray[$userid]["I-Call"]+=$aline->callSec/1000; | ||
| 128 | $reportarray[$userid]["I-Talk"]+=$talktime/1000; | ||
| 129 | $reportarray[$userid]["I-Dispo"]+=$aline->dispoSec/1000; | ||
| 130 | } | ||
| 108 | } | 131 | } |
| 109 | 132 | $reportarray[$userid]["CallCount"]++; | |
| 110 | if($aline->type == 'Manual') | ||
| 111 | { | ||
| 112 | $reportarray[$userid]["M-Call"]+=$aline->callSec/1000; | ||
| 113 | $reportarray[$userid]["M-Talk"]+=$talktime/1000; | ||
| 114 | $reportarray[$userid]["M-Dispo"]+=$aline->dispoSec/1000; | ||
| 115 | } | ||
| 116 | |||
| 117 | if($aline->type == 'Inbound') | ||
| 118 | { | ||
| 119 | $reportarray[$userid]["I-Call"]+=$aline->callSec/1000; | ||
| 120 | $reportarray[$userid]["I-Talk"]+=$talktime/1000; | ||
| 121 | $reportarray[$userid]["I-Dispo"]+=$aline->dispoSec/1000; | ||
| 122 | } | ||
| 123 | } | ||
| 124 | $reportarray[$userid]["Count"]++; | ||
| 125 | $prev_close = $aline->ts_Close;//-ts_Wait | 133 | $prev_close = $aline->ts_Close;//-ts_Wait |
| 126 | $prev_user = $aline->user_id;//-ts_Wait | 134 | $prev_user = $aline->user_id;//-ts_Wait |
| 127 | } | 135 | } |
| 128 | 136 | ||
| 129 | function cmp($a, $b) { | 137 | function cmp($a, $b) { |
| 130 | return $a["ts"] - $b["ts"]; | 138 | return $a["ts"] - $b["ts"]; |
| 131 | } | 139 | } |
| 132 | $userLogin=array(); | 140 | $userLogin=array(); |
| 133 | foreach($userlog as $ulog) | 141 | foreach($userlog as $ulog) |
| 134 | { | 142 | { |
| 135 | $data=json_decode($ulog->data,true); | 143 | $data=json_decode($ulog->data,true); |
| 136 | usort($data, "cmp"); | 144 | usort($data, "cmp"); |
| 137 | 145 | ||
| 138 | $lastSip = end($data); | 146 | $lastSip = end($data); |
| 139 | $starttime = strtotime($ulog->startdate.' '.$ulog->starttime); | 147 | $starttime = strtotime($ulog->startdate.' '.$ulog->starttime); |
| 140 | $endtime = round($lastSip['ts']/1000); | 148 | $endtime = round($lastSip['ts']/1000); |
| 141 | $userLogin[$ulog->user_id]['duration'] += ($endtime-$starttime); | 149 | $userLogin[$ulog->user_id]['duration'] += ($endtime-$starttime); |
| 142 | $userLogin[$ulog->user_id]['start'][] = $starttime; | 150 | $userLogin[$ulog->user_id]['start'][] = $starttime; |
| 143 | $userLogin[$ulog->user_id]['end'][] = $endtime; | 151 | $userLogin[$ulog->user_id]['end'][] = $endtime; |
| 144 | 152 | ||
| 145 | $prets=strtotime($ulog->startdate." ".$ulog->starttime)*1000; | 153 | $prets=strtotime($ulog->startdate." ".$ulog->starttime)*1000; |
| 146 | $previous="Paused-Paused"; | 154 | $previous="Paused-Paused"; |
| 147 | foreach($data as $sdata) | 155 | foreach($data as $sdata) |
| 148 | { | 156 | { |
| 149 | $pts=$sdata['ts']; | 157 | $pts=$sdata['ts']; |
| 150 | if(isset($sdata['states'])) | 158 | if(isset($sdata['states'])) |
| 151 | { | 159 | { |
| 152 | foreach($sdata['states'] as $ts=>$states) | 160 | foreach($sdata['states'] as $ts=>$states) |
| 153 | { | 161 | { |
| 154 | if($previous != "Paused-WRAPUP")$previous = str_replace('Paused-', '', $previous); | 162 | if($previous != "Paused-WRAPUP")$previous = str_replace('Paused-', '', $previous); |
| 155 | 163 | ||
| 156 | if(!in_array($previous,$reporthead) && !in_array($previous,array('Progressive-','Manual-','Ready-Incoming','Ready-Predictive','DialNext-','Paused-WRAPUP'))) { | 164 | if(!in_array($previous,$reporthead) && !in_array($previous,array('Progressive-','Manual-','Ready-Incoming','Ready-Predictive','DialNext-','Paused-WRAPUP'))) { |
| 157 | $previous = 'Paused'; | 165 | $previous = 'Paused'; |
| 158 | } | 166 | } |
| 159 | 167 | ||
| 160 | $reportarray[$ulog->user_id][$previous]+=round($ts-$prets,2)/1000; | 168 | $reportarray[$ulog->user_id][$previous]+=round($ts-$prets,2)/1000; |
| 161 | 169 | ||
| 162 | $prets=$ts; | 170 | $prets=$ts; |
| 163 | $previous=$states[0].'-'.$states[1]; | 171 | $previous=$states[0].'-'.$states[1]; |
| 164 | } | 172 | } |
| 165 | if($previous != "Paused-WRAPUP")$previous = str_replace('Paused-', '', $previous); | 173 | if($previous != "Paused-WRAPUP")$previous = str_replace('Paused-', '', $previous); |
| 166 | $reportarray[$ulog->user_id][$previous]+=round($pts-$prets,2)/1000; | 174 | $reportarray[$ulog->user_id][$previous]+=round($pts-$prets,2)/1000; |
| 167 | $prets=$pts; | 175 | $prets=$pts; |
| 168 | } | 176 | } |
| 169 | } | 177 | } |
| 170 | } | 178 | } |
| 171 | 179 | ||
| 172 | if(count($userLogin)) foreach ($userLogin as $userid => $value) | 180 | if(count($userLogin)) foreach ($userLogin as $userid => $value) |
| 173 | { | 181 | { |
| 174 | $break_time=0; | 182 | $break_time=0; |
| 175 | foreach ($breaks as $break) { | 183 | foreach ($breaks as $break) { |
| 176 | $break_time+=$reportarray[$userid][$break]; | 184 | $break_time+=$reportarray[$userid][$break]; |
| 177 | } | 185 | } |
| 178 | $reportarray[$userid]["Signin"]=date("Y-m-d H:i:s", min($value['start'])-$timeoffset); | 186 | // print_r($value); |
| 179 | $reportarray[$userid]["Signout"]=date("Y-m-d H:i:s", max($value['end'])-$timeoffset); | 187 | |
| 180 | $reportarray[$userid]["Duration"]=$value['duration']; | 188 | $sessionsStr = ""; |
| 181 | $reportarray[$userid]["Total"]=$value['duration']-$break_time; | 189 | for($i = 0; $i < count($value['start']); $i++){ |
| 182 | $reportarray[$userid]["Wait"]=$reportarray[$userid]["Total"]-$reportarray[$userid]['oncall']; | 190 | if($sessionsStr == ""){ |
| 191 | $sessionsStr .= date("Y-m-d H:i:s", $value['start'][$i]-$timeoffset)." - ".date("Y-m-d H:i:s", $value['end'][$i]-$timeoffset); | ||
| 192 | }else{ | ||
| 193 | $sessionsStr .= ",\n".date("Y-m-d H:i:s", $value['start'][$i]-$timeoffset)." - ".date("Y-m-d H:i:s", $value['end'][$i]-$timeoffset); | ||
| 194 | } | ||
| 195 | } | ||
| 196 | // echo $sessionsStr."<br>-----------<br>"; | ||
| 197 | |||
| 198 | $reportarray[$userid]["Sessions"]=$sessionsStr; | ||
| 199 | // $reportarray[$userid]["Signin"]=date("Y-m-d H:i:s", min($value['start'])-$timeoffset); | ||
| 200 | // $reportarray[$userid]["Signout"]=date("Y-m-d H:i:s", max($value['end'])-$timeoffset); | ||
| 201 | $reportarray[$userid]["Duration"]=$value['duration']; | ||
| 202 | $reportarray[$userid]["Total"]=$value['duration']-$break_time; | ||
| 203 | $reportarray[$userid]["Wait"]=$reportarray[$userid]["Total"]-$reportarray[$userid]['oncall']; | ||
| 183 | } | 204 | } |
| 184 | 205 | ||
| 206 | // echo "<pre>"; print_r($userLogin); | ||
| 207 | // exit; | ||
| 208 | |||
| 185 | $highestColumn = sizeof($reporthead); | 209 | $highestColumn = sizeof($reporthead); |
| 186 | if(count($reportarray)) { | 210 | if(count($reportarray)) { |
| 187 | $outhead="<tr>";$outstr=""; | 211 | $outhead="<tr>";$outstr=""; |
| 188 | for ($head = 0; $head < $highestColumn; $head++){ | 212 | for ($head = 0; $head < $highestColumn; $head++){ |
| 189 | if($reporthead[$head] == '#') { | 213 | if($reporthead[$head] == "Sessions"){ |
| 190 | $mode_str = "<a onclick='displayMode(".'"summation"'.");return false;' href='#'><i class='fa fa-plus-square-o'></i></a> / <a onclick='displayMode(".'"percent"'.");return false;' href='#'>%</a>"; | 214 | $outhead.="<td style='width:270px;display:block;'>".$reporthead[$head]."</td>"; |
| 191 | $outhead.="<td>".$mode_str."</td>"; | 215 | }else{ |
| 192 | } | 216 | $outhead.="<td>".$reporthead[$head]."</td>"; |
| 193 | else { | 217 | } |
| 194 | $outhead.="<td>".$reporthead[$head]."</td>"; | 218 | } |
| 195 | } | 219 | $outhead.="</tr>"; |
| 196 | } | 220 | $utotalarr = array("Telecaller"=>'Total'); |
| 197 | $outhead.="</tr>"; | 221 | |
| 198 | $utotalarr = array("Telecaller"=>'Total'); | 222 | $reportRowNo = 1; |
| 199 | 223 | foreach($reportarray as $uid=>$uarr) | |
| 200 | foreach($reportarray as $uid=>$uarr) | 224 | { |
| 201 | { | 225 | if(array_key_exists('Duration',$uarr) && array_key_exists('TelecallerID',$uarr)) |
| 202 | if(array_key_exists('Signin',$uarr)) | 226 | { |
| 203 | { | 227 | $outstr.="<tr>"; |
| 204 | $outstr.="<tr>"; | 228 | for ($head = 0; $head < $highestColumn; $head++){ |
| 205 | for ($head = 0; $head < $highestColumn; $head++){ | 229 | if($head < 1){ |
| 206 | if($head < 6) { | 230 | $data_str = $reportRowNo; $reportRowNo++; |
| 207 | $data_str = $uarr[$reporthead[$head]]; | 231 | }elseif($head < 5) { |
| 208 | } | 232 | // if($head < 6) { |
| 209 | elseif($head < 7) { | 233 | $data_str = $uarr[$reporthead[$head]]; |
| 210 | $data_str = $uarr[$reporthead[$head]]; | 234 | } |
| 211 | $utotalarr[$reporthead[$head]] += $uarr[$reporthead[$head]]; | 235 | elseif($head < 6) { |
| 212 | } | 236 | $data_str = $uarr[$reporthead[$head]]; |
| 213 | else { | 237 | $utotalarr[$reporthead[$head]] += $uarr[$reporthead[$head]]; |
| 214 | $data_str = secToDuration(round($uarr[$reporthead[$head]])); | 238 | } |
| 215 | $utotalarr[$reporthead[$head]] += $uarr[$reporthead[$head]]; | 239 | else { |
| 216 | } | 240 | $data_str = secToDuration(round($uarr[$reporthead[$head]])); |
| 217 | $outstr.="<td>".$data_str."</td>"; | 241 | $utotalarr[$reporthead[$head]] += $uarr[$reporthead[$head]]; |
| 218 | } | 242 | } |
| 219 | $outstr.="</tr>"; | 243 | $outstr.="<td>".$data_str."</td>"; |
| 220 | } | 244 | } |
| 221 | } | 245 | $outstr.="</tr>"; |
| 222 | $outstr.="<tr>"; | 246 | } |
| 223 | for ($head = 0; $head < $highestColumn; $head++) | 247 | } |
| 224 | { | 248 | $outstr.="<tr>"; |
| 225 | if($head < 7) { | 249 | for ($head = 0; $head < $highestColumn; $head++) |
| 226 | $data_str = $utotalarr[$reporthead[$head]]; | 250 | { |
| 227 | } | 251 | if($head < 6) { |
| 228 | else { | 252 | $data_str = $utotalarr[$reporthead[$head]]; |
| 229 | $data_str = secToDuration($utotalarr[$reporthead[$head]]); | 253 | } |
| 230 | } | 254 | else { |
| 231 | $outstr.="<td>".$data_str."</td>"; | 255 | $data_str = secToDuration($utotalarr[$reporthead[$head]]); |
| 232 | } | 256 | } |
| 233 | $outstr.="</tr>"; | 257 | $outstr.="<td>".$data_str."</td>"; |
| 258 | } | ||
| 259 | $outstr.="</tr>"; | ||
| 260 | } else { | ||
| 261 | $outhead.="<tr><td>No Records Found.</td></tr>"; | ||
| 234 | } | 262 | } |
| 235 | else { | ||
| 236 | $outhead.="<tr><td>No Records Found.</td></tr>"; | ||
| 237 | } | ||
| 238 | 263 | ||
| 239 | if(Input::has("dllogxls")) | 264 | if(Input::has("dllogxls")) |
| 240 | { | 265 | { |
| 241 | include_once(app_path().'/lib/phpexcel/PHPExcel.php'); | 266 | include_once(app_path().'/lib/phpexcel/PHPExcel.php'); |
| 242 | 267 | ||
| 243 | $inputFileType = "Excel5"; | 268 | $inputFileType = "Excel5"; |
| 244 | $objReader = PHPExcel_IOFactory::createReader($inputFileType); | 269 | $objReader = PHPExcel_IOFactory::createReader($inputFileType); |
| 245 | $objPHPExcel = $objReader->load("assets/extras/blank.xls"); | 270 | $objPHPExcel = $objReader->load("assets/extras/blank.xls"); |
| 246 | $baseRow = 2; | 271 | $baseRow = 2; |
| 247 | 272 | ||
| 248 | 273 | ||
| 249 | $highestColumn = sizeof($reporthead); | 274 | $highestColumn = sizeof($reporthead); |
| 250 | for ($head = 0; $head < $highestColumn; $head++){ | 275 | for ($head = 0; $head < $highestColumn; $head++){ |
| 251 | $colstr=PHPExcel_Cell::stringFromColumnIndex($head); | 276 | $colstr=PHPExcel_Cell::stringFromColumnIndex($head); |
| 252 | $objPHPExcel->getActiveSheet()->setCellValue($colstr."1", $reporthead[$head]); | 277 | $objPHPExcel->getActiveSheet()->setCellValue($colstr."1", $reporthead[$head]); |
| 253 | } | 278 | } |
| 254 | 279 | ||
| 255 | foreach($reportarray as $uid=>$uarr) | 280 | foreach($reportarray as $uid=>$uarr) |
| 256 | { | 281 | { |
| 257 | $row = $baseRow++; | 282 | $row = $baseRow++; |
| 258 | $col = 0; | 283 | $col = 0; |
| 259 | 284 | ||
| 260 | for ($head = 0; $head < $highestColumn; $head++){ | 285 | for ($head = 0; $head < $highestColumn; $head++){ |
| 261 | $excelval = ($head < 7) ? $uarr[$reporthead[$head]] : secToDuration(round($uarr[$reporthead[$head]])); | 286 | $excelval = ($head < 6) ? $uarr[$reporthead[$head]] : secToDuration(round($uarr[$reporthead[$head]])); |
| 262 | $colstr=PHPExcel_Cell::stringFromColumnIndex($head); | 287 | $colstr=PHPExcel_Cell::stringFromColumnIndex($head); |
| 263 | $objPHPExcel->getActiveSheet()->setCellValue($colstr.$row, $excelval); | 288 | $objPHPExcel->getActiveSheet()->setCellValue($colstr.$row, $excelval); |
| 264 | } | 289 | } |
| 265 | } | 290 | } |
| 266 | 291 | ||
| 267 | $row++; | 292 | $row++; |
| 268 | for ($head = 0; $head < $highestColumn; $head++){ | 293 | for ($head = 0; $head < $highestColumn; $head++){ |
| 269 | $excelval = ($head < 7) ? $utotalarr[$reporthead[$head]] : secToDuration(round($utotalarr[$reporthead[$head]])); | 294 | $excelval = ($head < 6) ? $utotalarr[$reporthead[$head]] : secToDuration(round($utotalarr[$reporthead[$head]])); |
| 270 | $colstr=PHPExcel_Cell::stringFromColumnIndex($head); | 295 | $colstr=PHPExcel_Cell::stringFromColumnIndex($head); |
| 271 | $objPHPExcel->getActiveSheet()->setCellValue($colstr.$row, $excelval); | 296 | $objPHPExcel->getActiveSheet()->setCellValue($colstr.$row, $excelval); |
| 272 | } | 297 | } |
| 273 | 298 | ||
| 274 | header('Content-Type: application/vnd.ms-excel'); | 299 | header('Content-Type: application/vnd.ms-excel'); |
| 275 | header('Content-Disposition: attachment;filename="AgentTime.xls"'); | 300 | header('Content-Disposition: attachment;filename="AgentTime.xls"'); |
| 276 | header('Cache-Control: max-age=0'); | 301 | header('Cache-Control: max-age=0'); |
| 277 | 302 | ||
| 278 | $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, $inputFileType); | 303 | $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, $inputFileType); |
| 279 | $objWriter->save('php://output'); | 304 | $objWriter->save('php://output'); |
| 280 | 305 | ||
| 281 | return ; | 306 | return ; |
| 282 | } | 307 | } |
| 283 | 308 | ||
| 284 | function secToDuration($sec) { | 309 | function secToDuration($sec) { |
| 285 | return sprintf("%02d%s%02d%s%02d", floor($sec/3600), ':', ($sec/60)%60, ':', $sec%60); | 310 | return sprintf("%02d%s%02d%s%02d", floor($sec/3600), ':', ($sec/60)%60, ':', $sec%60); |
| 286 | } | 311 | } |
| 287 | ?> | 312 | ?> |
| 288 | 313 | ||
| 289 | <style>#logtable.td{vertical-align:top;padding:20px;}#logtable.tr{height:28px;overflow-y:hidden;} | 314 | <style>#logtable.td{vertical-align:top;padding:20px;}#logtable.tr{height:28px;overflow-y:hidden;} |
| 290 | /*#logtable.table thead tr{ | 315 | /*#logtable.table thead tr{ |
| 291 | display:block; | 316 | display:block; |
| 292 | } | 317 | } |
| ... | @@ -295,90 +320,90 @@ function secToDuration($sec) { | ... | @@ -295,90 +320,90 @@ function secToDuration($sec) { |
| 295 | display:block; | 320 | display:block; |
| 296 | height:500px; | 321 | height:500px; |
| 297 | overflow:auto;//set tbody to auto | 322 | overflow:auto;//set tbody to auto |
| 298 | }*/ | 323 | }*/ |
| 299 | </style> | 324 | </style> |
| 300 | 325 | ||
| 301 | <div class=innerAll> | 326 | <div class=innerAll> |
| 302 | <h4 style="float:left;width:50%;margin:10px 0;">Agent Time Report</h4> | 327 | <h4 style="float:left;width:50%;margin:10px 0;">Login Report <small>(Agent Time Report)</small></h4> |
| 303 | <div style="float:right;width:50%"> | 328 | <div style="float:right;width:50%"> |
| 304 | <button class="pull-right btn btn-sm btn-default" onclick='dlAgentlogXls();return false;' title='Download'><i class='fa fa-download'></i> Download</button> | 329 | <button class="pull-right btn btn-sm btn-default" onclick='dlAgentlogXls();return false;' title='Download'><i class='fa fa-download'></i> Download</button> |
| 305 | </div> | 330 | </div> |
| 306 | <div style="clear:both"></div> | 331 | <div style="clear:both"></div> |
| 307 | <hr style="margin-bottom: 5px;"> | 332 | <hr style="margin-bottom: 5px;"> |
| 308 | <div> | 333 | <div> |
| 309 | Search <input id=filter name="filter" type="text" style="border:1px solid #efefef; padding: 2px 10px;"> | 334 | Search <input id=filter name="filter" type="text" style="border:1px solid #efefef; padding: 2px 10px;"> |
| 310 | Date: From <input size=10 id='modfrom' name='modfrom' type='text' value='<?php echo date("Y-m-d",$logdate); ?>' onchange='statusLogReloadFun("");' /> | 335 | Date: From <input size=10 id='modfrom' name='modfrom' type='text' value='<?php echo date("Y-m-d",$logdate); ?>' onchange='statusLogReloadFun("");' /> |
| 311 | <select id="modtime" style="border:1px solid #efefef;" onchange='statusLogReloadFun("");'> | 336 | <select id="modtime" style="border:1px solid #efefef;" onchange='statusLogReloadFun("");'> |
| 312 | <?php | 337 | <?php |
| 313 | foreach (range(0,23) as $hour) { | 338 | foreach (range(0,23) as $hour) { |
| 314 | $selected = ($hour == $logtime) ? "selected" : ""; | 339 | $selected = ($hour == $logtime) ? "selected" : ""; |
| 315 | echo "<option value='$hour' $selected>".str_pad($hour, 2, "0", STR_PAD_LEFT) . ":00</option>"; | 340 | echo "<option value='$hour' $selected>".str_pad($hour, 2, "0", STR_PAD_LEFT) . ":00</option>"; |
| 316 | } | 341 | } |
| 317 | ?></select> | 342 | ?> |
| 318 | To <input size=10 id='modto' name='modto' type='text' value='<?php echo date("Y-m-d",$logdateto); ?>' onchange='statusLogReloadFun("");' /> | 343 | </select> |
| 319 | <select id="modtimeto" style="border:1px solid #efefef;" onchange='statusLogReloadFun("");'> | 344 | To <input size=10 id='modto' name='modto' type='text' value='<?php echo date("Y-m-d",$logdateto); ?>' onchange='statusLogReloadFun("");' /> |
| 320 | <?php | 345 | <select id="modtimeto" style="border:1px solid #efefef;" onchange='statusLogReloadFun("");'> |
| 321 | foreach (range(0,23) as $hour) { | 346 | <?php |
| 322 | $selected = ($hour == $logtimeto) ? "selected" : ""; | 347 | foreach (range(0,23) as $hour) { |
| 323 | echo "<option value='$hour' $selected>".str_pad($hour, 2, "0", STR_PAD_LEFT) . ":00</option>"; | 348 | $selected = ($hour == $logtimeto) ? "selected" : ""; |
| 324 | } | 349 | echo "<option value='$hour' $selected>".str_pad($hour, 2, "0", STR_PAD_LEFT) . ":00</option>"; |
| 325 | ?></select> | 350 | } |
| 326 | Campaign | 351 | ?></select> |
| 327 | <select id="campaign" style="border:1px solid #efefef;" onchange='statusLogReloadFun("");'> | 352 | Campaign |
| 328 | <?php foreach($oclientlst as $c){$s="";if($c==$campaign)$s='selected';echo "<option value='$c' $s>$c</option>";} ?> | 353 | <select id="campaign" style="border:1px solid #efefef;" onchange='statusLogReloadFun("");'> |
| 329 | </select> | 354 | <?php foreach($oclientlst as $c){$s="";if($c==$campaign)$s='selected';echo "<option value='$c' $s>$c</option>";} ?> |
| 330 | </div> | 355 | </select> |
| 331 | 356 | </div> | |
| 332 | <div style="clear:both"></div> | 357 | |
| 333 | <hr style="margin:5px;"> | 358 | <div style="clear:both"></div> |
| 334 | 359 | <hr style="margin:5px;"> | |
| 335 | <div style="overflow: auto; margin-top: 10px;"> | 360 | |
| 336 | <table id=logtable class='footable table table-striped table-bordered table-white table-primary footable-loaded' style='font-size:12px; margin:0; border:1px solid #BBB;'> | 361 | <div style="overflow: auto; margin-top: 10px;"> |
| 337 | <thead><?php echo $outhead; ?></thead> | 362 | <table id=logtable class='footable table table-striped table-bordered table-white table-primary footable-loaded' style='font-size:12px; margin:0; border:1px solid #BBB;'> |
| 338 | <?php echo $outstr; ?> | 363 | <thead><?php echo $outhead; ?></thead> |
| 339 | </table> | 364 | <tbody id="logTableData"><?php echo $outstr; ?></tbody> |
| 340 | </div> | 365 | </table> |
| 341 | 366 | </div> | |
| 342 | <div id=dialoglog></div> | 367 | |
| 368 | <div id=dialoglog></div> | ||
| 343 | </div> | 369 | </div> |
| 344 | 370 | ||
| 345 | <script> | 371 | <script> |
| 346 | $(document).ready(function() { | 372 | $(document).ready(function() { |
| 347 | if(!$('#dialoglog').hasClass('ui-dialog-content')) | 373 | if(!$('#dialoglog').hasClass('ui-dialog-content')) |
| 348 | { | 374 | { |
| 349 | $('#dialoglog').dialog({ | 375 | $('#dialoglog').dialog({ |
| 350 | autoOpen: false, | 376 | autoOpen: false, |
| 351 | width: '70%', | 377 | width: '70%', |
| 352 | buttons: { | 378 | buttons: { |
| 353 | "Ok": function() { | 379 | "Ok": function() { |
| 354 | $(this).dialog("close"); | 380 | $(this).dialog("close"); |
| 355 | }, | 381 | }, |
| 356 | "Cancel": function() { | 382 | "Cancel": function() { |
| 357 | $(this).dialog("close"); | 383 | $(this).dialog("close"); |
| 358 | } | 384 | } |
| 359 | } | 385 | } |
| 360 | }); | 386 | }); |
| 361 | } | 387 | } |
| 362 | 388 | waitKeyUpRun("filter",function() { filter2(document.getElementById('filter'), 'logTableData') },"2000"); | |
| 363 | waitKeyUpRun("filter",function() { filter2(document.getElementById('filter'), 'logtable') },"2000"); | 389 | $('#modfrom').datepicker({dateFormat: 'yy-mm-dd',inline: true,changeYear: true,selectOtherMonths: true,yearRange: '<?php echo (date('Y')-70).":".(date('Y')+5); ?>'}); |
| 364 | $('#modfrom').datepicker({dateFormat: 'yy-mm-dd',inline: true,changeYear: true,selectOtherMonths: true,yearRange: '<?php echo (date('Y')-70).":".(date('Y')+5); ?>'}); | 390 | $('#modto').datepicker({dateFormat: 'yy-mm-dd',inline: true,changeYear: true,selectOtherMonths: true,yearRange: '<?php echo (date('Y')-70).":".(date('Y')+5); ?>'}); |
| 365 | $('#modto').datepicker({dateFormat: 'yy-mm-dd',inline: true,changeYear: true,selectOtherMonths: true,yearRange: '<?php echo (date('Y')-70).":".(date('Y')+5); ?>'}); | ||
| 366 | }); | 391 | }); |
| 367 | 392 | ||
| 368 | function dataString() | 393 | function dataString() |
| 369 | { | 394 | { |
| 370 | return 'logdate='+$("#modfrom").val()+'&logtime='+$("#modtime").val()+'&logdateto='+$("#modto").val()+'&logtimeto='+$("#modtimeto").val()+'&campaign='+$("#campaign").val(); | 395 | return 'logdate='+$("#modfrom").val()+'&logtime='+$("#modtime").val()+'&logdateto='+$("#modto").val()+'&logtimeto='+$("#modtimeto").val()+'&campaign='+$("#campaign").val(); |
| 371 | } | 396 | } |
| 372 | function statusLogReloadFun(sortby) | 397 | function statusLogReloadFun(sortby) |
| 373 | { | 398 | { |
| 374 | var sortstr='';if(sortby!="")sortstr="&sort="+sortby | 399 | var sortstr='';if(sortby!="")sortstr="&sort="+sortby |
| 375 | var searchStr = dataString(); | 400 | var searchStr = dataString(); |
| 376 | doAjax('dialer/agenttime?'+searchStr+sortstr,'','rightmainreportdiv','ajax_dialer_reports','singlethis','GET'); | 401 | doAjax('dialer/agenttime?'+searchStr+sortstr,'','rightmainreportdiv','ajax_dialer_reports','singlethis','GET'); |
| 377 | } | 402 | } |
| 378 | function dlAgentlogXls() | 403 | function dlAgentlogXls() |
| 379 | { | 404 | { |
| 380 | var searchStr = dataString(); | 405 | var searchStr = dataString(); |
| 381 | window.open('dialer/agenttime?dllogxls=1&'+searchStr); | 406 | window.open('dialer/agenttime?dllogxls=1&'+searchStr); |
| 382 | return false; | 407 | return false; |
| 383 | } | 408 | } |
| 384 | </script> | 409 | </script> | ... | ... |
-
Please register or sign in to post a comment