adjust audit values

pull/381/head
Pete Matsyburka 1 year ago committed by Oleksandr Turchyn
parent e6c8203959
commit 35cce24539

@ -264,95 +264,94 @@ module Submissions
composer.table(info_rows, cell_style: { padding: [0, 0, 0, 0], border: { width: 0 } }) composer.table(info_rows, cell_style: { padding: [0, 0, 0, 0], border: { width: 0 } })
if with_audit_values 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 next if field['type'] == 'heading'
next if field['type'] == 'heading' next if !with_audit_values && !field['type'].in?(%w[signature initials])
submitter_field_counters[field['type']] += 1 submitter_field_counters[field['type']] += 1
value = submitter.values[field['uuid']] value = submitter.values[field['uuid']]
next if Array.wrap(value).compact_blank.blank? next if Array.wrap(value).compact_blank.blank?
field_name = field['title'].presence || field['name'].to_s field_name = field['title'].presence || field['name'].to_s
[ [
composer.formatted_text_box( composer.formatted_text_box(
[ [
{ {
text: TextUtils.maybe_rtl_reverse(field_name).upcase.presence || text: TextUtils.maybe_rtl_reverse(field_name).upcase.presence ||
"#{I18n.t("#{field['type']}_field")} #{submitter_field_counters[field['type']]}\n".upcase, "#{I18n.t("#{field['type']}_field")} #{submitter_field_counters[field['type']]}\n".upcase,
font_size: 6 font_size: 6
} }
].compact_blank, ].compact_blank,
text_align: field_name.to_s.match?(RTL_REGEXP) ? :right : :left, text_align: field_name.to_s.match?(RTL_REGEXP) ? :right : :left,
line_spacing: 1.3, padding: [0, 0, 2, 0] line_spacing: 1.3, padding: [0, 0, 2, 0]
), ),
if field['type'].in?(%w[image signature initials stamp]) if field['type'].in?(%w[image signature initials stamp])
attachment = submitter.attachments.find { |a| a.uuid == value } attachment = submitter.attachments.find { |a| a.uuid == value }
image = Vips::Image.new_from_buffer(attachment.download, '').autorot image = Vips::Image.new_from_buffer(attachment.download, '').autorot
scale = [600.0 / image.width, 600.0 / image.height].min scale = [600.0 / image.width, 600.0 / image.height].min
resized_image = image.resize([scale, 1].min) resized_image = image.resize([scale, 1].min)
io = StringIO.new(resized_image.write_to_buffer('.png')) io = StringIO.new(resized_image.write_to_buffer('.png'))
width = field['type'] == 'initials' ? 100 : 200 width = field['type'] == 'initials' ? 100 : 200
height = resized_image.height * (width.to_f / resized_image.width) height = resized_image.height * (width.to_f / resized_image.width)
if height > MAX_IMAGE_HEIGHT if height > MAX_IMAGE_HEIGHT
width = (MAX_IMAGE_HEIGHT / height) * width width = (MAX_IMAGE_HEIGHT / height) * width
height = MAX_IMAGE_HEIGHT height = MAX_IMAGE_HEIGHT
end end
composer.image(io, width:, height:, margin: [5, 0, 10, 0]) composer.image(io, width:, height:, margin: [5, 0, 10, 0])
composer.formatted_text_box([{ text: '' }]) composer.formatted_text_box([{ text: '' }])
elsif field['type'].in?(%w[file payment]) elsif field['type'].in?(%w[file payment])
if field['type'] == 'payment' if field['type'] == 'payment'
unit = CURRENCY_SYMBOLS[field['preferences']['currency']] || field['preferences']['currency'] unit = CURRENCY_SYMBOLS[field['preferences']['currency']] || field['preferences']['currency']
price = ApplicationController.helpers.number_to_currency(field['preferences']['price'], unit:) price = ApplicationController.helpers.number_to_currency(field['preferences']['price'], unit:)
composer.formatted_text_box([{ text: "#{I18n.t('paid_price', price:)}\n" }], composer.formatted_text_box([{ text: "#{I18n.t('paid_price', price:)}\n" }],
padding: [0, 0, 10, 0]) padding: [0, 0, 10, 0])
end end
composer.formatted_text_box( composer.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 =
ActiveStorage::Blob.proxy_url(attachment.blob) ActiveStorage::Blob.proxy_url(attachment.blob)
{ link:, text: "#{attachment.filename}\n", style: :link } { link:, text: "#{attachment.filename}\n", style: :link }
end, end,
padding: [0, 0, 10, 0] padding: [0, 0, 10, 0]
) )
elsif field['type'] == 'checkbox' elsif field['type'] == 'checkbox'
composer.formatted_text_box([{ text: value.to_s.titleize }], padding: [0, 0, 10, 0]) composer.formatted_text_box([{ text: value.to_s.titleize }], padding: [0, 0, 10, 0])
else else
if field['type'] == 'date' if field['type'] == 'date'
value = TimeUtils.format_date_string(value, field.dig('preferences', 'format'), account.locale) value = TimeUtils.format_date_string(value, field.dig('preferences', 'format'), account.locale)
end end
if field['type'] == 'number' if field['type'] == 'number'
value = NumberUtils.format_number(value, value = NumberUtils.format_number(value,
field.dig('preferences', 'format')) field.dig('preferences', 'format'))
end end
value = value.join(', ') if value.is_a?(Array) value = value.join(', ') if value.is_a?(Array)
composer.formatted_text_box([{ text: TextUtils.maybe_rtl_reverse(value.to_s.presence || 'n/a') }], composer.formatted_text_box([{ text: TextUtils.maybe_rtl_reverse(value.to_s.presence || 'n/a') }],
text_align: value.to_s.match?(RTL_REGEXP) ? :right : :left, text_align: value.to_s.match?(RTL_REGEXP) ? :right : :left,
padding: [0, 0, 10, 0]) padding: [0, 0, 10, 0])
end end
] ]
end
end end
composer.draw_box(divider)
end end
composer.draw_box(divider)
composer.text(I18n.t('event_log'), font_size: 12, padding: [10, 0, 20, 0]) composer.text(I18n.t('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|

Loading…
Cancel
Save