diff --git a/app/call_centers/resources/dashboard/call_center_agents.php b/app/call_centers/resources/dashboard/call_center_agents.php index 1bb40be5bc..2a9ebd9be2 100644 --- a/app/call_centers/resources/dashboard/call_center_agents.php +++ b/app/call_centers/resources/dashboard/call_center_agents.php @@ -55,42 +55,54 @@ //get the http post values and set them as php variables if (!empty($_POST['agents'])) { - $x = 0; + + //get the agent id + if (is_uuid($_POST['agents'][0]['id'])) { + $agent_uuid = $_POST['agents'][0]['id']; + } + + //get the agent details from event socket + if (is_uuid($agent_uuid)) { + $switch_cmd = 'callcenter_config agent list '.$agent['call_center_agent_uuid']; + $event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd)); + $call_center_agent = csv_to_named_array($event_socket_str, '|'); + $agent['agent_status'] = $call_center_agent[1]['status']; + } + + //find the agent_status - used for mod_call_center as there is only one agent status not one per queue + $agent_status = 'Logged Out'; foreach ($_POST['agents'] as $row) { + if ($row['agent_status'] == 'Available') { + $agent_status = 'Available'; + break; + } + if ($row['agent_status'] == 'On Break') { + $agent_status = 'On Break'; + break; + } + } + + //agent status has been changed + if ($agent['agent_status'] != $agent_status) { + //save the agent_stat change to the database + $array['call_center_agents'][0]['call_center_agent_uuid'] = $agent_uuid; + $array['call_center_agents'][0]['domain_uuid'] = $_SESSION['user']['domain_uuid']; + $array['call_center_agents'][0]['agent_status'] = $agent_status; + $database->app_name = 'call_centers_dashboard'; + $database->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370'; + $result = $database->save($array); + + //send the agent status status to mod_call_center + $cmd = "api callcenter_config agent set status ".$agent_uuid." '".$agent_status."'"; + $response = event_socket_request($fp, $cmd); + } + + //add or delete agents from the queue assigned by the tier + foreach ($_POST['agents'] as $row) { + //agent set status if ($fp && is_numeric($row['queue_extension']) && is_uuid($row['id'])) { - //santize the agent status - switch ($row['agent_status']) { - case 'Available': - $row['agent_status'] = 'Available'; - break; - case 'On Break': - $row['agent_status'] = 'On Break'; - break; - case 'Logged Out': - $row['agent_status'] = 'Logged Out'; - break; - default: - $row['agent_status'] = 'Logged Out'; - } - - //update the database - if ($x == 0) { - $array['call_center_agents'][0]['call_center_agent_uuid'] = $row['id']; - $array['call_center_agents'][0]['domain_uuid'] = $_SESSION['user']['domain_uuid']; - $array['call_center_agents'][0]['agent_status'] = $row['agent_status']; - $database->app_name = 'call_centers_dashboard'; - $database->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370'; - $result = $database->save($array); - } - - //set the call center status - if ($x == 0) { - $cmd = "api callcenter_config agent set status ".$row['id']." '".$row['agent_status']."'"; - $response = event_socket_request($fp, $cmd); - } - //set the agent status to available and assign the agent to the queue with the tier if ($row['agent_status'] == 'Available') { //assign the agent to the queue @@ -110,11 +122,10 @@ $cmd = "api callcenter_config tier del ".$row['queue_extension']."@".$_SESSION['domain_name']." ".$row['id']; $response = event_socket_request($fp, $cmd); } + + //small sleep usleep(200); - unset($parameters); } - - $x++; } //redirect @@ -182,12 +193,15 @@ //radio button cycle script echo "\n"; //show the content echo "
\n"; @@ -216,34 +275,25 @@ echo "