From 4b16c5943d9baeb07cf927f07fa091ba0859d34b Mon Sep 17 00:00:00 2001 From: Nate Date: Fri, 25 Oct 2019 19:43:02 -0600 Subject: [PATCH] Call Centers: List view updates. --- app/call_center_active/call_center_queue.php | 148 ++++---- app/call_centers/call_center_agents.php | 218 +++++++---- app/call_centers/call_center_queues.php | 268 +++++++------ .../resources/classes/call_center.php | 352 +++++++++++++++++- 4 files changed, 721 insertions(+), 265 deletions(-) diff --git a/app/call_center_active/call_center_queue.php b/app/call_center_active/call_center_queue.php index d064525c5d..fdfc1d111b 100644 --- a/app/call_center_active/call_center_queue.php +++ b/app/call_center_active/call_center_queue.php @@ -27,6 +27,7 @@ require_once "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; + require_once "resources/paging.php"; //check permissions if (permission_exists('call_center_active_view')) { @@ -41,60 +42,72 @@ $language = new text; $text = $language->get(); -//includes and title - require_once "resources/header.php"; - $document['title'] = $text['title-active_call_center']; - require_once "resources/paging.php"; - //get the variables $order_by = $_GET["order_by"]; $order = $_GET["order"]; -//show the content - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "
".$text['header-active_call_center']."\n"; - echo "
\n"; - echo $text['description-active_call_center']."

\n"; - echo "
\n"; +//add the search term + $search = strtolower($_GET["search"]); + if (strlen($search) > 0) { + $sql_search = " ("; + $sql_search .= "lower(queue_name) like :search "; + $sql_search .= "or lower(queue_description) like :search "; + $sql_search .= ") "; + $parameters['search'] = '%'.$search.'%'; + } - //get the call center queue count +//get the call center queue count $sql = "select count(*) from v_call_center_queues "; $sql .= "where domain_uuid = :domain_uuid "; + if (isset($sql_search)) { + $sql .= "and ".$sql_search; + } $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $database = new database; $num_rows = $database->select($sql, $parameters, 'column'); - //paging the records +//paging the records $rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50; - $param = ''; + $param = "&search=".$search; $page = $_GET['page']; if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; } - list($paging_controls, $rows_per_page, $var_3) = paging($num_rows, $param, $rows_per_page); + list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page); + list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true); $offset = $rows_per_page * $page; - //get the call center queues - $sql = "select * from v_call_center_queues "; - $sql .= "where domain_uuid = :domain_uuid "; +//get the call center queues + $sql = str_replace('count(*)', '*', $sql); $sql .= order_by($order_by, $order); $sql .= limit_offset($rows_per_page, $offset); $database = new database; - $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $call_center_queues = $database->select($sql, $parameters, 'all'); + unset($sql, $parameters); - $c = 0; - $row_style["0"] = "row_style0"; - $row_style["1"] = "row_style1"; +//include header + $document['title'] = $text['title-active_call_center']; + require_once "resources/header.php"; - echo "\n"; +//show the content + echo "
\n"; + echo "
".$text['header-active_call_center']." (".$num_rows.")
\n"; + echo "
\n"; + echo "\n"; + echo ""; + echo button::create(['label'=>$text['button-search'],'icon'=>$_SESSION['theme']['button_icon_search'],'type'=>'submit','id'=>'btn_search','style'=>($search != '' ? 'display: none;' : null)]); + echo button::create(['label'=>$text['button-reset'],'icon'=>$_SESSION['theme']['button_icon_reset'],'type'=>'button','id'=>'btn_reset','link'=>'call_center_queue.php','style'=>($search == '' ? 'display: none;' : null)]); + if ($paging_controls_mini != '') { + echo " ".$paging_controls_mini.""; + } + echo " \n"; + echo "
\n"; + echo "
\n"; + echo "
\n"; - echo "\n"; + echo $text['description-active_call_center']."\n"; + echo "

\n"; + + echo "
\n"; + echo "\n"; echo th_order_by('queue_name', $text['label-queue_name'], $order_by, $order); echo th_order_by('queue_extension', $text['label-extension'], $order_by, $order); echo th_order_by('queue_strategy', $text['label-strategy'], $order_by, $order); @@ -110,60 +123,39 @@ //echo th_order_by('queue_abandoned_resume_allowed', $text['label-abandoned_resume_allowed'], $order_by, $order); //echo th_order_by('queue_tier_rule_wait_multiply_level', $text['label-tier_rule_wait_multiply_level'], $order_by, $order); echo th_order_by('queue_description', $text['label-description'], $order_by, $order); - echo "\n"; echo "\n"; if (is_array($call_center_queues)) { + $x = 0; foreach($call_center_queues as $row) { - $tr_link = "href='".PROJECT_PATH."/app/call_center_active/call_center_active.php?queue_name=".escape($row['call_center_queue_uuid'])."&name=".urlencode(escape($row['queue_name']))."'"; - echo "\n"; - echo " \n"; - echo " \n"; - echo " \n"; - //echo " \n"; - //echo " \n"; - //echo " \n"; - //echo " \n"; - //echo " \n"; - //echo " \n"; - //echo " \n"; - //echo " \n"; - //echo " \n"; - //echo " \n"; - //echo " \n"; - echo " \n"; - echo " \n"; + $list_row_url = PROJECT_PATH."/app/call_center_active/call_center_active.php?queue_name=".escape($row['call_center_queue_uuid'])."&name=".urlencode(escape($row['queue_name'])); + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + //echo " \n"; + //echo " \n"; + //echo " \n"; + //echo " \n"; + //echo " \n"; + //echo " \n"; + //echo " \n"; + //echo " \n"; + //echo " \n"; + //echo " \n"; + //echo " \n"; + echo " \n"; echo "\n"; - if ($c==0) { $c=1; } else { $c=0; } - } //end foreach - unset($sql, $result, $row_count); - } //end if results + $x++; + } + unset($call_center_queues); + } - echo "\n"; - echo "\n"; - echo "\n"; - - echo "
\n"; - //echo " $v_link_label_add\n"; - echo "
".escape($row['queue_name'])."".escape($row['queue_extension'])."".escape($row['queue_strategy'])."".escape($row[queue_moh_sound])."".escape($row[queue_record_template])."".escape($row[queue_time_base_score])."".escape($row[queue_max_wait_time])."".escape($row[queue_max_wait_time_with_no_agent])."".escape($row[queue_tier_rules_apply])."".escape($row[queue_tier_rule_wait_second])."".escape($row[queue_tier_rule_no_agent_no_wait])."".escape($row[queue_discard_abandoned_after])."".escape($row[queue_abandoned_resume_allowed])."".escape($row[queue_tier_rule_wait_multiply_level])."".escape($row['queue_description'])." \n"; - echo " $v_link_label_view\n"; - //echo " $v_link_label_delete\n"; - //echo " \n"; - //echo " \n"; - echo "
".escape($row['queue_name'])."".escape($row['queue_extension'])."".escape($row['queue_strategy'])."".escape($row[queue_moh_sound])."".escape($row[queue_record_template])."".escape($row[queue_time_base_score])."".escape($row[queue_max_wait_time])."".escape($row[queue_max_wait_time_with_no_agent])."".escape($row[queue_tier_rules_apply])."".escape($row[queue_tier_rule_wait_second])."".escape($row[queue_tier_rule_no_agent_no_wait])."".escape($row[queue_discard_abandoned_after])."".escape($row[queue_abandoned_resume_allowed])."".escape($row[queue_tier_rule_wait_multiply_level])."".escape($row['queue_description'])."
\n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo "
 $paging_controls\n"; - //echo " $v_link_label_add\n"; - echo "
\n"; - echo "
"; - echo "

"; + echo "\n"; + echo "
\n"; + echo "
".$paging_controls."
\n"; //show the footer require_once "resources/footer.php"; -?> +?> \ No newline at end of file diff --git a/app/call_centers/call_center_agents.php b/app/call_centers/call_center_agents.php index a118c05cc5..52e72334c6 100644 --- a/app/call_centers/call_center_agents.php +++ b/app/call_centers/call_center_agents.php @@ -28,6 +28,7 @@ require_once "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; + require_once "resources/paging.php"; //check permissions if (permission_exists('call_center_agent_view')) { @@ -42,60 +43,127 @@ $language = new text; $text = $language->get(); -//includes and title - require_once "resources/header.php"; - $document['title'] = $text['title-call_center_agents']; - require_once "resources/paging.php"; +//get posted data + if (is_array($_POST['call_center_agents'])) { + $action = $_POST['action']; + $search = $_POST['search']; + $call_center_agents = $_POST['call_center_agents']; + } -//get http values and set them to php variables - $order_by = $_GET["order_by"] != '' ? $_GET["order_by"] : 'agent_name'; +//copy the call center agents + if (permission_exists('call_center_agent_add')) { + if ($action == 'copy' && is_array($call_center_agents) && @sizeof($call_center_agents) != 0) { + //copy + $obj = new call_center; + $obj->copy_agents($call_center_agents); + //redirect + header('Location: call_center_agents.php'.($search != '' ? '?search='.urlencode($search) : null)); + exit; + } + } + +//delete the call center agents + if (permission_exists('call_center_agent_delete')) { + if ($action == 'delete' && is_array($call_center_agents) && @sizeof($call_center_agents) != 0) { + //delete + $obj = new call_center; + $obj->delete_agents($call_center_agents); + //redirect + header('Location: call_center_agents.php'.($search != '' ? '?search='.urlencode($search) : null)); + exit; + } + } + +//get http variables and set them to php variables + $order_by = $_GET["order_by"]; $order = $_GET["order"]; -//show content - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "
".$text['header-call_center_agents']."\n"; - echo " \n"; - echo " \n"; - echo "
\n"; - echo $text['description-call_center_agents']."

\n"; - echo "
\n"; +//add the search term + $search = strtolower($_GET["search"]); + if (strlen($search) > 0) { + $sql_search = " ("; + $sql_search .= "lower(agent_name) like :search "; + $sql_search .= "or lower(agent_id) like :search "; + $sql_search .= ") "; + $parameters['search'] = '%'.$search.'%'; + } +//get total call center agent count from the database $sql = "select count(*) from v_call_center_agents "; $sql .= "where domain_uuid = :domain_uuid "; + if (isset($sql_search)) { + $sql .= "and ".$sql_search; + } $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $database = new database; $num_rows = $database->select($sql, $parameters, 'column'); - unset($sql, $parameters); +//prepare to page the results $rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50; - $param = ""; + $param = "&search=".$search; $page = $_GET['page']; if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; } - list($paging_controls, $rows_per_page, $var_3) = paging($num_rows, $param, $rows_per_page); + list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page); + list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true); $offset = $rows_per_page * $page; - $sql = "select * from v_call_center_agents "; - $sql .= "where domain_uuid = :domain_uuid "; - $sql .= order_by($order_by, $order); +//get the list + $sql = str_replace('count(*)', '*', $sql); + $sql .= order_by($order_by, $order, 'agent_name', 'asc'); $sql .= limit_offset($rows_per_page, $offset); - $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $database = new database; $result = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); - $c = 0; - $row_style["0"] = "row_style0"; - $row_style["1"] = "row_style1"; +//create token + $object = new token; + $token = $object->create($_SERVER['PHP_SELF']); - echo "\n"; - echo "\n"; +//includes and title + $document['title'] = $text['title-call_center_agents']; + require_once "resources/header.php"; + +//show content + echo "
\n"; + echo "
".$text['header-call_center_agents']." (".$num_rows.")
\n"; + echo "
\n"; + echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'link'=>'call_center_queues.php','style'=>'margin-right: 15px;']); + if (permission_exists('call_center_agent_add')) { + echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'link'=>'call_center_agent_edit.php']); + } + if (permission_exists('call_center_agent_add') && $result) { + echo button::create(['type'=>'button','label'=>$text['button-copy'],'icon'=>$_SESSION['theme']['button_icon_copy'],'onclick'=>"if (confirm('".$text['confirm-copy']."')) { list_action_set('copy'); list_form_submit('form_list'); } else { this.blur(); return false; }"]); + } + if (permission_exists('call_center_agent_delete') && $result) { + echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'onclick'=>"if (confirm('".$text['confirm-delete']."')) { list_action_set('delete'); list_form_submit('form_list'); } else { this.blur(); return false; }"]); + } + echo ""; + echo ""; + echo button::create(['label'=>$text['button-search'],'icon'=>$_SESSION['theme']['button_icon_search'],'type'=>'submit','id'=>'btn_search','style'=>($search != '' ? 'display: none;' : null)]); + echo button::create(['label'=>$text['button-reset'],'icon'=>$_SESSION['theme']['button_icon_reset'],'type'=>'button','id'=>'btn_reset','link'=>'call_center_agents.php','style'=>($search == '' ? 'display: none;' : null)]); + if ($paging_controls_mini != '') { + echo " ".$paging_controls_mini.""; + } + echo button::create(['type'=>'button','label'=>$text['button-status'],'icon'=>'user-clock','style'=>'margin-left: 15px;','link'=>'call_center_agent_status.php']); + echo " \n"; + echo "
\n"; + echo "
\n"; + echo "
\n"; + + echo $text['description-call_center_agents']."\n"; + echo "

\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + + echo "
\n"; + echo "\n"; + if (permission_exists('call_center_agent_add') || permission_exists('call_center_agent_delete')) { + echo " \n"; + } //echo th_order_by('domain_uuid', 'domain_uuid', $order_by, $order); echo th_order_by('agent_name', $text['label-agent_name'], $order_by, $order); echo th_order_by('agent_id', $text['label-agent_id'], $order_by, $order); @@ -107,19 +175,25 @@ //echo th_order_by('agent_wrap_up_time', $text['label-wrap_up_time'], $order_by, $order); //echo th_order_by('agent_reject_delay_time', $text['label-reject_delay_time'], $order_by, $order); //echo th_order_by('agent_busy_delay_time', $text['label-busy_delay_time'], $order_by, $order); - echo "\n"; } - echo "\n"; echo "\n"; if (is_array($result)) { + $x = 0; foreach($result as $row) { - $tr_link = (permission_exists('call_center_agent_edit')) ? "href='call_center_agent_edit.php?id=".escape($row['call_center_agent_uuid'])."'" : null; - echo "\n"; - //echo " \n"; - echo " \n"; + if (permission_exists('call_center_agent_add') || permission_exists('call_center_agent_delete')) { + echo " \n"; + } + echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; + echo " \n"; + echo " \n"; + echo " \n"; $agent_contact = $row['agent_contact']; // parse out gateway uuid $bridge_statement = explode('/', $row['agent_contact']); @@ -146,48 +220,32 @@ } unset($sql, $parameters, $bridge_statement); } - echo " \n"; - echo " \n"; - echo " \n"; - //echo " \n"; - //echo " \n"; - //echo " \n"; - echo " \n"; + echo " \n"; + echo " \n"; + //echo " \n"; + //echo " \n"; + //echo " \n"; + if (permission_exists('call_center_agent_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { + echo " \n"; } - if (permission_exists('call_center_agent_delete')) { - echo "".$v_link_label_delete.""; - } - //echo " \n"; - //echo " \n"; - echo " \n"; echo "\n"; - if ($c==0) { $c=1; } else { $c=0; } - } //end foreach + $x++; + } unset($result); - } //end if results - - echo "\n"; - echo "\n"; - echo "\n"; - echo "
\n"; + echo " \n"; + echo " "; - if (permission_exists('call_center_agent_add')) { - echo "".$v_link_label_add.""; + if (permission_exists('call_center_agent_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { + echo "  
".escape($row[domain_uuid]).""; + if (permission_exists('call_center_agent_edit')) { + $list_row_url = "call_center_agent_edit.php?id=".urlencode($row['call_center_agent_uuid']); + } + echo "
\n"; + echo " \n"; + echo " \n"; + echo " "; if (permission_exists('call_center_agent_edit')) { echo "".escape($row['agent_name']).""; } @@ -127,9 +201,9 @@ echo escape($row['agent_name']); } echo " ".escape($row['agent_id'])." ".escape($row['agent_type'])." ".escape($row['agent_call_timeout'])." ".escape($row['agent_id'])."".escape($row['agent_type'])."".escape($row['agent_call_timeout'])."".$agent_contact." ".escape($row['agent_max_no_answer'])." ".escape($row['agent_status'])." ".$row[agent_wrap_up_time]." ".$row[agent_reject_delay_time]." ".$row[agent_busy_delay_time]." \n"; - if (permission_exists('call_center_agent_edit')) { - echo "".$v_link_label_edit.""; + echo " ".escape($agent_contact)."".escape($row['agent_max_no_answer'])."".escape($row['agent_status'])."".$row[agent_wrap_up_time]."".$row[agent_reject_delay_time]."".$row[agent_busy_delay_time].""; + echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); + echo "
\n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo "
 $paging_controls"; - if (permission_exists('call_center_agent_add')) { - echo "".$v_link_label_add.""; } - echo "
\n"; - echo "
"; - echo "

"; + echo "\n"; + echo "
\n"; + echo "
".$paging_controls."
\n"; + + echo "\n"; + + echo "\n"; //show the footer require_once "resources/footer.php"; -?> +?> \ No newline at end of file diff --git a/app/call_centers/call_center_queues.php b/app/call_centers/call_center_queues.php index 5b8941e611..0180a87f8b 100644 --- a/app/call_centers/call_center_queues.php +++ b/app/call_centers/call_center_queues.php @@ -28,6 +28,7 @@ require_once "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; + require_once "resources/paging.php"; //check permisission if (permission_exists('call_center_queue_view')) { @@ -42,65 +43,131 @@ $language = new text; $text = $language->get(); -//includes and title - require_once "resources/header.php"; - $document['title'] = $text['title-call_center_queues']; - require_once "resources/paging.php"; +//get posted data + if (is_array($_POST['call_center_queues'])) { + $action = $_POST['action']; + $search = $_POST['search']; + $call_center_queues = $_POST['call_center_queues']; + } + +//copy the call center queues + if (permission_exists('call_center_queue_add')) { + if ($action == 'copy' && is_array($call_center_queues) && @sizeof($call_center_queues) != 0) { + //copy + $obj = new call_center; + $obj->copy_queues($call_center_queues); + //redirect + header('Location: call_center_queues.php'.($search != '' ? '?search='.urlencode($search) : null)); + exit; + } + } + +//delete the call center queues + if (permission_exists('call_center_queue_delete')) { + if ($action == 'delete' && is_array($call_center_queues) && @sizeof($call_center_queues) != 0) { + //delete + $obj = new call_center; + $obj->delete_queues($call_center_queues); + //redirect + header('Location: call_center_queues.php'.($search != '' ? '?search='.urlencode($search) : null)); + exit; + } + } //get http variables and set as php variables - $order_by = $_GET["order_by"] != '' ? $_GET["order_by"] : 'queue_name'; + $order_by = $_GET["order_by"]; $order = $_GET["order"]; -//show the content - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "
".$text['header-call_center_queues']."\n"; - if (permission_exists('call_center_wallboard')) { - echo " \n"; +//add the search term + $search = strtolower($_GET["search"]); + if (strlen($search) > 0) { + $sql_search = " ("; + $sql_search .= "lower(queue_name) like :search "; + $sql_search .= "or lower(queue_description) like :search "; + $sql_search .= ") "; + $parameters['search'] = '%'.$search.'%'; } - echo " \n"; - echo "
\n"; - echo $text['description-call_center_queues']."

\n"; - echo "
\n"; - //get total call center queues count from the database - $sql = "select count(*) from v_call_center_queues "; - $sql .= "where domain_uuid = :domain_uuid "; - $parameters['domain_uuid'] = $_SESSION['domain_uuid']; - $database = new database; - $total_call_center_queues = $database->select($sql, $parameters, 'column'); - unset($sql, $parameters); +//get total call center queues count from the database + $sql = "select count(*) from v_call_center_queues "; + $sql .= "where domain_uuid = :domain_uuid "; + if (isset($sql_search)) { + $sql .= "and ".$sql_search; + } + $parameters['domain_uuid'] = $_SESSION['domain_uuid']; + $database = new database; + $num_rows = $database->select($sql, $parameters, 'column'); - //prepare to page the results - $num_rows = $total_call_center_queues; - $rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50; - $param = ""; - $page = $_GET['page']; - if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; } - list($paging_controls, $rows_per_page, $var_3) = paging($num_rows, $param, $rows_per_page); - $offset = $rows_per_page * $page; +//prepare to page the results + $rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50; + $param = "&search=".$search; + $page = $_GET['page']; + if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; } + list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page); + list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true); + $offset = $rows_per_page * $page; - $sql = "select * from v_call_center_queues "; - $sql .= "where domain_uuid = :domain_uuid "; - $sql .= order_by($order_by, $order); - $sql .= limit_offset($rows_per_page, $offset); - $parameters['domain_uuid'] = $_SESSION['domain_uuid']; - $database = new database; - $result = $database->select($sql, $parameters, 'all'); - unset($sql, $parameters); - - $c = 0; - $row_style["0"] = "row_style0"; - $row_style["1"] = "row_style1"; +//get the list + $sql = str_replace('count(*)', '*', $sql); + $sql .= order_by($order_by, $order, 'queue_name', 'asc'); + $sql .= limit_offset($rows_per_page, $offset); + $database = new database; + $result = $database->select($sql, $parameters, 'all'); + unset($sql, $parameters); - echo "\n"; - echo "\n"; +//create token + $object = new token; + $token = $object->create($_SERVER['PHP_SELF']); + +//includes and title + $document['title'] = $text['title-call_center_queues']; + require_once "resources/header.php"; + +//show the content + echo "
\n"; + echo "
".$text['header-call_center_queues']." (".$num_rows.")
\n"; + echo "
\n"; + if (permission_exists('call_center_queue_add') && (!is_numeric($_SESSION['limit']['call_center_queues']['numeric']) || $num_rows <= $_SESSION['limit']['call_center_queues']['numeric'])) { + echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'link'=>'call_center_queue_edit.php']); + } + if (permission_exists('call_center_queue_add') && $result && (!is_numeric($_SESSION['limit']['call_center_queues']['numeric']) || $num_rows <= $_SESSION['limit']['call_center_queues']['numeric'])) { + echo button::create(['type'=>'button','label'=>$text['button-copy'],'icon'=>$_SESSION['theme']['button_icon_copy'],'onclick'=>"if (confirm('".$text['confirm-copy']."')) { list_action_set('copy'); list_form_submit('form_list'); } else { this.blur(); return false; }"]); + } + if (permission_exists('call_center_queue_delete') && $result) { + echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'onclick'=>"if (confirm('".$text['confirm-delete']."')) { list_action_set('delete'); list_form_submit('form_list'); } else { this.blur(); return false; }"]); + } + echo "\n"; + echo ""; + echo button::create(['label'=>$text['button-search'],'icon'=>$_SESSION['theme']['button_icon_search'],'type'=>'submit','id'=>'btn_search','style'=>($search != '' ? 'display: none;' : null)]); + echo button::create(['label'=>$text['button-reset'],'icon'=>$_SESSION['theme']['button_icon_reset'],'type'=>'button','id'=>'btn_reset','link'=>'call_center_queues.php','style'=>($search == '' ? 'display: none;' : null)]); + if ($paging_controls_mini != '') { + echo " ".$paging_controls_mini.""; + } + if (permission_exists('call_center_agent_view')) { + echo button::create(['type'=>'button','label'=>$text['button-agents'],'icon'=>'users','style'=>'margin-left: 15px;','link'=>'call_center_agents.php']); + } + if (permission_exists('call_center_wallboard')) { + echo button::create(['type'=>'button','label'=>$text['button-wallboard'],'icon'=>'th','link'=>PROJECT_PATH.'/app/call_center_wallboard/call_center_wallboard.php']); + } + echo " \n"; + echo "
\n"; + echo "
\n"; + echo "
\n"; + + echo $text['description-call_center_queues']."\n"; + echo "

\n"; + + echo "\n"; + echo "\n"; + echo "\n"; + + echo "
\n"; + echo "\n"; + if (permission_exists('call_center_queue_add') || permission_exists('call_center_queue_delete')) { + echo " \n"; + } echo th_order_by('queue_name', $text['label-queue_name'], $order_by, $order); echo th_order_by('queue_extension', $text['label-extension'], $order_by, $order); echo th_order_by('queue_strategy', $text['label-strategy'], $order_by, $order); @@ -115,78 +182,67 @@ //echo th_order_by('queue_discard_abandoned_after', $text['label-discard_abandoned_after'], $order_by, $order); //echo th_order_by('queue_abandoned_resume_allowed', $text['label-abandoned_resume_allowed'], $order_by, $order); //echo th_order_by('queue_tier_rule_wait_multiply_level', $text['label-tier_rule_wait_multiply_level'], $order_by, $order); - echo th_order_by('queue_description', $text['label-description'], $order_by, $order); - echo "\n"; } - echo "\n"; echo "\n"; if (is_array($result)) { + $x = 0; foreach($result as $row) { - $tr_link = (permission_exists('call_center_queue_edit')) ? "href='call_center_queue_edit.php?id=".escape($row['call_center_queue_uuid'])."'" : null; - echo "\n"; - echo " \n"; + if (permission_exists('call_center_queue_add') || permission_exists('call_center_queue_delete')) { + echo " \n"; + } + echo " \n"; - echo " \n"; - echo " \n"; - //echo " \n"; - //echo " \n"; - //echo " \n"; - //echo " \n"; - //echo " \n"; - echo " \n"; - //echo " \n"; - //echo " \n"; - //echo " \n"; - //echo " \n"; - //echo " \n"; - echo " \n"; - echo " \n"; + echo " \n"; + //echo " \n"; + //echo " \n"; + //echo " \n"; + //echo " \n"; + //echo " \n"; + echo " \n"; + //echo " \n"; + //echo " \n"; + //echo " \n"; + //echo " \n"; + //echo " \n"; + echo " \n"; + if (permission_exists('call_center_queue_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { + echo " \n"; } - if (permission_exists('call_center_queue_delete')) { - echo "$v_link_label_delete"; - } - echo " \n"; echo "\n"; - 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 "
\n"; + echo " \n"; + echo " "; - if (permission_exists('call_center_queue_add')) { - if ($_SESSION['limit']['call_center_queues']['numeric'] == '' || ($_SESSION['limit']['call_center_queues']['numeric'] != '' && $total_call_center_queues < $_SESSION['limit']['call_center_queues']['numeric'])) { - echo "".$v_link_label_add.""; - } + echo th_order_by('queue_description', $text['label-description'], $order_by, $order, null, "class='hide-sm-dn'"); + if (permission_exists('call_center_queue_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') { + echo "  
"; if (permission_exists('call_center_queue_edit')) { - echo "".escape($row['queue_name']).""; + $list_row_url = "call_center_queue_edit.php?id=".urlencode($row['call_center_queue_uuid']); + } + echo "
\n"; + echo " \n"; + echo " \n"; + echo " "; + if (permission_exists('call_center_queue_edit')) { + echo " ".escape($row['queue_name']).""; } else { - echo escape($row[queue_name]); + echo " ".escape($row[queue_name]); } echo " ".escape($row['queue_extension'])." ".escape($row['queue_strategy'])." ".escape($row[queue_moh_sound])." ".escape($row[queue_record_template])." ".escape($row[queue_time_base_score])." ".escape($row[queue_max_wait_time])." ".escape($row[queue_max_wait_time_with_no_agent])." ".ucwords(escape($row['queue_tier_rules_apply']))." ".escape($row[queue_tier_rule_wait_second])." ".escape($row[queue_tier_rule_no_agent_no_wait])." ".escape($row[queue_discard_abandoned_after])." ".escape($row[queue_abandoned_resume_allowed])." ".escape($row[queue_tier_rule_wait_multiply_level])." ".escape($row['queue_description'])." "; - if (permission_exists('call_center_queue_edit')) { - echo "$v_link_label_edit"; + echo " ".escape($row['queue_extension'])."".escape($row['queue_strategy'])."".escape($row[queue_moh_sound])." ".escape($row[queue_record_template])." ".escape($row[queue_time_base_score])." ".escape($row[queue_max_wait_time])." ".escape($row[queue_max_wait_time_with_no_agent])." ".ucwords(escape($row['queue_tier_rules_apply']))."".escape($row[queue_tier_rule_wait_second])." ".escape($row[queue_tier_rule_no_agent_no_wait])." ".escape($row[queue_discard_abandoned_after])." ".escape($row[queue_abandoned_resume_allowed])." ".escape($row[queue_tier_rule_wait_multiply_level])." ".escape($row['queue_description']).""; + echo button::create(['type'=>'button','title'=>$text['button-edit'],'icon'=>$_SESSION['theme']['button_icon_edit'],'link'=>$list_row_url]); + echo "
\n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo "
 $paging_controls"; - if (permission_exists('call_center_queue_add')) { - if ($_SESSION['limit']['call_center_queues']['numeric'] == '' || ($_SESSION['limit']['call_center_queues']['numeric'] != '' && $total_call_center_queues < $_SESSION['limit']['call_center_queues']['numeric'])) { - echo "".$v_link_label_add.""; + $x++; } + unset($result); } - echo "
\n"; - echo "
"; - echo "

"; + echo "\n"; + echo "
\n"; + echo "
".$paging_controls."
\n"; + + echo "\n"; + + echo "\n"; //show the footer require_once "resources/footer.php"; -?> +?> \ No newline at end of file diff --git a/app/call_centers/resources/classes/call_center.php b/app/call_centers/resources/classes/call_center.php index 058c7d3910..082fc39dce 100644 --- a/app/call_centers/resources/classes/call_center.php +++ b/app/call_centers/resources/classes/call_center.php @@ -43,11 +43,24 @@ public $destination_number; public $queue_cc_exit_keys; + /** + * declare private variables + */ + private $app_name; + private $app_uuid; + private $permission_prefix; + private $list_page; + private $table; + private $uuid_prefix; + private $enabled_prefix; + /** * Called when the object is created */ public function __construct() { - //place holder + //assign private variables + $this->app_name = 'call_center'; + $this->app_uuid = '95788e50-9500-079e-2807-fd530b0ea370'; } /** @@ -264,6 +277,343 @@ return $dialplan_response; } + + /** + * delete records + */ + public function delete_queues($records) { + + //assign private variables + $this->permission_prefix = 'call_center_queue_'; + $this->list_page = 'call_center_queues.php'; + $this->table = 'call_center_queues'; + $this->uuid_prefix = 'call_center_queue_'; + + if (permission_exists($this->permission_prefix.'delete')) { + + //add multi-lingual support + $language = new text; + $text = $language->get(); + + //validate the token + $token = new token; + if (!$token->validate($_SERVER['PHP_SELF'])) { + message::add($text['message-invalid_token'],'negative'); + header('Location: '.$this->list_page); + exit; + } + + //delete multiple records + if (is_array($records) && @sizeof($records) != 0) { + + //build the delete array + foreach($records as $x => $record) { + if ($record['checked'] == 'true' && is_uuid($record['uuid'])) { + $array[$this->table][$x][$this->uuid_prefix.'uuid'] = $record['uuid']; + $array[$this->table][$x]['domain_uuid'] = $_SESSION['domain_uuid']; + $array['call_center_tiers'][$x][$this->uuid_prefix.'uuid'] = $record['uuid']; + $array['call_center_tiers'][$x]['domain_uuid'] = $_SESSION['domain_uuid']; + } + } + + //delete the checked rows + if (is_array($array) && @sizeof($array) != 0) { + + //grant temporary permissions + $p = new permissions; + $p->add('call_center_tier_delete', 'temp'); + + //execute delete + $database = new database; + $database->app_name = $this->app_name; + $database->app_uuid = $this->app_uuid; + $database->delete($array); + unset($array); + + //revoke temporary permissions + $p->delete('call_center_tier_delete', 'temp'); + + //set message + message::add($text['message-delete']); + } + unset($records); + } + } + } + + public function delete_agents($records) { + + //assign private variables + $this->permission_prefix = 'call_center_agent_'; + $this->list_page = 'call_center_agents.php'; + $this->table = 'call_center_agents'; + $this->uuid_prefix = 'call_center_agent_'; + + if (permission_exists($this->permission_prefix.'delete')) { + + //add multi-lingual support + $language = new text; + $text = $language->get(); + + //validate the token + $token = new token; + if (!$token->validate($_SERVER['PHP_SELF'])) { + message::add($text['message-invalid_token'],'negative'); + header('Location: '.$this->list_page); + exit; + } + + //delete multiple records + if (is_array($records) && @sizeof($records) != 0) { + + //build the delete array + foreach($records as $x => $record) { + if ($record['checked'] == 'true' && is_uuid($record['uuid'])) { + $array[$this->table][$x][$this->uuid_prefix.'uuid'] = $record['uuid']; + $array[$this->table][$x]['domain_uuid'] = $_SESSION['domain_uuid']; + $array['call_center_tiers'][$x][$this->uuid_prefix.'uuid'] = $record['uuid']; + $array['call_center_tiers'][$x]['domain_uuid'] = $_SESSION['domain_uuid']; + } + } + + //delete the checked rows + if (is_array($array) && @sizeof($array) != 0) { + + //grant temporary permissions + $p = new permissions; + $p->add('call_center_tier_delete', 'temp'); + + //execute delete + $database = new database; + $database->app_name = $this->app_name; + $database->app_uuid = $this->app_uuid; + $database->delete($array); + unset($array); + + //revoke temporary permissions + $p->delete('call_center_tier_delete', 'temp'); + + //set message + message::add($text['message-delete']); + } + unset($records); + } + } + } + + + /** + * copy records + */ + public function copy_queues($records) { + + //assign private variables + $this->permission_prefix = 'call_center_queue_'; + $this->list_page = 'call_center_queues.php'; + $this->table = 'call_center_queues'; + $this->uuid_prefix = 'call_center_queue_'; + + if (permission_exists($this->permission_prefix.'add')) { + + //add multi-lingual support + $language = new text; + $text = $language->get(); + + //validate the token + $token = new token; + if (!$token->validate($_SERVER['PHP_SELF'])) { + message::add($text['message-invalid_token'],'negative'); + header('Location: '.$this->list_page); + exit; + } + + //copy the checked records + if (is_array($records) && @sizeof($records) != 0) { + + //get checked records + foreach($records as $x => $record) { + if ($record['checked'] == 'true' && is_uuid($record['uuid'])) { + $record_uuids[] = $this->uuid_prefix."uuid = '".$record['uuid']."'"; + } + } + + //create insert array from existing data + if (is_array($record_uuids) && @sizeof($record_uuids) != 0) { + + //primary table + $sql = "select * from v_".$this->table." "; + $sql .= "where ".implode(' or ', $record_uuids)." "; + $database = new database; + $rows = $database->select($sql, $parameters, 'all'); + if (is_array($rows) && @sizeof($rows) != 0) { + $y = 0; + foreach ($rows as $x => $row) { + $primary_uuid = uuid(); + + //copy data + $array[$this->table][$x] = $row; + + //overwrite + $array[$this->table][$x][$this->uuid_prefix.'uuid'] = $primary_uuid; + $array[$this->table][$x]['queue_description'] = trim($row['queue_description'].' ('.$text['label-copy'].')'); + + //sub table + $sql_2 = "select * from v_call_center_tiers where call_center_queue_uuid = :call_center_queue_uuid"; + $parameters_2['call_center_queue_uuid'] = $row['call_center_queue_uuid']; + $database = new database; + $rows_2 = $database->select($sql_2, $parameters_2, 'all'); + if (is_array($rows_2) && @sizeof($rows_2) != 0) { + foreach ($rows_2 as $row_2) { + + //copy data + $array['call_center_tiers'][$y] = $row_2; + + //overwrite + $array['call_center_tiers'][$y]['call_center_tier_uuid'] = uuid(); + $array['call_center_tiers'][$y]['call_center_queue_uuid'] = $primary_uuid; + + $y++; + } + } + unset($sql_2, $parameters_2, $rows_2, $row_2); + } + } + unset($sql, $parameters, $rows, $row); + } + + //save the changes and set the message + if (is_array($array) && @sizeof($array) != 0) { + + //grant temporary permissions + $p = new permissions; + $p->add('call_center_tier_add', 'temp'); + + //save the array + $database = new database; + $database->app_name = $this->app_name; + $database->app_uuid = $this->app_uuid; + $database->save($array); + unset($array); + + //revoke temporary permissions + $p->delete('call_center_tier_add', 'temp'); + + //set message + message::add($text['message-copy']); + + } + unset($records); + } + + } + } + + public function copy_agents($records) { + + //assign private variables + $this->permission_prefix = 'call_center_agent_'; + $this->list_page = 'call_center_agents.php'; + $this->table = 'call_center_agents'; + $this->uuid_prefix = 'call_center_agent_'; + + if (permission_exists($this->permission_prefix.'add')) { + + //add multi-lingual support + $language = new text; + $text = $language->get(); + + //validate the token + $token = new token; + if (!$token->validate($_SERVER['PHP_SELF'])) { + message::add($text['message-invalid_token'],'negative'); + header('Location: '.$this->list_page); + exit; + } + + //copy the checked records + if (is_array($records) && @sizeof($records) != 0) { + + //get checked records + foreach($records as $x => $record) { + if ($record['checked'] == 'true' && is_uuid($record['uuid'])) { + $record_uuids[] = $this->uuid_prefix."uuid = '".$record['uuid']."'"; + } + } + + //create insert array from existing data + if (is_array($record_uuids) && @sizeof($record_uuids) != 0) { + + //primary table + $sql = "select * from v_".$this->table." "; + $sql .= "where ".implode(' or ', $record_uuids)." "; + $database = new database; + $rows = $database->select($sql, $parameters, 'all'); + if (is_array($rows) && @sizeof($rows) != 0) { + $y = 0; + foreach ($rows as $x => $row) { + $primary_uuid = uuid(); + + //copy data + $array[$this->table][$x] = $row; + + //overwrite + $array[$this->table][$x][$this->uuid_prefix.'uuid'] = $primary_uuid; + $array[$this->table][$x]['agent_name'] = trim($row['agent_name'].' ('.$text['label-copy'].')'); + $array[$this->table][$x]['agent_id'] = null; + + //sub table + $sql_2 = "select * from v_call_center_tiers where call_center_agent_uuid = :call_center_agent_uuid"; + $parameters_2['call_center_agent_uuid'] = $row['call_center_agent_uuid']; + $database = new database; + $rows_2 = $database->select($sql_2, $parameters_2, 'all'); + if (is_array($rows_2) && @sizeof($rows_2) != 0) { + foreach ($rows_2 as $row_2) { + + //copy data + $array['call_center_tiers'][$y] = $row_2; + + //overwrite + $array['call_center_tiers'][$y]['call_center_tier_uuid'] = uuid(); + $array['call_center_tiers'][$y]['call_center_agent_uuid'] = $primary_uuid; + + //increment + $y++; + + } + } + unset($sql_2, $parameters_2, $rows_2, $row_2); + } + } + unset($sql, $parameters, $rows, $row); + } + + //save the changes and set the message + if (is_array($array) && @sizeof($array) != 0) { + + //grant temporary permissions + $p = new permissions; + $p->add('call_center_tier_add', 'temp'); + + //save the array + $database = new database; + $database->app_name = $this->app_name; + $database->app_uuid = $this->app_uuid; + $database->save($array); + unset($array); + + //revoke temporary permissions + $p->delete('call_center_tier_add', 'temp'); + + //set message + message::add($text['message-copy']); + + } + unset($records); + } + + } + } + } }