fix audit trail generation
This commit is contained in:
@@ -123,8 +123,11 @@ module Submissions
|
|||||||
|
|
||||||
composer.draw_box(divider)
|
composer.draw_box(divider)
|
||||||
|
|
||||||
submitters_data = submission.template_submitters.map do |item|
|
submission.template_submitters.filter_map do |item|
|
||||||
submitter = submission.submitters.find { |e| e.uuid == item['uuid'] }
|
submitter = submission.submitters.find { |e| e.uuid == item['uuid'] }
|
||||||
|
|
||||||
|
next if submitter.blank?
|
||||||
|
|
||||||
completed_event =
|
completed_event =
|
||||||
submission.submission_events.find { |e| e.submitter_id == submitter.id && e.complete_form? } ||
|
submission.submission_events.find { |e| e.submitter_id == submitter.id && e.complete_form? } ||
|
||||||
SubmissionEvent.new
|
SubmissionEvent.new
|
||||||
@@ -132,11 +135,13 @@ module Submissions
|
|||||||
click_email_event =
|
click_email_event =
|
||||||
submission.submission_events.find { |e| e.submitter_id == submitter.id && e.click_email? }
|
submission.submission_events.find { |e| e.submitter_id == submitter.id && e.click_email? }
|
||||||
is_phone_verified =
|
is_phone_verified =
|
||||||
submission.template_fields.any? { |e| e['type'] == 'phone' && e['submitter_uuid'] == submitter.uuid }
|
submission.template_fields.any? do |e|
|
||||||
|
e['type'] == 'phone' && e['submitter_uuid'] == submitter.uuid && submitter.values[e['uuid']].present?
|
||||||
|
end
|
||||||
|
|
||||||
submitter_field_counters = Hash.new { 0 }
|
submitter_field_counters = Hash.new { 0 }
|
||||||
|
|
||||||
[
|
info_rows = [
|
||||||
[
|
[
|
||||||
composer.document.layout.formatted_text_box(
|
composer.document.layout.formatted_text_box(
|
||||||
[
|
[
|
||||||
@@ -145,7 +150,9 @@ module Submissions
|
|||||||
submitter.name && { text: "#{submitter.name}\n" },
|
submitter.name && { text: "#{submitter.name}\n" },
|
||||||
submitter.phone && { text: "#{submitter.phone}\n" }
|
submitter.phone && { text: "#{submitter.phone}\n" }
|
||||||
].compact_blank, line_spacing: 1.8, padding: [0, 20, 0, 0]
|
].compact_blank, line_spacing: 1.8, padding: [0, 20, 0, 0]
|
||||||
),
|
)
|
||||||
|
],
|
||||||
|
[
|
||||||
composer.document.layout.formatted_text_box(
|
composer.document.layout.formatted_text_box(
|
||||||
[
|
[
|
||||||
submitter.email && {
|
submitter.email && {
|
||||||
@@ -158,9 +165,14 @@ module Submissions
|
|||||||
completed_event.data['sid'] && { text: "Session ID: #{completed_event.data['sid']}\n" },
|
completed_event.data['sid'] && { text: "Session ID: #{completed_event.data['sid']}\n" },
|
||||||
completed_event.data['ua'] && { text: "User agent: #{completed_event.data['ua']}\n" },
|
completed_event.data['ua'] && { text: "User agent: #{completed_event.data['ua']}\n" },
|
||||||
"\n"
|
"\n"
|
||||||
].compact_blank, line_spacing: 1.8, padding: [10, 20, 0, 0]
|
].compact_blank, line_spacing: 1.8, padding: [10, 20, 20, 0]
|
||||||
)
|
)
|
||||||
],
|
]
|
||||||
|
]
|
||||||
|
|
||||||
|
composer.table(info_rows, cell_style: { padding: [0, 0, 0, 0], border: { width: 0 } })
|
||||||
|
|
||||||
|
composer.column(columns: 1, gaps: 0, style: { padding: [0, 200, 0, 0] }) do |column|
|
||||||
submission.template_fields.filter_map do |field|
|
submission.template_fields.filter_map do |field|
|
||||||
next if field['submitter_uuid'] != submitter.uuid
|
next if field['submitter_uuid'] != submitter.uuid
|
||||||
|
|
||||||
@@ -168,12 +180,14 @@ module Submissions
|
|||||||
|
|
||||||
value = submitter.values[field['uuid']]
|
value = submitter.values[field['uuid']]
|
||||||
|
|
||||||
|
next if Array.wrap(value).compact_blank.blank?
|
||||||
|
|
||||||
[
|
[
|
||||||
composer.document.layout.formatted_text_box(
|
column.formatted_text_box(
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
text: field['name'].presence ||
|
text: field['name'].to_s.upcase.presence ||
|
||||||
"#{field['type'].titleize} Field #{submitter_field_counters[field['type']]}\n".upcase,
|
"#{field['type']} Field #{submitter_field_counters[field['type']]}\n".upcase,
|
||||||
font_size: 6
|
font_size: 6
|
||||||
}
|
}
|
||||||
].compact_blank, line_spacing: 1.8, padding: [0, 0, 5, 0]
|
].compact_blank, line_spacing: 1.8, padding: [0, 0, 5, 0]
|
||||||
@@ -186,9 +200,10 @@ module Submissions
|
|||||||
|
|
||||||
io = StringIO.new(image.resize([scale, 1].min).write_to_buffer('.png'))
|
io = StringIO.new(image.resize([scale, 1].min).write_to_buffer('.png'))
|
||||||
|
|
||||||
composer.document.layout.image(io, padding: [0, 100, 10, 0])
|
column.image(io, padding: [0, 100, 10, 0])
|
||||||
|
column.formatted_text_box([{ text: '' }])
|
||||||
elsif field['type'] == 'file'
|
elsif field['type'] == 'file'
|
||||||
composer.document.layout.formatted_text_box(
|
column.formatted_text_box(
|
||||||
Array.wrap(value).map do |uuid|
|
Array.wrap(value).map do |uuid|
|
||||||
attachment = submitter.attachments.find { |a| a.uuid == uuid }
|
attachment = submitter.attachments.find { |a| a.uuid == uuid }
|
||||||
link =
|
link =
|
||||||
@@ -199,23 +214,20 @@ module Submissions
|
|||||||
padding: [0, 0, 10, 0]
|
padding: [0, 0, 10, 0]
|
||||||
)
|
)
|
||||||
elsif field['type'] == 'checkbox'
|
elsif field['type'] == 'checkbox'
|
||||||
composer.document.layout.formatted_text_box([{ text: value.to_s.titleize }], padding: [0, 0, 10, 0])
|
column.formatted_text_box([{ text: value.to_s.titleize }], padding: [0, 0, 10, 0])
|
||||||
else
|
else
|
||||||
value = I18n.l(Date.parse(value), format: :long, locale: account.locale) if field['type'] == 'date'
|
value = I18n.l(Date.parse(value), format: :long, locale: account.locale) if field['type'] == 'date'
|
||||||
value = value.join(', ') if value.is_a?(Array)
|
value = value.join(', ') if value.is_a?(Array)
|
||||||
|
|
||||||
composer.document.layout.formatted_text_box([{ text: value.to_s.presence || 'n/a' }],
|
column.formatted_text_box([{ text: value.to_s.presence || 'n/a' }], padding: [0, 0, 10, 0])
|
||||||
padding: [0, 0, 10, 0])
|
|
||||||
end
|
end
|
||||||
]
|
]
|
||||||
end.flatten
|
end
|
||||||
]
|
end
|
||||||
|
|
||||||
|
composer.draw_box(divider)
|
||||||
end
|
end
|
||||||
|
|
||||||
composer.table(submitters_data, cell_style: { padding: [0, 0, 25, 0], border: { width: 0 } })
|
|
||||||
|
|
||||||
composer.draw_box(divider)
|
|
||||||
|
|
||||||
composer.text('Event Log', font_size: 12, padding: [10, 0, 20, 0])
|
composer.text('Event Log', font_size: 12, padding: [10, 0, 20, 0])
|
||||||
|
|
||||||
events_data = submission.submission_events.sort_by(&:event_timestamp).map do |event|
|
events_data = submission.submission_events.sort_by(&:event_timestamp).map do |event|
|
||||||
|
|||||||
Reference in New Issue
Block a user