Class: Form1010cg::Auditor

Inherits:
Object
  • Object
show all
Defined in:
app/services/form1010cg/auditor.rb

Constant Summary collapse

STATSD_KEY_PREFIX =
'api.form1010cg'
LOGGER_PREFIX =
'Form 10-10CG'
LOGGER_FILTER_KEYS =
[:veteran_name].freeze
METRICS =
lambda do
  submission_prefix = "#{STATSD_KEY_PREFIX}.submission"

  OpenStruct.new(
    submission: OpenStruct.new(
      attempt: "#{submission_prefix}.attempt",
      caregivers: OpenStruct.new(
        primary_no_secondary: "#{submission_prefix}.caregivers.primary_no_secondary",
        primary_one_secondary: "#{submission_prefix}.caregivers.primary_one_secondary",
        primary_two_secondary: "#{submission_prefix}.caregivers.primary_two_secondary",
        no_primary_one_secondary: "#{submission_prefix}.caregivers.no_primary_one_secondary",
        no_primary_two_secondary: "#{submission_prefix}.caregivers.no_primary_two_secondary"
      ),
      failure: OpenStruct.new(
        client: OpenStruct.new(
          data: "#{submission_prefix}.failure.client.data",
          qualification: "#{submission_prefix}.failure.client.qualification"
        ),
        attachments: "#{submission_prefix}.failure.attachments"
      )
    ),
    pdf_download: "#{STATSD_KEY_PREFIX}.pdf_download"
  )
end.call

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(logger = Rails.logger) ⇒ Auditor

Returns a new instance of Auditor.



40
41
42
# File 'app/services/form1010cg/auditor.rb', line 40

def initialize(logger = Rails.logger)
  @logger = logger
end

Instance Attribute Details

#loggerObject (readonly)

Returns the value of attribute logger.



5
6
7
# File 'app/services/form1010cg/auditor.rb', line 5

def logger
  @logger
end

Class Method Details

.metricsObject



36
37
38
# File 'app/services/form1010cg/auditor.rb', line 36

def self.metrics
  METRICS
end

Instance Method Details

#log_mpi_search_result(claim_guid:, form_subject:, result:) ⇒ Object



103
104
105
106
107
# File 'app/services/form1010cg/auditor.rb', line 103

def log_mpi_search_result(claim_guid:, form_subject:, result:)
  labels = { found: 'found', not_found: 'NOT FOUND', skipped: 'search was skipped' }
  result_label = labels[result]
  log("MPI Profile #{result_label} for #{form_subject.titleize}", { claim_guid: })
end

#record(event, **context) ⇒ Object



44
45
46
47
# File 'app/services/form1010cg/auditor.rb', line 44

def record(event, **context)
  message = "record_#{event}"
  context.any? ? send(message, **context) : send(message)
end

#record_attachments_delivered(claim_guid:, carma_case_id:, attachments:) ⇒ Object



94
95
96
97
98
99
100
101
# File 'app/services/form1010cg/auditor.rb', line 94

def record_attachments_delivered(claim_guid:, carma_case_id:, attachments:)
  log(
    'Attachments Delivered',
    claim_guid:,
    carma_case_id:,
    attachments:
  )
end

#record_caregivers(claim) ⇒ Object

rubocop:disable Metrics/MethodLength



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'app/services/form1010cg/auditor.rb', line 54

def record_caregivers(claim)
  secondaries_count = 0
  %w[one two].each do |attr|
    secondaries_count += 1 if claim.public_send("secondary_caregiver_#{attr}_data").present?
  end

  if claim.primary_caregiver_data.present?
    case secondaries_count
    when 0
      increment(self.class.metrics.submission.caregivers.primary_no_secondary)
    when 1
      increment(self.class.metrics.submission.caregivers.primary_one_secondary)
    when 2
      increment(self.class.metrics.submission.caregivers.primary_two_secondary)
    end
  else
    case secondaries_count
    when 1
      increment(self.class.metrics.submission.caregivers.no_primary_one_secondary)
    when 2
      increment(self.class.metrics.submission.caregivers.no_primary_two_secondary)
    end
  end
end

#record_pdf_downloadObject



90
91
92
# File 'app/services/form1010cg/auditor.rb', line 90

def record_pdf_download
  increment self.class.metrics.pdf_download
end

#record_submission_attemptObject



49
50
51
# File 'app/services/form1010cg/auditor.rb', line 49

def record_submission_attempt
  increment self.class.metrics.submission.attempt
end

#record_submission_failure_client_data(errors:, claim_guid: nil) ⇒ Object

rubocop:enable Metrics/MethodLength



80
81
82
83
# File 'app/services/form1010cg/auditor.rb', line 80

def record_submission_failure_client_data(errors:, claim_guid: nil)
  increment self.class.metrics.submission.failure.client.data
  log 'Submission Failed: invalid data provided by client', claim_guid:, errors:
end

#record_submission_failure_client_qualification(claim_guid:) ⇒ Object



85
86
87
88
# File 'app/services/form1010cg/auditor.rb', line 85

def record_submission_failure_client_qualification(claim_guid:)
  increment self.class.metrics.submission.failure.client.qualification
  log 'Submission Failed: qualifications not met', claim_guid:
end