allow to invite party

This commit is contained in:
Pete Matsyburka
2024-09-12 17:31:37 +03:00
committed by Oleksandr Turchyn
parent 3604fb6461
commit 10fbdf6612
27 changed files with 322 additions and 43 deletions
+1
View File
@@ -14,6 +14,7 @@ module SubmissionEvents
phone_verified: 'Phone verified',
start_form: 'Submission started',
view_form: 'Form viewed',
invite_party: 'Invited',
complete_form: 'Submission completed',
api_complete_form: 'Submission completed via API'
}.freeze
@@ -10,14 +10,6 @@ module Submissions
assign_defined_submitters(submission)
assign_linked_submitters(submission)
if submission.submitters.size == 1 && submission.template.submitters.size == 2 && submission.source != 'embed'
submission.submitters.new(
account_id: submission.account_id,
uuid: submission.template.submitters.find { |e| e['uuid'] != submission.submitters.first.uuid }['uuid'],
email: submission.template.author.email
)
end
submission
end
+11
View File
@@ -39,10 +39,21 @@ module Submissions
next if submission.submitters.blank?
maybe_add_invite_submitters(submission, template)
submission.tap(&:save!)
end
end
def maybe_add_invite_submitters(submission, template)
template.submitters.each do |item|
next if item['invite_by_uuid'].blank? ||
submission.template_submitters.any? { |e| e['uuid'] == item['uuid'] }
submission.template_submitters << item
end
end
def maybe_set_template_fields(submission, submitters_attrs, default_submitter_uuid: nil)
template_fields = (submission.template_fields || submission.template.fields).deep_dup
+10 -2
View File
@@ -348,13 +348,21 @@ module Submissions
events_data = submission.submission_events.sort_by(&:event_timestamp).map do |event|
submitter = submission.submitters.find { |e| e.id == event.submitter_id }
text = SubmissionEvents::EVENT_NAMES[event.event_type.to_sym]
if event.event_type == 'invite_party' &&
(invited_submitter = submission.submitters.find { |e| e.uuid == event.data['uuid'] }) &&
(name = submission.template_submitters.find { |e| e['uuid'] == event.data['uuid'] }&.dig('name'))
text += ['', invited_submitter.name || invited_submitter.email || invited_submitter.phone, name].join(' ')
end
[
"#{I18n.l(event.event_timestamp.in_time_zone(account.timezone), format: :long, locale: account.locale)} " \
"#{TimeUtils.timezone_abbr(account.timezone, event.event_timestamp)}",
composer.document.layout.formatted_text_box(
[
{ text: SubmissionEvents::EVENT_NAMES[event.event_type.to_sym],
font: [FONT_NAME, { variant: :bold }] },
{ text:, font: [FONT_NAME, { variant: :bold }] },
event.event_type.include?('send_') ? ' to ' : ' by ',
if event.event_type.include?('sms') || event.event_type.include?('phone')
event.data['phone'] || submitter.phone
+7
View File
@@ -23,4 +23,11 @@ module Templates
templates.where(Template.arel_table[:name].lower.matches("%#{keyword.downcase}%"))
end
def filter_undefined_submitters(template)
template.submitters.to_a.select do |item|
item['invite_by_uuid'].blank? && item['linked_to_uuid'].blank? &&
item['is_requester'].blank? && item['email'].blank?
end
end
end