fix ticket stats
This commit is contained in:
@@ -118,10 +118,10 @@ get_statistics(AdminId) ->
|
||||
case admin_utils:is_admin(AdminId) of
|
||||
true ->
|
||||
All = core_ticket:list_all(),
|
||||
Open = length([T || T <- All, T#ticket.status =:= open]),
|
||||
InProgress = length([T || T <- All, T#ticket.status =:= in_progress]),
|
||||
Resolved = length([T || T <- All, T#ticket.status =:= resolved]),
|
||||
Closed = length([T || T <- All, T#ticket.status =:= closed]),
|
||||
Open = count_by_status(All, open),
|
||||
InProgress = count_by_status(All, in_progress),
|
||||
Resolved = count_by_status(All, resolved),
|
||||
Closed = count_by_status(All, closed),
|
||||
TotalErrors = lists:sum([T#ticket.count || T <- All]),
|
||||
#{
|
||||
total_tickets => length(All),
|
||||
@@ -134,6 +134,15 @@ get_statistics(AdminId) ->
|
||||
false -> {error, access_denied}
|
||||
end.
|
||||
|
||||
count_by_status(Tickets, Status) ->
|
||||
length([T || T <- Tickets, normalize_status(T#ticket.status) =:= Status]).
|
||||
|
||||
normalize_status(Status) when is_atom(Status) -> Status;
|
||||
normalize_status(Status) when is_binary(Status) ->
|
||||
try binary_to_existing_atom(Status, utf8)
|
||||
catch error:badarg -> Status
|
||||
end.
|
||||
|
||||
%% ============ Вспомогательные функции ============
|
||||
|
||||
notify_admins(_Ticket) ->
|
||||
|
||||
Reference in New Issue
Block a user