18F/identity-idp

View on GitHub
app/jobs/reports/monthly_gpo_letter_requests_report.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
93%
# 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