From 34762ffb385767fdd2d84e862f540fd80632f065 Mon Sep 17 00:00:00 2001 From: Mark Crane Date: Fri, 13 Mar 2015 18:08:25 +0000 Subject: [PATCH] Update call center agent status so that it gets the list of agents from the database instead of mod_callcenter. --- app/call_center/call_center_agent_status.php | 138 +++++++++++-------- 1 file changed, 77 insertions(+), 61 deletions(-) diff --git a/app/call_center/call_center_agent_status.php b/app/call_center/call_center_agent_status.php index bb523ea84d..338e0615e3 100644 --- a/app/call_center/call_center_agent_status.php +++ b/app/call_center/call_center_agent_status.php @@ -47,86 +47,104 @@ else { $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) { + if (count($_POST) > 0) { //include the dnd php class include PROJECT_PATH."/app/calls/resources/classes/do_not_disturb.php"; - foreach($_POST['agents'] as $row) { - if (strlen($row['status']) > 0) { + if (strlen($row['agent_status']) > 0) { //agent set status if ($fp) { //set the user_status $sql = "update v_users set "; - $sql .= "user_status = '".$row['status']."' "; + $sql .= "user_status = '".$row['agent_status']."' "; $sql .= "where domain_uuid = '$domain_uuid' "; - $sql .= "and username = '".$row['name']."' "; + $sql .= "and call_center_agent_uuid = '".$row['id']."' "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); //set the call center status - if ($row['status'] == "Do Not Disturb") { + 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['name']."@".$_SESSION['domains'][$domain_uuid]['domain_name']." 'Logged Out'"; + $cmd = "api callcenter_config agent set status ".$row['agent_name']."@".$_SESSION['domains'][$domain_uuid]['domain_name']." 'Logged Out'"; } else { - $cmd = "api callcenter_config agent set status ".$row['name']."@".$_SESSION['domains'][$domain_uuid]['domain_name']." '".$row['status']."'"; + $cmd = "api callcenter_config agent set status ".$row['agent_name']."@".$_SESSION['domains'][$domain_uuid]['domain_name']." '".$row['agent_status']."'"; } - //echo $cmd."
\n"; $response = event_socket_request($fp, $cmd); usleep(200); } //loop through the list of assigned extensions - foreach ($_SESSION['user']['extension'] as &$sub_row) { - //update dnd - $dnd = new do_not_disturb; - //$dnd->debug = false; - $dnd->domain_uuid = $domain_uuid; - $dnd->domain_name = $_SESSION['domain_name']; - $dnd->extension = $sub_row["user"]; - if ($row['status'] == "Do Not Disturb") { - $dnd->enabled = "true"; - } - else { - $dnd->enabled = "false"; - } - $dnd->set(); - unset($dnd); - } - unset ($prep_statement); + //foreach ($_SESSION['user']['extension'] as &$sub_row) { + // //update dnd + // $dnd = new do_not_disturb; + // //$dnd->debug = false; + // $dnd->domain_uuid = $domain_uuid; + // $dnd->domain_name = $_SESSION['domain_name']; + // $dnd->extension = $sub_row["user"]; + // if ($row['status'] == "Do Not Disturb") { + // $dnd->enabled = "true"; + // } + // else { + // $dnd->enabled = "false"; + // } + // $dnd->set(); + // unset($dnd); + //} + //unset ($prep_statement); } } } +//get the agents from the database + $sql = "select * from v_call_center_agents "; + $sql .= "where domain_uuid = '$domain_uuid' "; + $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_array = csv_to_named_array($event_socket_str, '|'); -//set the status on the user_array by using the extension as the key - foreach ($agent_array as $row) { - if (count($_SESSION['domains']) == 1) { - //get the extension status from the call center agent list - preg_match('/user\/(\d{2,7})/', $row['contact'], $matches); - $extension = $matches[1]; - $user_array[$extension]['username'] = $tmp[0]; - if ($user_array[$extension]['user_status'] != "Do Not Disturb") { - $user_array[$extension]['user_status'] = $row['status']; - } - } else { - $tmp = explode('@',$row["name"]); - if ($tmp[1] == $_SESSION['domain_name']) { - //get the extension status from the call center agent list - preg_match('/user\/(\d{2,7})/', $row['contact'], $matches); - $extension = $matches[1]; - $user_array[$extension]['username'] = $tmp[0]; - if ($user_array[$extension]['user_status'] != "Do Not Disturb") { - $user_array[$extension]['user_status'] = $row['status']; + $call_center_agents = csv_to_named_array($event_socket_str, '|'); + +//get the agent status from mod_callcenter and update the agent status in the agents array + foreach ($agents as &$row) { + //add the domain name + $row['domain_name'] = $_SESSION['domains'][$row['domain_uuid']]['domain_name']; + //update the agent status + foreach ($call_center_agents as &$r) { + if ($r['name'] == $row[agent_name].'@'.$row['domain_name']) { + $row['agent_status'] = $r['status']; } } - } } +//set the status on the user_array by using the extension as the key + //foreach ($call_center_agents as $row) { + // if (count($_SESSION['domains']) == 1) { + // //get the extension status from the call center agent list + // preg_match('/user\/(\d{2,7})/', $row['contact'], $matches); + // $extension = $matches[1]; + // $user_array[$extension]['username'] = $tmp[0]; + // if ($user_array[$extension]['user_status'] != "Do Not Disturb") { + // $user_array[$extension]['user_status'] = $row['status']; + // } + // } else { + // $tmp = explode('@',$row["name"]); + // if ($tmp[1] == $_SESSION['domain_name']) { + // //get the extension status from the call center agent list + // preg_match('/user\/(\d{2,7})/', $row['contact'], $matches); + // $extension = $matches[1]; + // $user_array[$extension]['username'] = $tmp[0]; + // if ($user_array[$extension]['user_status'] != "Do Not Disturb") { + // $user_array[$extension]['user_status'] = $row['status']; + // } + // } + // } + //} + //show the content echo "\n"; echo "\n"; @@ -154,26 +172,24 @@ else { echo "\n"; echo "\n"; echo "\n"; - $x = 0; - foreach($agent_array as $row) { - $tmp = explode('@',$row["name"]); - $agent_name = $tmp[0]; + foreach($agents as $row) { $str = ''; $str .= "\n"; - $str .= " \n"; - $str .= " \n"; + $str .= " \n"; + $str .= " \n"; $str .= " \n"; $str .= "\n"; if (count($_SESSION['domains']) > 1) { - if ($tmp[1] == $_SESSION['domain_name']) { + if ($row['domain_name'] == $_SESSION['domain_name']) { echo $str; if ($c==0) { $c=1; } else { $c=0; } } @@ -205,7 +221,7 @@ else { echo "

"; echo "\n"; - //show the footer require_once "resources/footer.php"; + ?> \ No newline at end of file
".$text['label-status']."".$text['label-options']."
".$row['name']." ".$row['status']." ".$row['agent_name']." ".$row['agent_status']." "; - $str .= " \n"; - $str .= " \n"; - $str .= " \n"; - $str .= " \n"; - $str .= " \n"; - $str .= " \n"; + $str .= " \n"; + $str .= " \n"; + $str .= " \n"; + $str .= " \n"; + $str .= " \n"; + $str .= " \n"; + //$str .= " \n"; $str .= "