mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-01 19:48:08 +00:00
53 lines
1.5 KiB
Ruby
53 lines
1.5 KiB
Ruby
module Api::V2::Accounts::ReportsHelper
|
|
def generate_agents_report
|
|
Current.account.users.map do |agent|
|
|
agent_report = generate_report({ type: :agent, id: agent.id })
|
|
[agent.name] + generate_readable_report_metrics(agent_report)
|
|
end
|
|
end
|
|
|
|
def generate_inboxes_report
|
|
Current.account.inboxes.map do |inbox|
|
|
inbox_report = generate_report({ type: :inbox, id: inbox.id })
|
|
[inbox.name, inbox.channel&.name] + generate_readable_report_metrics(inbox_report)
|
|
end
|
|
end
|
|
|
|
def generate_teams_report
|
|
Current.account.teams.map do |team|
|
|
team_report = generate_report({ type: :team, id: team.id })
|
|
[team.name] + generate_readable_report_metrics(team_report)
|
|
end
|
|
end
|
|
|
|
def generate_labels_report
|
|
Current.account.labels.map do |label|
|
|
label_report = generate_report({ type: :label, id: label.id })
|
|
[label.title] + generate_readable_report_metrics(label_report)
|
|
end
|
|
end
|
|
|
|
def generate_report(report_params)
|
|
V2::ReportBuilder.new(
|
|
Current.account,
|
|
report_params.merge(
|
|
{
|
|
since: params[:since],
|
|
until: params[:until],
|
|
business_hours: ActiveModel::Type::Boolean.new.cast(params[:business_hours])
|
|
}
|
|
)
|
|
).short_summary
|
|
end
|
|
|
|
private
|
|
|
|
def generate_readable_report_metrics(report_metric)
|
|
[
|
|
report_metric[:conversations_count],
|
|
Reports::TimeFormatPresenter.new(report_metric[:avg_first_response_time]).format,
|
|
Reports::TimeFormatPresenter.new(report_metric[:avg_resolution_time]).format
|
|
]
|
|
end
|
|
end
|