From f610bf19ff03c4b571167430472e45f1021a13d2 Mon Sep 17 00:00:00 2001 From: mattf Date: Tue, 25 Mar 2014 11:55:16 +0000 Subject: [PATCH] Added percentages to Agent Performance Detail report Added division by zero check function git-svn-id: svn://192.168.202.10@2091 3d104415-ff17-0410-8863-d5cf3c621b8a --- www/vicidial/AST_agent_performance_detail.php | 234 ++++++++++++------ www/vicidial/functions.php | 8 + 2 files changed, 168 insertions(+), 74 deletions(-) diff --git a/www/vicidial/AST_agent_performance_detail.php b/www/vicidial/AST_agent_performance_detail.php index 8c2b9c8e..323d3df0 100644 --- a/www/vicidial/AST_agent_performance_detail.php +++ b/www/vicidial/AST_agent_performance_detail.php @@ -40,6 +40,7 @@ # 131010-1930 - Expanded user group column, added most recent user group # 131019-1111 - Added user select # 140108-0713 - Added webserver and hostname to report logging +# 140319-1913 - Added option to show percentages for various fields # $startMS = microtime(); @@ -74,7 +75,8 @@ if (isset($_GET["file_download"])) {$file_download=$_GET["file_download"];} elseif (isset($_POST["file_download"])) {$file_download=$_POST["file_download"];} if (isset($_GET["report_display_type"])) {$report_display_type=$_GET["report_display_type"];} elseif (isset($_POST["report_display_type"])) {$report_display_type=$_POST["report_display_type"];} - +if (isset($_GET["show_percentages"])) {$show_percentages=$_GET["show_percentages"];} + elseif (isset($_POST["show_percentages"])) {$show_percentages=$_POST["show_percentages"];} if (strlen($shift)<2) {$shift='ALL';} @@ -517,10 +519,12 @@ $HTML_text.="\n"; $HTML_text.="\n"; $HTML_text.="\n"; $HTML_text.="

\n"; +$HTML_text.="Show %'s\n"; +$HTML_text.=""; $HTML_text.="Display as:
"; $HTML_text.="\n

"; +$HTML_text.="

\n"; $HTML_text.="$NWB#agent_performance_detail$NWE\n"; $HTML_text.="         "; @@ -582,7 +586,13 @@ $statusesHEAD=''; $CSV_header="\"Agent Performance Detail $NOW_TIME\"\n"; $CSV_header.="\"Time range: $query_date_BEGIN to $query_date_END\"\n\n"; $CSV_header.="\"---------- AGENTS Details -------------\"\n"; -$CSV_header.='"USER NAME","ID","CURRENT USER GROUP","MOST RECENT USER GROUP","CALLS","TIME","PAUSE","PAUSAVG","WAIT","WAITAVG","TALK","TALKAVG","DISPO","DISPAVG","DEAD","DEADAVG","CUSTOMER","CUSTAVG"'; + +if ($show_percentages) { + $CSV_header.='"USER NAME","ID","CURRENT USER GROUP","MOST RECENT USER GROUP","CALLS","TIME","PAUSE","PAUSE %","PAUSAVG","WAIT","WAIT %","WAITAVG","TALK","TALK %","TALKAVG","DISPO","DISPO %","DISPAVG","DEAD","DEAD %","DEADAVG","CUSTOMER","CUSTOMER %","CUSTAVG"'; +} else { + $CSV_header.='"USER NAME","ID","CURRENT USER GROUP","MOST RECENT USER GROUP","CALLS","TIME","PAUSE","PAUSAVG","WAIT","WAITAVG","TALK","TALKAVG","DISPO","DISPAVG","DEAD","DEADAVG","CUSTOMER","CUSTAVG"'; +} + $statusesHTML=''; $statusesARY[0]=''; @@ -643,6 +653,7 @@ $CUST_graph=$graph_header."CUST"; $CUSTAVG_graph=$graph_header."CUST AVG"; $i=0; +$userTOTcalls=array(); while ($i < $rows_to_print) { $row=mysqli_fetch_row($rslt); @@ -660,6 +671,8 @@ while ($i < $rows_to_print) $user_group[$i] = $row[9]; $customer_sec[$i] = ($talk_sec[$i] - $dead_sec[$i]); + if (strlen($status[$i])>0) {$userTOTcalls[$row[3]]+=$row[0];} + $max_varname="max_".$status[$i]; $$max_varname=1; @@ -668,11 +681,17 @@ while ($i < $rows_to_print) if ( (!preg_match("/\-$status[$i]\-/i", $statuses)) and (strlen($status[$i])>0) ) { $statusesTXT = sprintf("%8s", $status[$i]); + $statusesHEAD .= "----------+"; $statusesHTML .= " $statusesTXT |"; - $CSV_header.=",\"$status[$i]\""; + if($show_percentages) { + $statusesHEAD .= "------------+"; + $statusesHTML .= " $statusesTXT % |"; + $CSV_header.=",\"$status[$i] %\""; + } + $statuses .= "$status[$i]-"; $statusesARY[$j] = $status[$i]; $j++; @@ -693,9 +712,16 @@ $CSV_header.="\n"; $CSV_lines=''; $ASCII_text.="CALL STATS BREAKDOWN: (Statistics related to handling of calls only) [DOWNLOAD]\n"; -$ASCII_text.="+-----------------+----------+----------------------+----------------------+--------+-----------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+$statusesHEAD\n"; -$ASCII_text.="| USER NAME | ID | CURRENT USER GROUP | MOST RECENT USER GRP | CALLS | TIME | PAUSE |PAUSAVG | WAIT |WAITAVG | TALK |TALKAVG | DISPO |DISPAVG | DEAD |DEADAVG | CUSTOMER |CUSTAVG |$statusesHTML\n"; -$ASCII_text.="+-----------------+----------+----------------------+----------------------+--------+-----------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+$statusesHEAD\n"; + +if ($show_percentages) { + $ASCII_text.="+-----------------+----------+----------------------+----------------------+--------+-----------+----------+------------+--------+----------+------------+--------+----------+------------+--------+----------+------------+--------+----------+------------+--------+----------+------------+--------+$statusesHEAD\n"; + $ASCII_text.="| USER NAME | ID | CURRENT USER GROUP | MOST RECENT USER GRP | CALLS | TIME | PAUSE | PAUSE % |PAUSAVG | WAIT | WAIT % |WAITAVG | TALK | TALK % |TALKAVG | DISPO | DISPO % |DISPAVG | DEAD | DEAD % |DEADAVG | CUSTOMER | CUSTOMER % |CUSTAVG |$statusesHTML\n"; + $ASCII_text.="+-----------------+----------+----------------------+----------------------+--------+-----------+----------+------------+--------+----------+------------+--------+----------+------------+--------+----------+------------+--------+----------+------------+--------+----------+------------+--------+$statusesHEAD\n"; +} else { + $ASCII_text.="+-----------------+----------+----------------------+----------------------+--------+-----------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+$statusesHEAD\n"; + $ASCII_text.="| USER NAME | ID | CURRENT USER GROUP | MOST RECENT USER GRP | CALLS | TIME | PAUSE |PAUSAVG | WAIT |WAITAVG | TALK |TALKAVG | DISPO |DISPAVG | DEAD |DEADAVG | CUSTOMER |CUSTAVG |$statusesHTML\n"; + $ASCII_text.="+-----------------+----------+----------------------+----------------------+--------+-----------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+$statusesHEAD\n"; +} ### BEGIN loop through each user ### @@ -726,6 +752,12 @@ while ($m < $k) $SstatusesHTML=''; $CSVstatuses=''; + $Stalk_sec_pct=0; + $Spause_sec_pct=0; + $Swait_sec_pct=0; + $Sdispo_sec_pct=0; + $Sdead_sec_pct=0; + ### BEGIN loop through each status ### $n=0; while ($n < $j) @@ -757,6 +789,12 @@ while ($m < $k) $CSVstatuses.=",\"$calls[$i]\""; + if ($show_percentages) { + $SstatusTXT_pct=sprintf("%8s", sprintf("%0.2f", ZeroDivisionCheck(100*$calls[$i], $userTOTcalls[$Suser]))); + $SstatusesHTML .= " $SstatusTXT_pct % |"; + $CSVstatuses.=",\"$SstatusTXT_pct %\""; + } + $status_found++; } $i++; @@ -765,6 +803,10 @@ while ($m < $k) { $SstatusesHTML .= " 0 |"; $CSVstatuses.=",\"0\""; + if ($show_percentages) { + $SstatusesHTML .= " 0.00 % |"; + $CSVstatuses.=",\"0.00 %\""; + } $graph_stats[$m][(15+$n)]=0; } ### END loop through each stat line ### @@ -781,18 +823,13 @@ while ($m < $k) $TOTtotDEAD=($TOTtotDEAD + $Sdead_sec); $TOTtotCUSTOMER=($TOTtotCUSTOMER + $Scustomer_sec); $Stime = ($Stalk_sec + $Spause_sec + $Swait_sec + $Sdispo_sec); - if ( ($Scalls > 0) and ($Stalk_sec > 0) ) {$Stalk_avg = ($Stalk_sec/$Scalls);} - else {$Stalk_avg=0;} - if ( ($Scalls > 0) and ($Spause_sec > 0) ) {$Spause_avg = ($Spause_sec/$Scalls);} - else {$Spause_avg=0;} - if ( ($Scalls > 0) and ($Swait_sec > 0) ) {$Swait_avg = ($Swait_sec/$Scalls);} - else {$Swait_avg=0;} - if ( ($Scalls > 0) and ($Sdispo_sec > 0) ) {$Sdispo_avg = ($Sdispo_sec/$Scalls);} - else {$Sdispo_avg=0;} - if ( ($Scalls > 0) and ($Sdead_sec > 0) ) {$Sdead_avg = ($Sdead_sec/$Scalls);} - else {$Sdead_avg=0;} - if ( ($Scalls > 0) and ($Scustomer_sec > 0) ) {$Scustomer_avg = ($Scustomer_sec/$Scalls);} - else {$Scustomer_avg=0;} + + $Stalk_avg = ZeroDivisionCheck($Stalk_sec, $Scalls); + $Spause_avg = ZeroDivisionCheck($Spause_sec, $Scalls); + $Swait_avg = ZeroDivisionCheck($Swait_sec, $Scalls); + $Sdispo_avg = ZeroDivisionCheck($Sdispo_sec, $Scalls); + $Sdead_avg = ZeroDivisionCheck($Sdead_sec, $Scalls); + $Scustomer_avg = ZeroDivisionCheck($Scustomer_sec, $Scalls); $RAWuser = $Suser; $RAWcalls = $Scalls; @@ -850,41 +887,62 @@ while ($m < $k) $graph_stats[$m][12]=trim($Sdead_avg); $graph_stats[$m][13]=trim($Scustomer_sec); $graph_stats[$m][14]=trim($Scustomer_avg); - - $pfUSERtime_MS = sec_convert($Stime,'H'); - $pfUSERtotTALK_MS = sec_convert($Stalk_sec,'H'); - $pfUSERavgTALK_MS = sec_convert($Stalk_avg,'M'); - $USERtotPAUSE_MS = sec_convert($Spause_sec,'H'); - $USERavgPAUSE_MS = sec_convert($Spause_avg,'M'); - $USERtotWAIT_MS = sec_convert($Swait_sec,'H'); - $USERavgWAIT_MS = sec_convert($Swait_avg,'M'); - $USERtotDISPO_MS = sec_convert($Sdispo_sec,'H'); - $USERavgDISPO_MS = sec_convert($Sdispo_avg,'M'); - $USERtotDEAD_MS = sec_convert($Sdead_sec,'H'); - $USERavgDEAD_MS = sec_convert($Sdead_avg,'M'); - $USERtotCUSTOMER_MS = sec_convert($Scustomer_sec,'H'); - $USERavgCUSTOMER_MS = sec_convert($Scustomer_avg,'M'); + - $pfUSERtime_MS = sprintf("%9s", $pfUSERtime_MS); - $pfUSERtotTALK_MS = sprintf("%8s", $pfUSERtotTALK_MS); - $pfUSERavgTALK_MS = sprintf("%6s", $pfUSERavgTALK_MS); - $pfUSERtotPAUSE_MS = sprintf("%8s", $USERtotPAUSE_MS); - $pfUSERavgPAUSE_MS = sprintf("%6s", $USERavgPAUSE_MS); - $pfUSERtotWAIT_MS = sprintf("%8s", $USERtotWAIT_MS); - $pfUSERavgWAIT_MS = sprintf("%6s", $USERavgWAIT_MS); - $pfUSERtotDISPO_MS = sprintf("%8s", $USERtotDISPO_MS); - $pfUSERavgDISPO_MS = sprintf("%6s", $USERavgDISPO_MS); - $pfUSERtotDEAD_MS = sprintf("%8s", $USERtotDEAD_MS); - $pfUSERavgDEAD_MS = sprintf("%6s", $USERavgDEAD_MS); - $pfUSERtotCUSTOMER_MS = sprintf("%8s", $USERtotCUSTOMER_MS); - $pfUSERavgCUSTOMER_MS = sprintf("%6s", $USERavgCUSTOMER_MS); + $pfUSERtime_MS = sec_convert($Stime,'H'); + $pfUSERtotTALK_MS = sec_convert($Stalk_sec,'H'); + $pfUSERtotTALK_MS_pct = sprintf("%0.2f", ZeroDivisionCheck(100*$Stalk_sec, $Stime)); + $pfUSERavgTALK_MS = sec_convert($Stalk_avg,'M'); + $USERtotPAUSE_MS = sec_convert($Spause_sec,'H'); + $pfUSERtotPAUSE_MS_pct = sprintf("%0.2f", ZeroDivisionCheck(100*$Spause_sec, $Stime)); + $USERavgPAUSE_MS = sec_convert($Spause_avg,'M'); + $USERtotWAIT_MS = sec_convert($Swait_sec,'H'); + $pfUSERtotWAIT_MS_pct = sprintf("%0.2f", ZeroDivisionCheck(100*$Swait_sec, $Stime)); + $USERavgWAIT_MS = sec_convert($Swait_avg,'M'); + $USERtotDISPO_MS = sec_convert($Sdispo_sec,'H'); + $pfUSERtotDISPO_MS_pct = sprintf("%0.2f", ZeroDivisionCheck(100*$Sdispo_sec, $Stime)); + $USERavgDISPO_MS = sec_convert($Sdispo_avg,'M'); + $USERtotDEAD_MS = sec_convert($Sdead_sec,'H'); + $pfUSERtotDEAD_MS_pct = sprintf("%0.2f", ZeroDivisionCheck(100*$Sdead_sec, $Stime)); + $USERavgDEAD_MS = sec_convert($Sdead_avg,'M'); + $USERtotCUSTOMER_MS = sec_convert($Scustomer_sec,'H'); + $pfUSERtotCUSTOMER_MS_pct = sprintf("%0.2f", ZeroDivisionCheck(100*$Scustomer_sec, $Stime)); + $USERavgCUSTOMER_MS = sec_convert($Scustomer_avg,'M'); + + $pfUSERtime_MS = sprintf("%9s", $pfUSERtime_MS); + $pfUSERtotTALK_MS = sprintf("%8s", $pfUSERtotTALK_MS); + $pfUSERtotTALK_MS_pct = sprintf("%8s", $pfUSERtotTALK_MS_pct); + $pfUSERavgTALK_MS = sprintf("%6s", $pfUSERavgTALK_MS); + $pfUSERtotPAUSE_MS = sprintf("%8s", $USERtotPAUSE_MS); + $pfUSERtotPAUSE_MS_pct = sprintf("%8s", $pfUSERtotPAUSE_MS_pct); + $pfUSERavgPAUSE_MS = sprintf("%6s", $USERavgPAUSE_MS); + $pfUSERtotWAIT_MS = sprintf("%8s", $USERtotWAIT_MS); + $pfUSERtotWAIT_MS_pct = sprintf("%8s", $pfUSERtotWAIT_MS_pct); + $pfUSERavgWAIT_MS = sprintf("%6s", $USERavgWAIT_MS); + $pfUSERtotDISPO_MS = sprintf("%8s", $USERtotDISPO_MS); + $pfUSERtotDISPO_MS_pct = sprintf("%8s", $pfUSERtotDISPO_MS_pct); + $pfUSERavgDISPO_MS = sprintf("%6s", $USERavgDISPO_MS); + $pfUSERtotDEAD_MS = sprintf("%8s", $USERtotDEAD_MS); + $pfUSERtotDEAD_MS_pct = sprintf("%8s", $pfUSERtotDEAD_MS_pct); + $pfUSERavgDEAD_MS = sprintf("%6s", $USERavgDEAD_MS); + $pfUSERtotCUSTOMER_MS = sprintf("%8s", $USERtotCUSTOMER_MS); + $pfUSERtotCUSTOMER_MS_pct = sprintf("%8s", $pfUSERtotCUSTOMER_MS_pct); + $pfUSERavgCUSTOMER_MS = sprintf("%6s", $USERavgCUSTOMER_MS); $PAUSEtotal[$m] = $pfUSERtotPAUSE_MS; - $Toutput = "| $Sfull_name | $Suser | $Suser_group | $Slast_user_group | $Scalls | $pfUSERtime_MS | $pfUSERtotPAUSE_MS | $pfUSERavgPAUSE_MS | $pfUSERtotWAIT_MS | $pfUSERavgWAIT_MS | $pfUSERtotTALK_MS | $pfUSERavgTALK_MS | $pfUSERtotDISPO_MS | $pfUSERavgDISPO_MS | $pfUSERtotDEAD_MS | $pfUSERavgDEAD_MS | $pfUSERtotCUSTOMER_MS | $pfUSERavgCUSTOMER_MS |$SstatusesHTML\n"; + if ($show_percentages) { + $Toutput = "| $Sfull_name | $Suser | $Suser_group | $Slast_user_group | $Scalls | $pfUSERtime_MS | $pfUSERtotPAUSE_MS | $pfUSERtotPAUSE_MS_pct % | $pfUSERavgPAUSE_MS | $pfUSERtotWAIT_MS | $pfUSERtotWAIT_MS_pct % | $pfUSERavgWAIT_MS | $pfUSERtotTALK_MS | $pfUSERtotTALK_MS_pct % | $pfUSERavgTALK_MS | $pfUSERtotDISPO_MS | $pfUSERtotDISPO_MS_pct % | $pfUSERavgDISPO_MS | $pfUSERtotDEAD_MS | $pfUSERtotDEAD_MS_pct % | $pfUSERavgDEAD_MS | $pfUSERtotCUSTOMER_MS | $pfUSERtotCUSTOMER_MS_pct % | $pfUSERavgCUSTOMER_MS |$SstatusesHTML\n"; + } else { + $Toutput = "| $Sfull_name | $Suser | $Suser_group | $Slast_user_group | $Scalls | $pfUSERtime_MS | $pfUSERtotPAUSE_MS | $pfUSERavgPAUSE_MS | $pfUSERtotWAIT_MS | $pfUSERavgWAIT_MS | $pfUSERtotTALK_MS | $pfUSERavgTALK_MS | $pfUSERtotDISPO_MS | $pfUSERavgDISPO_MS | $pfUSERtotDEAD_MS | $pfUSERavgDEAD_MS | $pfUSERtotCUSTOMER_MS | $pfUSERavgCUSTOMER_MS |$SstatusesHTML\n"; + } $CSV_lines.="\"$Sfull_nameRAW\","; - $CSV_lines.=preg_replace('/\s/', '', "\"$SuserRAW\",\"$Suser_group\",\"$Slast_user_group\",\"$Scalls\",\"$pfUSERtime_MS\",\"$pfUSERtotPAUSE_MS\",\"$pfUSERavgPAUSE_MS\",\"$pfUSERtotWAIT_MS\",\"$pfUSERavgWAIT_MS\",\"$pfUSERtotTALK_MS\",\"$pfUSERavgTALK_MS\",\"$pfUSERtotDISPO_MS\",\"$pfUSERavgDISPO_MS\",\"$pfUSERtotDEAD_MS\",\"$pfUSERavgDEAD_MS\",\"$pfUSERtotCUSTOMER_MS\",\"$pfUSERavgCUSTOMER_MS\"$CSVstatuses"); + if ($show_percentages) { + $CSV_lines.=preg_replace('/\s/', '', "\"$SuserRAW\",\"$Suser_group\",\"$Slast_user_group\",\"$Scalls\",\"$pfUSERtime_MS\",\"$pfUSERtotPAUSE_MS\",\"$pfUSERtotPAUSE_MS_pct\",\"$pfUSERavgPAUSE_MS\",\"$pfUSERtotWAIT_MS\",\"$pfUSERtotWAIT_MS_pct\",\"$pfUSERavgWAIT_MS\",\"$pfUSERtotTALK_MS\",\"$pfUSERtotTALK_MS_pct\",\"$pfUSERavgTALK_MS\",\"$pfUSERtotDISPO_MS\",\"$pfUSERtotDISPO_MS_pct\",\"$pfUSERavgDISPO_MS\",\"$pfUSERtotDEAD_MS\",\"$pfUSERtotDEAD_MS_pct\",\"$pfUSERavgDEAD_MS\",\"$pfUSERtotCUSTOMER_MS\",\"$pfUSERtotCUSTOMER_MS_pct\",\"$pfUSERavgCUSTOMER_MS\"$CSVstatuses"); + } else { + $CSV_lines.=preg_replace('/\s/', '', "\"$SuserRAW\",\"$Suser_group\",\"$Slast_user_group\",\"$Scalls\",\"$pfUSERtime_MS\",\"$pfUSERtotPAUSE_MS\",\"$pfUSERavgPAUSE_MS\",\"$pfUSERtotWAIT_MS\",\"$pfUSERavgWAIT_MS\",\"$pfUSERtotTALK_MS\",\"$pfUSERavgTALK_MS\",\"$pfUSERtotDISPO_MS\",\"$pfUSERavgDISPO_MS\",\"$pfUSERtotDEAD_MS\",\"$pfUSERavgDEAD_MS\",\"$pfUSERtotCUSTOMER_MS\",\"$pfUSERavgCUSTOMER_MS\"$CSVstatuses"); + } $CSV_lines.="\n"; $TOPsorted_output[$m] = $Toutput; @@ -952,6 +1010,10 @@ while ($n < $j) if ($status_found < 1) { $SUMstatusesHTML .= " 0 |"; + if ($show_percentages) { + $SUMstatusesHTML .= " 0.00 % |"; + $CSVSUMstatuses.=",\"0.00 %\""; + } $$total_var=0; } else @@ -959,6 +1021,11 @@ while ($n < $j) $SUMstatusTXT = sprintf("%8s", $Scalls); $SUMstatusesHTML .= " $SUMstatusTXT |"; $CSVSUMstatuses.=",\"$Scalls\""; + if ($show_percentages) { + $SstatusTXT_pct=sprintf("%8s", sprintf("%0.2f", ZeroDivisionCheck(100*$Scalls,$TOTcalls))); + $SUMstatusesHTML .= " $SstatusTXT_pct % |"; + $CSVSUMstatuses.=",\"$SstatusTXT_pct %\""; + } $$total_var=$Scalls; } $n++; @@ -988,6 +1055,12 @@ $TOTtotDEAD_MS = sec_convert($TOTtotDEAD,'H'); $TOTtotPAUSE_MS = sec_convert($TOTtotPAUSE,'H'); $TOTtotWAIT_MS = sec_convert($TOTtotWAIT,'H'); $TOTtotCUSTOMER_MS = sec_convert($TOTtotCUSTOMER,'H'); +$TOTtotTALK_MS_pct = sprintf("%0.2f", ZeroDivisionCheck(100*$TOTtotTALK, $TOTtime)); +$TOTtotDISPO_MS_pct = sprintf("%0.2f", ZeroDivisionCheck(100*$TOTtotDISPO, $TOTtime)); +$TOTtotDEAD_MS_pct = sprintf("%0.2f", ZeroDivisionCheck(100*$TOTtotDEAD, $TOTtime)); +$TOTtotPAUSE_MS_pct = sprintf("%0.2f", ZeroDivisionCheck(100*$TOTtotPAUSE, $TOTtime)); +$TOTtotWAIT_MS_pct = sprintf("%0.2f", ZeroDivisionCheck(100*$TOTtotWAIT, $TOTtime)); +$TOTtotCUSTOMER_MS_pct =sprintf("%0.2f", ZeroDivisionCheck(100*$TOTtotCUSTOMER, $TOTtime)); $TOTavgTALK_MS = sec_convert($TOTavgTALK,'M'); $TOTavgDISPO_MS = sec_convert($TOTavgDISPO,'H'); $TOTavgDEAD_MS = sec_convert($TOTavgDEAD,'H'); @@ -1002,6 +1075,12 @@ $TOTtotDEAD_MS = sprintf("%10s", $TOTtotDEAD_MS); $TOTtotPAUSE_MS = sprintf("%10s", $TOTtotPAUSE_MS); $TOTtotWAIT_MS = sprintf("%10s", $TOTtotWAIT_MS); $TOTtotCUSTOMER_MS = sprintf("%10s", $TOTtotCUSTOMER_MS); +$TOTtotTALK_MS_pct = sprintf("%8s", $TOTtotTALK_MS_pct); +$TOTtotDISPO_MS_pct = sprintf("%8s", $TOTtotDISPO_MS_pct); +$TOTtotDEAD_MS_pct = sprintf("%8s", $TOTtotDEAD_MS_pct); +$TOTtotPAUSE_MS_pct = sprintf("%8s", $TOTtotPAUSE_MS_pct); +$TOTtotWAIT_MS_pct = sprintf("%8s", $TOTtotWAIT_MS_pct); +$TOTtotCUSTOMER_MS_pct = sprintf("%8s", $TOTtotCUSTOMER_MS_pct); $TOTavgTALK_MS = sprintf("%6s", $TOTavgTALK_MS); $TOTavgDISPO_MS = sprintf("%6s", $TOTavgDISPO_MS); $TOTavgDEAD_MS = sprintf("%6s", $TOTavgDEAD_MS); @@ -1023,11 +1102,15 @@ while(strlen($TOTavgPAUSE_MS)>6) {$TOTavgPAUSE_MS = substr("$TOTavgPAUSE_MS", 0, while(strlen($TOTavgWAIT_MS)>6) {$TOTavgWAIT_MS = substr("$TOTavgWAIT_MS", 0, -1);} while(strlen($TOTavgCUSTOMER_MS)>6) {$TOTavgCUSTOMER_MS = substr("$TOTavgCUSTOMER_MS", 0, -1);} - -$ASCII_text.="+-----------------+----------+----------------------+----------------------+--------+-----------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+$statusesHEAD\n"; -$ASCII_text.="| TOTALS AGENTS:$TOT_AGENTS | $TOTcalls| $TOTtime_MS|$TOTtotPAUSE_MS| $TOTavgPAUSE_MS |$TOTtotWAIT_MS| $TOTavgWAIT_MS |$TOTtotTALK_MS| $TOTavgTALK_MS |$TOTtotDISPO_MS| $TOTavgDISPO_MS |$TOTtotDEAD_MS| $TOTavgDEAD_MS |$TOTtotCUSTOMER_MS| $TOTavgCUSTOMER_MS |$SUMstatusesHTML\n"; -$ASCII_text.="+-----------------+----------+----------------------+----------------------+--------+-----------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+$statusesHEAD\n"; - +if ($show_percentages) { + $ASCII_text.="+-----------------+----------+----------------------+----------------------+--------+-----------+----------+------------+--------+----------+------------+--------+----------+------------+--------+----------+------------+--------+----------+------------+--------+----------+------------+--------+$statusesHEAD\n"; + $ASCII_text.="| TOTALS AGENTS:$TOT_AGENTS | $TOTcalls| $TOTtime_MS|$TOTtotPAUSE_MS| $TOTtotPAUSE_MS_pct % | $TOTavgPAUSE_MS |$TOTtotWAIT_MS| $TOTtotWAIT_MS_pct % | $TOTavgWAIT_MS |$TOTtotTALK_MS| $TOTtotTALK_MS_pct % | $TOTavgTALK_MS |$TOTtotDISPO_MS| $TOTtotDISPO_MS_pct % | $TOTavgDISPO_MS |$TOTtotDEAD_MS| $TOTtotDEAD_MS_pct % | $TOTavgDEAD_MS |$TOTtotCUSTOMER_MS| $TOTtotCUSTOMER_MS_pct % | $TOTavgCUSTOMER_MS |$SUMstatusesHTML\n"; + $ASCII_text.="+-----------------+----------+----------------------+----------------------+--------+-----------+----------+------------+--------+----------+------------+--------+----------+------------+--------+----------+------------+--------+----------+------------+--------+----------+------------+--------+$statusesHEAD\n"; +} else { + $ASCII_text.="+-----------------+----------+----------------------+----------------------+--------+-----------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+$statusesHEAD\n"; + $ASCII_text.="| TOTALS AGENTS:$TOT_AGENTS | $TOTcalls| $TOTtime_MS|$TOTtotPAUSE_MS| $TOTavgPAUSE_MS |$TOTtotWAIT_MS| $TOTavgWAIT_MS |$TOTtotTALK_MS| $TOTavgTALK_MS |$TOTtotDISPO_MS| $TOTavgDISPO_MS |$TOTtotDEAD_MS| $TOTavgDEAD_MS |$TOTtotCUSTOMER_MS| $TOTavgCUSTOMER_MS |$SUMstatusesHTML\n"; + $ASCII_text.="+-----------------+----------+----------------------+----------------------+--------+-----------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+----------+--------+$statusesHEAD\n"; +} for ($e=0; $e".$graph_stats[$d][1].""; - $TIME_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][2], 'HF').""; - $PAUSE_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][3], 'HF').""; - $PAUSEAVG_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][4], 'HF').""; - $WAIT_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][5], 'HF').""; - $WAITAVG_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][6], 'HF').""; - $TALK_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][7], 'HF').""; - $TALKAVG_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][8], 'HF').""; - $DISPO_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][9], 'HF').""; - $DISPOAVG_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][10], 'HF').""; - $DEAD_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][11], 'HF').""; - $DEADAVG_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][12], 'HF').""; - $CUST_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][13], 'HF').""; - $CUSTAVG_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][14], 'HF').""; + $CALLS_graph.=" ".$graph_stats[$d][0]."".$graph_stats[$d][1].""; + $TIME_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][2], 'HF').""; + $PAUSE_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][3], 'HF').""; + $PAUSEAVG_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][4], 'HF').""; + $WAIT_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][5], 'HF').""; + $WAITAVG_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][6], 'HF').""; + $TALK_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][7], 'HF').""; + $TALKAVG_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][8], 'HF').""; + $DISPO_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][9], 'HF').""; + $DISPOAVG_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][10], 'HF').""; + $DEAD_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][11], 'HF').""; + $DEADAVG_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][12], 'HF').""; + $CUST_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][13], 'HF').""; + $CUSTAVG_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][14], 'HF').""; for ($e=0; $e\n"; - $$varname.=" ".$graph_stats[$d][0]."".$graph_stats[$d][($e+15)].""; + $$varname.=" ".$graph_stats[$d][0]."".$graph_stats[$d][($e+15)].""; } } @@ -1124,8 +1207,11 @@ $GRAPH3=" $GRAPH_text.=$JS_text.$GRAPH.$GRAPH2.$GRAPH3; - -$CSV_total=preg_replace('/\s/', '', "\"\",\"\",\"TOTALS\",\"AGENTS:$TOT_AGENTS\",\"$TOTcalls\",\"$TOTtime_MS\",\"$TOTtotPAUSE_MS\",\"$TOTavgPAUSE_MS\",\"$TOTtotWAIT_MS\",\"$TOTavgWAIT_MS\",\"$TOTtotTALK_MS\",\"$TOTavgTALK_MS\",\"$TOTtotDISPO_MS\",\"$TOTavgDISPO_MS\",\"$TOTtotDEAD_MS\",\"$TOTavgDEAD_MS\",\"$TOTtotCUSTOMER_MS\",\"$TOTavgCUSTOMER_MS\"$CSVSUMstatuses"); +if ($show_percentages) { + $CSV_total=preg_replace('/\s/', '', "\"\",\"\",\"TOTALS\",\"AGENTS:$TOT_AGENTS\",\"$TOTcalls\",\"$TOTtime_MS\",\"$TOTtotPAUSE_MS\",\"$TOTtotPAUSE_MS_pct %\",\"$TOTavgPAUSE_MS\",\"$TOTtotWAIT_MS\",\"$TOTtotWAIT_MS_pct %\",\"$TOTavgWAIT_MS\",\"$TOTtotTALK_MS\",\"$TOTtotTALK_MS_pct %\",\"$TOTavgTALK_MS\",\"$TOTtotDISPO_MS\",\"$TOTtotDISPO_MS_pct %\",\"$TOTavgDISPO_MS\",\"$TOTtotDEAD_MS\",\"$TOTtotDEAD_MS_pct %\",\"$TOTavgDEAD_MS\",\"$TOTtotCUSTOMER_MS\",\"$TOTtotCUSTOMER_MS_pct %\",\"$TOTavgCUSTOMER_MS\"$CSVSUMstatuses\n\n"); +} else { + $CSV_total=preg_replace('/\s/', '', "\"\",\"\",\"TOTALS\",\"AGENTS:$TOT_AGENTS\",\"$TOTcalls\",\"$TOTtime_MS\",\"$TOTtotPAUSE_MS\",\"$TOTavgPAUSE_MS\",\"$TOTtotWAIT_MS\",\"$TOTavgWAIT_MS\",\"$TOTtotTALK_MS\",\"$TOTavgTALK_MS\",\"$TOTtotDISPO_MS\",\"$TOTavgDISPO_MS\",\"$TOTtotDEAD_MS\",\"$TOTavgDEAD_MS\",\"$TOTtotCUSTOMER_MS\",\"$TOTavgCUSTOMER_MS\"$CSVSUMstatuses\n\n"); +} if ($file_download == 1) { @@ -1466,16 +1552,16 @@ for ($e=0; $e".sec_convert($graph_stats[$d][1], 'H').""; - $NONPAUSE_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][2], 'H').""; - $PAUSE_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][3], 'H').""; + $TOTAL_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][1], 'H').""; + $NONPAUSE_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][2], 'H').""; + $PAUSE_graph.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][3], 'H').""; for ($e=0; $e".sec_convert($graph_stats[$d][($e+4)], 'H').""; + $$varname.=" ".$graph_stats[$d][0]."".sec_convert($graph_stats[$d][($e+4)], 'H').""; } } diff --git a/www/vicidial/functions.php b/www/vicidial/functions.php index f3bc297e..5c4b6502 100644 --- a/www/vicidial/functions.php +++ b/www/vicidial/functions.php @@ -17,6 +17,7 @@ # 130615-2111 - Added user authentication function and login lockout for 15 minutes after 10 failed login # 130705-1957 - Added password encryption compatibility # 130831-0919 - Changed to mysqli PHP functions +# 140319-1924 - Added ZeroDivisionCheck function # ##### BEGIN validate user login credentials, check for failed lock out ##### @@ -406,4 +407,11 @@ function mysql_to_mysqli($stmt, $link) { return $rslt; } +function ZeroDivisionCheck($dividend, $divisor) { + if ($divisor>0) { + return ($dividend/$divisor); + } else { + return 0; + } +} ?>