|
1 | | -using System.Linq; |
| 1 | +using System.Collections.Generic; |
| 2 | +using System.Linq; |
2 | 3 | using ZendeskApi_v2; |
3 | 4 | using Common; |
| 5 | +using ZendeskApi_v2.Models.Tickets; |
4 | 6 |
|
5 | 7 | namespace GetZendeskAgentStatsInGroup |
6 | 8 | { |
@@ -43,13 +45,32 @@ private static void GetResult(long groupId) |
43 | 45 | // Loop through each agent in group |
44 | 46 | foreach (var agent in agentsInGroup) |
45 | 47 | { |
46 | | - // Get the agents tickets |
47 | | - var agentTickets = _api.Tickets.GetTicketsByUserID((long)agent.Id).Tickets.Where(t => t.GroupId == groupId).ToList(); |
48 | 48 | string[] solvedStatus = { "closed", "solved" }; |
49 | 49 |
|
50 | | - // Create a channel for this agent with the number of open tickets. |
51 | | - var openTickets = agentTickets.Count(t => !solvedStatus.Contains(t.Status.ToLower())); |
52 | | - _xml.AddChannel(agent.Name + "(Open)", openTickets.ToString()); |
| 50 | + // Get the agents tickets |
| 51 | + if (agent.Id != null) |
| 52 | + { |
| 53 | + var ticketPage = _api.Tickets.GetTicketsByUserID((long) agent.Id); |
| 54 | + var agentTickets = ticketPage.Tickets.Where(t => t.GroupId == groupId).ToList(); |
| 55 | + |
| 56 | + // If more than 100 exist, import the rest as well |
| 57 | + while (!string.IsNullOrEmpty(ticketPage.NextPage)) |
| 58 | + { |
| 59 | + ticketPage = _api.Tickets.GetByPageUrl<GroupTicketResponse>(ticketPage.NextPage); |
| 60 | + agentTickets.AddRange(ticketPage.Tickets.Where(t => t.GroupId == groupId).ToList()); |
| 61 | + } |
| 62 | + |
| 63 | + // Create a channel for this agent with the number of open tickets. |
| 64 | + var openTickets = agentTickets.Where(t => !solvedStatus.Contains(t.Status.ToLower())).ToList(); |
| 65 | + var problems = openTickets.Count(t => t.Type.Equals("problem")); |
| 66 | + var incidents = openTickets.Count(t => t.Type.Equals("incident")); |
| 67 | + var tasks = openTickets.Count(t => t.Type.Equals("task")); |
| 68 | + |
| 69 | + _xml.AddChannel(agent.Name + "(Problem)", problems.ToString()); |
| 70 | + _xml.AddChannel(agent.Name + "(Incident)", incidents.ToString()); |
| 71 | + _xml.AddChannel(agent.Name + "(Tasks)", tasks.ToString()); |
| 72 | + _xml.AddChannel(agent.Name + "(Total open)", openTickets.Count.ToString()); |
| 73 | + } |
53 | 74 | } |
54 | 75 |
|
55 | 76 | // Output the finished XML. |
|
0 commit comments