fix ticket stats

This commit is contained in:
2026-05-19 22:16:26 +03:00
parent d040256447
commit faee11ce29
4 changed files with 82 additions and 26 deletions
+13 -4
View File
@@ -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) ->