Update agent status only when it has changed
This commit is contained in:
parent
edb0180bcf
commit
b19a67b1b1
|
|
@ -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 "<script>\n";
|
||||
echo "\n";
|
||||
|
||||
echo " function get_selected(radio_group) {\n";
|
||||
echo " for (var i = 0; i < radio_group.length; i++) {\n";
|
||||
echo " if (radio_group[i].checked) { return i; }\n";
|
||||
echo " }\n";
|
||||
echo " return 0;\n";
|
||||
echo " }\n";
|
||||
echo "\n";
|
||||
|
||||
echo " function cycle(radio_group_name) {\n";
|
||||
echo " var radios = document.getElementsByName(radio_group_name);\n";
|
||||
|
|
@ -199,13 +213,58 @@
|
|||
echo " radios[i+1].checked = true;\n";
|
||||
echo " }\n";
|
||||
echo " }\n";
|
||||
echo "\n";
|
||||
|
||||
echo " function handle_status_change(agent_index) {\n";
|
||||
echo " var agent_status = document.querySelector('input[name=\"agents[' + agent_index + '][agent_status]\"]:checked').value;\n";
|
||||
echo " var radio_buttons = document.querySelectorAll('#form_list_call_center_agent_dashboard input[type=\"radio\"]');\n";
|
||||
//echo "console.log('status: '+agent_status);\n";
|
||||
//echo " radio_checked_value = '';\n";
|
||||
echo " radio_buttons.forEach(function(radio_button) {\n";
|
||||
//echo " if (radio_button.checked == true && radio_button.value === 'Available') {\n";
|
||||
//echo " radio_checked_value = 'Available';\n";
|
||||
//echo " }\n";
|
||||
//echo " if (radio_button.checked == true && radio_button.value === 'On Break') {\n";
|
||||
//echo " radio_checked_value = 'On Break';\n";
|
||||
//echo " }\n";
|
||||
//echo " if (radio_button.value === 'Logged Out') {\n";
|
||||
//echo " radio_checked_value = 'Logged Out';\n";
|
||||
//echo " }\n";
|
||||
echo " if (radio_button.checked) { console.log('checked: '+radio_button.value) }\n";
|
||||
echo " if (radio_button.value === 'Available' && agent_status === 'Available') {\n"; // radio_checked_value == 'On Break' &&
|
||||
//echo " radio_button.checked = true;\n";
|
||||
//echo " radio_button.value = 'Available';\n";
|
||||
//echo " radio_button[agent_status]\"]:checked').value == 'On Break';\n";
|
||||
//echo " console.log('--'+radio_button.value+'--');\n";
|
||||
//echo " console.log('need to change status On Break to Available');\n";
|
||||
//echo " console.log('---');\n";
|
||||
echo " }\n";
|
||||
echo " if (radio_button.value === 'On Break' && agent_status === 'On Break') {\n"; // radio_checked_value == 'Available' &&
|
||||
//echo " radio_button.checked = true;\n";
|
||||
//echo " radio_button.value = 'On Break';\n";
|
||||
//echo " radio_button[agent_status]\"]:checked').value == 'On Break';\n";
|
||||
//echo " console.log('--'+radio_button.value+'--');\n";
|
||||
//echo " console.log('need to change status Available to On Break');\n";
|
||||
//echo " console.log('---');\n";
|
||||
echo " }\n";
|
||||
|
||||
//echo " console.log('checked: '+radio_button.checked+' value:'+radio_button.value);\n";
|
||||
//echo " console.log('radio checked value: '+ radio_checked_value +' checked: '+radio_button.checked+' value:'+radio_button.value);\n";
|
||||
//else if (agent_status === 'Available') {\n";
|
||||
//echo " radio_button.checked = true;\n";
|
||||
//echo " }\n";
|
||||
echo " });\n";
|
||||
|
||||
echo " }\n";
|
||||
|
||||
echo "\n";
|
||||
echo "</script>\n";
|
||||
|
||||
//show the content
|
||||
echo "<div class='action_bar sub'>\n";
|
||||
echo " <div class='heading'><b>".$text['header-call_center_queues'].($agent['agent_name'] != '' ? " </b> Agent: <strong>".$agent['agent_name']."</strong>" : "</b>")."</div>\n";
|
||||
echo " <div class='actions'>\n";
|
||||
echo button::create(['type'=>'button','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'collapse'=>false,'onclick'=>"list_form_submit('form_list_call_center_agent_dashboard');"]);
|
||||
echo button::create(['type'=>'button','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'collapse'=>false,'onclick'=>"document.getElementById('form_list_call_center_agent_dashboard').submit();"]);
|
||||
echo " </div>\n";
|
||||
echo " <div style='clear: both;'></div>\n";
|
||||
echo "</div>\n";
|
||||
|
|
@ -216,34 +275,25 @@
|
|||
echo "<tr class='list-header'>\n";
|
||||
echo " <th>".$text['label-queue_name']."</th>\n";
|
||||
echo " <th class='shrink'>".$text['label-status']."</th>\n";
|
||||
//echo " <th>".$text['label-options']."</th>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
if (is_array($call_center_queues) && @sizeof($call_center_queues) != 0) {
|
||||
$x = 0;
|
||||
foreach ($call_center_queues as $row) {
|
||||
$onclick = "onclick=\"cycle('agents[".$x."][agent_status]');\"";
|
||||
$onclick = '';
|
||||
echo "<tr class='list-row'>\n";
|
||||
echo " <td ".$onclick.">".escape($row['queue_name'])."</td>\n";
|
||||
//echo " <td>";
|
||||
//if ($row['queue_status'] == "Available") {
|
||||
// echo $text['option-available'];
|
||||
//}
|
||||
//if ($row['queue_status'] == "Logged Out") {
|
||||
// echo $text['option-logged_out'];
|
||||
//}
|
||||
//echo " </td>\n";
|
||||
echo " <td class='no-wrap right'>\n";
|
||||
echo " <input type='hidden' name='agents[".$x."][queue_extension]' value='".escape($row['queue_extension'])."'>\n";
|
||||
echo " <input type='hidden' name='agents[".$x."][agent_name]' value='".escape($agent['agent_name'])."'>\n";
|
||||
echo " <input type='hidden' name='agents[".$x."][id]' value='".escape($agent['call_center_agent_uuid'])."'>\n";
|
||||
echo " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Available' ".($row['queue_status'] == 'Available' ? "checked='checked'" : null)."> ".$text['option-available']."</label>\n";
|
||||
echo " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Logged Out' ".($row['queue_status'] == 'Logged Out' ? "checked='checked'" : null)."> ".$text['option-logged_out']."</label>\n";
|
||||
echo " <label style='margin: 0; cursor: pointer;'><input type='radio' name='agents[".$x."][agent_status]' value='On Break' ".($row['queue_status'] == 'On Break' ? "checked='checked'" : null)."> ".$text['option-on_break']."</label>\n";
|
||||
echo " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Available' ".($row['queue_status'] == 'Available' ? "checked='checked'" : null)." onchange='handle_status_change(".$x.")'> ".$text['option-available']."</label>\n";
|
||||
echo " <label style='margin: 0; cursor: pointer; margin-right: 10px;'><input type='radio' name='agents[".$x."][agent_status]' value='Logged Out' ".($row['queue_status'] == 'Logged Out' ? "checked='checked'" : null)." onchange='handle_status_change(".$x.")'> ".$text['option-logged_out']."</label>\n";
|
||||
echo " <label style='margin: 0; cursor: pointer;'><input type='radio' name='agents[".$x."][agent_status]' value='On Break' ".($row['queue_status'] == 'On Break' ? "checked='checked'" : null)." onchange='handle_status_change(".$x.")'> ".$text['option-on_break']."</label>\n";
|
||||
echo " </td>\n";
|
||||
echo "</tr>\n";
|
||||
$x++;
|
||||
|
||||
}
|
||||
unset($call_center_queues);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue