From 80649df65c830a9e0b7bdddc6ccbda9277c42e1e Mon Sep 17 00:00:00 2001 From: Italo Rossi Date: Tue, 2 Dec 2014 22:57:43 -0300 Subject: [PATCH 1/2] fix FS-7049 - Count and list agents based on their state --- .../mod_callcenter/mod_callcenter.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/mod/applications/mod_callcenter/mod_callcenter.c b/src/mod/applications/mod_callcenter/mod_callcenter.c index 8d4c0caf06..7a34883345 100644 --- a/src/mod/applications/mod_callcenter/mod_callcenter.c +++ b/src/mod/applications/mod_callcenter/mod_callcenter.c @@ -3220,6 +3220,7 @@ SWITCH_STANDARD_API(cc_config_api_function) const char *sub_action = argv[0 + initial_argc]; const char *queue_name = argv[1 + initial_argc]; const char *status = NULL; + const char *state = NULL; struct list_result cbt; /* queue list agents */ @@ -3227,7 +3228,13 @@ SWITCH_STANDARD_API(cc_config_api_function) if (argc-initial_argc > 2) { status = argv[2 + initial_argc]; } - if (status) { + if (argc-initial_argc > 3) { + state = argv[3 + initial_argc]; + } + if (state) { + sql = switch_mprintf("SELECT agents.* FROM agents,tiers WHERE tiers.agent = agents.name AND tiers.queue = '%q' AND agents.status = '%q' AND agents.state = '%q'", queue_name, status, state); + } + else if (status) { sql = switch_mprintf("SELECT agents.* FROM agents,tiers WHERE tiers.agent = agents.name AND tiers.queue = '%q' AND agents.status = '%q'", queue_name, status); } else { sql = switch_mprintf("SELECT agents.* FROM agents,tiers WHERE tiers.agent = agents.name AND tiers.queue = '%q'", queue_name); @@ -3266,6 +3273,7 @@ SWITCH_STANDARD_API(cc_config_api_function) const char *sub_action = argv[0 + initial_argc]; const char *queue_name = argv[1 + initial_argc]; const char *status = NULL; + const char *state = NULL; char res[256] = ""; /* queue count agents */ @@ -3273,7 +3281,13 @@ SWITCH_STANDARD_API(cc_config_api_function) if (argc-initial_argc > 2) { status = argv[2 + initial_argc]; } - if (status) { + if (argc-initial_argc > 3) { + state = argv[3 + initial_argc]; + } + if (state) { + sql = switch_mprintf("SELECT count(*) FROM agents,tiers WHERE tiers.agent = agents.name AND tiers.queue = '%q' AND agents.status = '%q' AND agents.state = '%q'", queue_name, status, state); + } + else if (status) { sql = switch_mprintf("SELECT count(*) FROM agents,tiers WHERE tiers.agent = agents.name AND tiers.queue = '%q' AND agents.status = '%q'", queue_name, status); } else { sql = switch_mprintf("SELECT count(*) FROM agents,tiers WHERE tiers.agent = agents.name AND tiers.queue = '%q'", queue_name); From f63f8686bc8da391b3c46b24e10571215c8b377f Mon Sep 17 00:00:00 2001 From: Italo Rossi Date: Thu, 11 Dec 2014 23:43:03 -0300 Subject: [PATCH 2/2] FS-7049 - Documentation for state optional paramenter in callcenter_config queue list and count --- src/mod/applications/mod_callcenter/mod_callcenter.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mod/applications/mod_callcenter/mod_callcenter.c b/src/mod/applications/mod_callcenter/mod_callcenter.c index 7a34883345..6103932706 100644 --- a/src/mod/applications/mod_callcenter/mod_callcenter.c +++ b/src/mod/applications/mod_callcenter/mod_callcenter.c @@ -2862,11 +2862,11 @@ static int list_result_callback(void *pArg, int argc, char **argv, char **column "\tcallcenter_config queue unload [queue_name] | \n" \ "\tcallcenter_config queue reload [queue_name] | \n" \ "\tcallcenter_config queue list | \n" \ -"\tcallcenter_config queue list agents [queue_name] [status] | \n" \ +"\tcallcenter_config queue list agents [queue_name] [status] [state] | \n" \ "\tcallcenter_config queue list members [queue_name] | \n" \ "\tcallcenter_config queue list tiers [queue_name] | \n" \ "\tcallcenter_config queue count | \n" \ -"\tcallcenter_config queue count agents [queue_name] [status] | \n" \ +"\tcallcenter_config queue count agents [queue_name] [status] [state] | \n" \ "\tcallcenter_config queue count members [queue_name] | \n" \ "\tcallcenter_config queue count tiers [queue_name]"