app/jobs/reports/monthly_gpo_letter_requests_report.rb
# frozen_string_literal: true
require 'identity/hostdata'
module Reports
class MonthlyGpoLetterRequestsReport < BaseReport
REPORT_NAME = 'monthly-usps-letter-requests-report'
def perform(_date, start_time: first_of_this_month, end_time: end_of_today)
daily_results = transaction_with_timeout do
::LetterRequestsToGpoFtpLog.where(ftp_at: start_time..end_time)
end
totals = calculate_totals(daily_results)
save_report(
REPORT_NAME,
{
total_letter_requests: totals,
daily_letter_requests: daily_results,
}.to_json,
extension: 'json',
)
end
private
def calculate_totals(daily_results)
daily_results.reduce(0) { |sum, rec| sum + rec['letter_requests_count'].to_i }
end
end
end