Class: Form1010Ezr::Service
Constant Summary
collapse
- STATSD_KEY_PREFIX =
'api.1010ezr'
- FORM_ID =
'10-10EZR'
Instance Method Summary
collapse
#log_exception_to_sentry, #log_message_to_sentry, #non_nil_hash?, #normalize_level, #rails_logger
#override_parsed_form, #soap
#with_monitoring
configuration, #raise_backend_exception
Constructor Details
#initialize(user) ⇒ Service
Returns a new instance of Service.
24
25
26
27
|
# File 'lib/form1010_ezr/service.rb', line 24
def initialize(user)
super()
@user = user
end
|
Instance Method Details
#log_submission_failure(parsed_form) ⇒ Object
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
# File 'lib/form1010_ezr/service.rb', line 76
def log_submission_failure(parsed_form)
StatsD.increment("#{Form1010Ezr::Service::STATSD_KEY_PREFIX}.failed_wont_retry")
if parsed_form.present?
PersonalInformationLog.create!(
data: parsed_form,
error_class: 'Form1010Ezr FailedWontRetry'
)
log_message_to_sentry(
'1010EZR total failure',
:error,
{
first_initial: parsed_form['veteranFullName']['first'][0],
middle_initial: parsed_form['veteranFullName']['middle'].try(:[], 0),
last_initial: parsed_form['veteranFullName']['last'][0]
},
ezr: :total_failure
)
end
end
|
#submit_async(parsed_form) ⇒ Object
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'lib/form1010_ezr/service.rb', line 63
def submit_form(parsed_form)
parsed_form = configure_and_validate_form(parsed_form)
if Flipper.enabled?(:ezr_async, @user)
submit_async(parsed_form)
else
submit_sync(parsed_form)
end
rescue => e
log_submission_failure(parsed_form)
Rails.logger.error "10-10EZR form submission failed: #{e.message}"
raise e
end
|
#submit_sync(parsed_form) ⇒ Object
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/form1010_ezr/service.rb', line 36
def submit_sync(parsed_form)
formatted = HCA::EnrollmentSystem.veteran_to_save_submit_form(parsed_form, @user, FORM_ID)
content = Gyoku.xml(formatted)
submission = soap.build_request(:save_submit_form, message: content)
response = with_monitoring do
perform(:post, '', submission.body)
rescue => e
increment_failure('submit_form', e)
raise e
ensure
increment_total('submit_form')
end
root = response.body.locate('S:Envelope/S:Body/submitFormResponse').first
form_submission_id = root.locate('formSubmissionId').first.text.to_i
Rails.logger.info("SubmissionID=#{form_submission_id}")
{
success: true,
formSubmissionId: form_submission_id,
timestamp: root.locate('timeStamp').first&.text || Time.now.getlocal.to_s
}
end
|