mirror of https://github.com/docusealco/docuseal
parent
a315674421
commit
e406620044
@ -0,0 +1,64 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class SubmissionEventsController < ApplicationController
|
||||
SUBMISSION_EVENT_ICONS = {
|
||||
'view_form' => 'eye',
|
||||
'start_form' => 'player_play',
|
||||
'complete_form' => 'check',
|
||||
'send_email' => 'mail_forward',
|
||||
'click_email' => 'hand_click',
|
||||
'api_complete_form' => 'check',
|
||||
'send_reminder_email' => 'mail_forward',
|
||||
'send_2fa_sms' => '2fa',
|
||||
'send_sms' => 'send',
|
||||
'phone_verified' => 'phone_check',
|
||||
'click_sms' => 'hand_click',
|
||||
'decline_form' => 'x',
|
||||
'start_verification' => 'player_play',
|
||||
'complete_verification' => 'check',
|
||||
'invite_party' => 'user_plus'
|
||||
}.freeze
|
||||
|
||||
load_and_authorize_resource :submission
|
||||
|
||||
# rubocop:disable Metrics
|
||||
def index
|
||||
submitters = @submission.submitters
|
||||
submitters_uuids = (@submission.template_submitters || @submission.template.submitters).pluck('uuid')
|
||||
|
||||
@events_data = @submission.submission_events.sort_by(&:event_timestamp).map do |event|
|
||||
submitter = submitters.find { |e| e.id == event.submitter_id }
|
||||
submitter_name =
|
||||
if event.event_type.include?('sms') || event.event_type.include?('phone')
|
||||
event.data['phone'] || submitter.phone
|
||||
else
|
||||
submitter.name || submitter.email || submitter.phone
|
||||
end
|
||||
|
||||
text =
|
||||
if event.event_type == 'complete_verification'
|
||||
helpers.t('submission_event_names.complete_verification_by_html', provider: event.data['method'],
|
||||
submitter_name:)
|
||||
elsif event.event_type == 'invite_party' &&
|
||||
(invited_submitter = submitters.find { |e| e.uuid == event.data['uuid'] }) &&
|
||||
(name = submission.template_submitters.find { |e| e['uuid'] == event.data['uuid'] }&.dig('name'))
|
||||
invited_submitter_name = [invited_submitter.name || invited_submitter.email || invited_submitter.phone,
|
||||
name].join(' ')
|
||||
helpers.t('submission_event_names.invite_party_by_html', invited_submitter_name:,
|
||||
submitter_name:)
|
||||
elsif event.event_type.include?('send_')
|
||||
helpers.t("submission_event_names.#{event.event_type}_to_html", submitter_name:)
|
||||
else
|
||||
helpers.t("submission_event_names.#{event.event_type}_by_html", submitter_name:)
|
||||
end
|
||||
|
||||
{
|
||||
timestamp: event.event_timestamp.in_time_zone(current_account.timezone),
|
||||
event_type: event.event_type,
|
||||
submitter_index: submitters_uuids.index(submitter.uuid),
|
||||
text:
|
||||
}
|
||||
end
|
||||
end
|
||||
# rubocop:enable Metrics
|
||||
end
|
||||
|
After Width: | Height: | Size: 426 B |
|
After Width: | Height: | Size: 397 B |
|
After Width: | Height: | Size: 711 B |
|
After Width: | Height: | Size: 484 B |
|
After Width: | Height: | Size: 382 B |
|
After Width: | Height: | Size: 261 B |
@ -0,0 +1,38 @@
|
||||
<% event_colors = %w[bg-red-200 bg-sky-200 bg-emerald-200 bg-yellow-300 bg-purple-200 bg-pink-200 bg-cyan-200 bg-orange-200 bg-lime-200 bg-indigo-200] %>
|
||||
<%= render 'shared/turbo_modal_large', title: t('event_log') do %>
|
||||
<div class="pl-8 pr-4 py-4">
|
||||
<ol class="relative border-s border-neutral-300 space-y-10">
|
||||
<li class="ml-6">
|
||||
<span class="absolute flex items-center justify-center w-6 h-6 rounded-full -start-3 ring-8 ring-base-100 text-base-content bg-gray-200">
|
||||
<%= svg_icon('file_text', class: 'w-3.5 h-3.5') %>
|
||||
</span>
|
||||
<p class="text-sm leading-none text-base-content/60 pt-1">
|
||||
<%= l(@submission.created_at.in_time_zone(current_account.timezone), format: :long, locale: current_account.locale) %>
|
||||
</p>
|
||||
<p class="text-base-content/80 mt-2">
|
||||
<% if @submission.source == 'invite' %>
|
||||
<%= t('submission_created_by_email_invite_html', email: @submission.created_by_user.email) %>
|
||||
<% elsif @submission.created_by_user %>
|
||||
<%= t('submission_created_by_email_via_source_html', email: @submission.created_by_user.email, source: t("submission_sources.#{@submission.source}")) %>
|
||||
<% else %>
|
||||
<%= t('submission_created_via_source_html', source: t("submission_sources.#{@submission.source}")) %>
|
||||
<% end %>
|
||||
</p>
|
||||
</li>
|
||||
<% @events_data.each do |row| %>
|
||||
<% bg_class = event_colors[row[:submitter_index] % event_colors.length] %>
|
||||
<li class="ml-6">
|
||||
<span class="absolute flex items-center justify-center w-6 h-6 rounded-full -start-3 ring-8 ring-base-100 text-base-content <%= bg_class %>">
|
||||
<%= svg_icon(SubmissionEventsController::SUBMISSION_EVENT_ICONS.fetch(row[:event_type], 'circle_dot'), class: 'w-3.5 h-3.5') %>
|
||||
</span>
|
||||
<p class="text-sm leading-none text-base-content/60 pt-1">
|
||||
<%= l(row[:timestamp], format: :long, locale: current_account.locale) %>
|
||||
</p>
|
||||
<p class="text-base-content/80 mt-2">
|
||||
<%= row[:text] %>
|
||||
</p>
|
||||
</li>
|
||||
<% end %>
|
||||
</ol>
|
||||
</div>
|
||||
<% end %>
|
||||
Loading…
Reference in new issue