Portions created by the Initial Developer are Copyright (C) 2008-2018 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_agent_view')) { //access granted } else { echo "access denied"; exit; } //add multi-lingual support $language = new text; $text = $language->get(); //includes and title require_once "resources/header.php"; $document['title'] = $text['title-call_center_agent_status']; require_once "resources/paging.php"; //get the agents from the database $sql = "select * from v_call_center_tiers "; $sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $tiers = $prep_statement->fetchAll(PDO::FETCH_NAMED); if (count($tiers) == 0) { $per_queue_login = true; } else { $per_queue_login = false; } unset($prep_statement, $sql); //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) { //debug info //echo "
\n";
		//print_r($_POST);
		//echo "
\n"; foreach($_POST['agents'] as $row) { if (strlen($row['agent_status']) > 0) { //agent set status if ($fp) { //set the user_status if (!isset($row['queue_name'])) { $sql = "update v_users set "; $sql .= "user_status = '".$row['agent_status']."' "; $sql .= "where domain_uuid = '".$domain_uuid."' "; $sql .= "and user_uuid = '".$row['user_uuid']."' "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); } //set the call center status if (!isset($row['queue_name'])) { if ($row['agent_status'] == "Do Not Disturb") { //set the default dnd action $dnd_action = "add"; //set the call center status to Logged Out $cmd = "api callcenter_config agent set status ".$row['agent_uuid']." 'Logged Out'"; } else { $cmd = "api callcenter_config agent set status ".$row['agent_uuid']." '".$row['agent_status']."'"; } $response = event_socket_request($fp, $cmd); } //echo $cmd."\n"; //set the agent status to available and assign the agent to the queue with the tier if (isset($row['queue_uuid']) && $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_uuid']." ".$row['agent_uuid']." 1 1"; //echo $cmd."
\n"; $response = event_socket_request($fp, $cmd); } //un-assign the agent from the queue if (isset($row['queue_uuid']) && $row['agent_status'] == 'Logged Out') { $cmd = "api callcenter_config tier del ".$row['queue_uuid']." ".$row['agent_uuid']; //echo $cmd."
\n"; $response = event_socket_request($fp, $cmd); } usleep(200); //set the blf status //get the agents from the database $sql = "select agent_name from v_call_center_agents "; $sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; $sql .= "and call_center_agent_uuid = '".$row['agent_uuid']."' "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $agent_name = $prep_statement->fetchAll(PDO::FETCH_NAMED); if ($row['agent_status'] == 'Available') { $answer_state = 'confirmed'; } else { $answer_state = 'terminated'; } $call_center_notify = new call_center_notify; $call_center_notify->domain_name = $_SESSION['domain_name']; $call_center_notify->agent_name = $agent_name[0]['agent_name']; $call_center_notify->answer_state = $answer_state; $call_center_notify->agent_uuid = $row['agent_uuid']; $call_center_notify->send_call_center_notify(); unset($call_center_notify); } } } } //get the agents from the database $sql = "select * from v_call_center_agents "; $sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; $sql .= "order by agent_name ASC "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $agents = $prep_statement->fetchAll(PDO::FETCH_NAMED); //get the agent list from event socket $switch_cmd = 'callcenter_config agent list'; $event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd)); $agent_list = csv_to_named_array($event_socket_str, '|'); //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, '|'); //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); //add the status to the call_center_queues array $x = 0; foreach ($call_center_queues as $queue) { //get the queue list from event socket $switch_cmd = "callcenter_config queue list agents ".$queue['call_center_queue_uuid']; $event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd)); $queue_list = csv_to_named_array($event_socket_str, '|'); $call_center_queues[$x]['queue_list'] = $queue_list; $x++; } //get the agent status from mod_callcenter and update the agent status in the agents array $x = 0; foreach ($agents as $row) { //add the domain name $domain_name = $_SESSION['domains'][$row['domain_uuid']]['domain_name']; $agents[$x]['domain_name'] = $domain_name; //update the queue status $i = 0; foreach ($call_center_queues as $queue) { $agents[$x]['queues'][$i]['agent_name'] = $row['agent_name']; $agents[$x]['queues'][$i]['queue_name'] = $queue['queue_name']; $agents[$x]['queues'][$i]['call_center_agent_uuid'] = $row['call_center_agent_uuid']; $agents[$x]['queues'][$i]['call_center_queue_uuid'] = $queue['call_center_queue_uuid']; $agents[$x]['queues'][$i]['queue_status'] = 'Logged Out'; foreach ($queue['queue_list'] as $queue_list) { if ($row['call_center_agent_uuid'] == $queue_list['name']) { $agents[$x]['queues'][$i]['queue_status'] = 'Available'; } } $i++; } //update the agent status foreach ($agent_list as $r) { if ($r['name'] == $row['call_center_agent_uuid']) { $agents[$x]['agent_status'] = $r['status']; } } //increment x $x++; } //debug info //echo "
\n";
	//print_r($agents);
	//echo "
\n"; //set the row style $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 "
".$text['header-call_center_agent_status']."\n"; echo " \n"; echo " \n"; echo "
\n"; echo $text['description-call_center_agent_status']."

\n"; echo "
\n"; echo "
\n"; echo "\n"; echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "\n"; $x = 0; foreach($agents as $row) { $html = "\n"; $html .= " \n"; //$html .= " \n"; $html .= " \n"; $html .= " \n"; $html .= " \n"; $html .= "\n"; if (count($_SESSION['domains']) > 1) { if ($row['domain_name'] == $_SESSION['domain_name']) { echo $html; if ($c==0) { $c=1; } else { $c=0; } } } else { echo $html; if ($c==0) { $c=1; } else { $c=0; } } $x++; } //end foreach unset($sql, $agents); echo "\n"; echo "\n"; echo "\n"; echo "
".$text['label-agent']."".$text['label-status']."".$text['label-options']."".$text['label-queues']."
".escape($row['agent_name'])." ".$row['agent_name']." ".escape($row['agent_status'])." "; $html .= " \n"; $html .= " \n"; //$html .= "   \n"; $html .= "   \n"; $html .= "   \n"; $html .= "   \n"; //$html .= " \n"; $html .= " "; if (is_array($row['queues']) && $per_queue_login) { $html .= " \n"; $html .= " \n"; $html .= " \n"; $html .= " \n"; $html .= " \n"; $html .= " \n"; foreach ($row['queues'] as $queue) { $x++; $html .= " \n"; $html .= " \n"; $html .= " \n"; $html .= " \n"; $html .= " \n"; } $html .= "
".$text['label-agent']."".$text['label-status']."".$text['label-options']."
\n"; $html .= " ".$queue['queue_name']."\n"; $html .= " \n"; //.$row[queue_status]."  if ($queue['queue_status'] == "Available") { $html .= " ".$text['option-available']."\n"; } if ($queue['queue_status'] == "Logged Out") { $html .= " ".$text['option-logged_out']."\n"; } $html .= " "; //$html .= "   \n"; $html .= "   \n"; $html .= "   \n"; $html .= " \n"; $html .= " \n"; $html .= " \n"; $html .= " \n"; $html .= " \n"; $html .= "
\n"; } $html .= "
\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "
 $paging_controls\n"; echo "
\n"; echo " \n"; echo "
\n"; echo "
"; echo "

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