This repository is currently being migrated. It's locked while the migration is in progress.
-
Notifications
You must be signed in to change notification settings - Fork 94
Expand file tree
/
Copy pathsubmit_pipe_test_job.rb
More file actions
86 lines (70 loc) · 2.57 KB
/
submit_pipe_test_job.rb
File metadata and controls
86 lines (70 loc) · 2.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# frozen_string_literal: true
module Lighthouse
class SubmitPipeTestJob
include Sidekiq::Worker
include SentryLogging
sidekiq_options retry: 3, queue: 'low'
def perform(submission_id)
submission = PipeTestSubmission.find(submission_id)
StatsD.increment('worker.lighthouse.submit_pipe_test.started')
# Generate PDF from submission data
pdf_content = generate_pdf(submission)
# Submit to Lighthouse Benefits Intake API
response = submit_to_lighthouse(submission, pdf_content)
if response['data']
confirmation_number = response.dig('data', 'attributes', 'confirmationNumber')
submission.update!(
status: 'submitted',
submitted_at: Time.current,
confirmation_number: confirmation_number,
lighthouse_submission_id: response.dig('data', 'id')
)
StatsD.increment('worker.lighthouse.submit_pipe_test.success')
Rails.logger.info "PIPE-TEST submission #{submission.guid} submitted successfully"
else
handle_submission_error(submission, 'Invalid response from Lighthouse API')
end
rescue => e
handle_submission_error(submission, e.message)
raise
end
private
def generate_pdf(submission)
# Generate PDF content using submission data
# This would integrate with the PDF generation service
pdf_generator = Forms::PipeTestPdfGenerator.new(submission)
pdf_generator.generate
end
def submit_to_lighthouse(submission, pdf_content)
lighthouse_service = BenefitsIntake::Service.new
metadata = {
'veteranFirstName' => submission.veteran_first_name,
'veteranLastName' => submission.veteran_last_name,
'fileNumber' => submission.veteran_ssn.last(4),
'zipCode' => submission.mailing_address_postal_code,
'source' => 'VA.gov',
'docType' => submission.form,
'businessLine' => 'NCA' # Assuming National Cemetery Administration
}
lighthouse_service.upload_form(
pdf_content,
metadata,
submission.guid
)
end
def handle_submission_error(submission, error_message)
submission&.update!(
status: 'error',
error_message: error_message
)
StatsD.increment('worker.lighthouse.submit_pipe_test.error')
log_exception_to_sentry(
StandardError.new("PIPE-TEST submission failed: #{error_message}"),
{
submission_id: submission&.id,
submission_guid: submission&.guid
}
)
end
end
end