diff --git a/app/call_centers/call_center_agent_dashboard.php b/app/call_centers/call_center_agent_dashboard.php new file mode 100644 index 0000000000..53800537c6 --- /dev/null +++ b/app/call_centers/call_center_agent_dashboard.php @@ -0,0 +1,231 @@ + + Portions created by the Initial Developer are Copyright (C) 2017 + the Initial Developer. All Rights Reserved. + + Contributor(s): + Mark J Crane +*/ + +//includes + require_once "root.php"; + require_once "resources/require.php"; + require_once "resources/check_auth.php"; + +//check permissions + if (permission_exists('call_center_queue_view')) { + //access granted + } + else { + echo "access denied"; + exit; + } + +//add multi-lingual support + $language = new text; + $text = $language->get($_SESSION['domain']['language']['code'], 'app/call_centers'); + +//includes and title + require_once "resources/header.php"; + $document['title'] = $text['title-call_center_queues']; + require_once "resources/paging.php"; + +//get http variables and set as php variables + $order_by = $_GET["order_by"]; + $order = $_GET["order"]; + +//setup the event socket connection + $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); + +//get the http post values and set them as php variables + if (count($_POST) > 0) { + foreach($_POST['agents'] as $row) { + if (strlen($row['agent_status']) > 0) { + //echo "
\n";
+				//print_r($row);
+				//echo "
\n"; + + //agent set status + if ($fp) { + //set the user_status + $sql = "update v_users set "; + $sql .= "user_status = '".$row['agent_status']."' "; + $sql .= "where domain_uuid = '".$domain_uuid."' "; + $sql .= "and username = '".$row['agent_name']."' "; + //echo $sql."\n"; + //$prep_statement = $db->prepare(check_sql($sql)); + //$prep_statement->execute(); + + //set the agent status to available and assign the agent to the queue with the tier + if ($row['agent_status'] == 'Available') { + //set the call center status + //$cmd = "api callcenter_config agent set status ".$row['agent_name']."@".$_SESSION['domain_name']." '".$row['agent_status']."'"; + //$response = event_socket_request($fp, $cmd); + + //assign the agent to the queue + $cmd = "api callcenter_config tier add ".$row['queue_name']."@".$_SESSION['domain_name']." ".$row['agent_name']."@".$_SESSION['domain_name']." 1 1"; + $response = event_socket_request($fp, $cmd); + } + + //un-assign the agent from the queue + if ($row['agent_status'] == 'Logged Out') { + $cmd = "api callcenter_config tier del ".$row['queue_name']."@".$_SESSION['domain_name']." ".$row['agent_name']."@".$_SESSION['domain_name']; + $response = event_socket_request($fp, $cmd); + } + + //echo $cmd."\n"; + usleep(200); + } + } + } + } + +//get the agent list from event socket + $switch_cmd = 'callcenter_config tier list'; + $event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd)); + $call_center_tiers = csv_to_named_array($event_socket_str, '|'); + //echo "
\n";
+	//print_r($call_center_tiers);
+	//echo "
\n"; + +//get the call center queues from the database + $sql = "select * from v_call_center_queues "; + $sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; + $sql .= "order by queue_name asc "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $call_center_queues = $prep_statement->fetchAll(PDO::FETCH_NAMED); + unset ($prep_statement, $sql); + +//get the agents from the database + $sql = "select * from v_call_center_agents "; + $sql .= "where user_uuid = '".$_SESSION['user_uuid']."' "; + $sql .= "and domain_uuid = '$domain_uuid' "; + //$sql .= "ORDER BY agent_name ASC "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $agent = $prep_statement->fetch(PDO::FETCH_NAMED); + //echo "
\n";
+	//print_r($agent);
+	//echo "
\n"; + +//update the queue status + $x = 0; + foreach ($call_center_queues as $queue) { + $call_center_queues[$x]['queue_status'] = 'Logged Out'; + foreach ($call_center_tiers as $tier) { + if ($queue['queue_name'] .'@'. $_SESSION['domain_name'] == $tier['queue'] + && $agent['agent_name'] .'@'. $_SESSION['domain_name'] == $tier['agent']) { + $call_center_queues[$x]['queue_status'] = 'Available'; + } + } + $x++; + } + //echo "
\n";
+	//print_r($call_center_queues);
+	//echo "
\n"; + +//set the row styles + $c = 0; + $row_style["0"] = "row_style0"; + $row_style["1"] = "row_style1"; + +//show the content + echo "
\n"; + echo "\n"; + echo "\n"; + echo " \n"; + echo " \n"; + echo "\n"; + //echo "\n"; + //echo " \n"; + //echo "\n"; + echo "
".$text['header-call_center_queues']."\n"; + echo "

".$text['label-agent']."

".$agent['agent_name']."\n"; + echo "
\n"; + //echo $text['description-call_center_queues']."

\n"; + //echo "
\n"; + + echo "\n"; + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo "\n"; + + if (count($call_center_queues) > 0) { + $x = 0; + foreach($call_center_queues as $row) { + echo "\n"; + echo " \n"; + + echo " \n"; + + echo " \n"; + + //echo " \n"; + echo "\n"; + $x++; + if ($c==0) { $c=1; } else { $c=0; } + } //end foreach + unset($sql, $result, $row_count); + } //end if results + + echo "\n"; + echo "\n"; + echo "\n"; + + echo "
".$text['label-queue_name']."".$text['label-status']."".$text['label-options']."
\n"; + echo " ".$row['queue_name']."\n"; + echo " \n"; + if ($row['queue_status'] == "Available") { + echo $text['option-available']; + } + if ($row['queue_status'] == "Logged Out") { + echo $text['option-logged_out']; + } + echo " "; + echo " \n"; + echo " \n"; + echo " \n"; + //echo "   \n"; + echo "   \n"; + echo "   \n"; + //echo "   \n"; + //echo " \n"; + echo " ".$row[queue_description]." 
\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo "
 \n"; + echo "
\n"; + echo " \n"; + echo "
\n"; + echo "
"; + echo "

"; + echo "
\n"; + +//show the footer + require_once "resources/footer.php"; + +?>