Files
docuseal/app/controllers/submit_form_decline_controller.rb
T

47 lines
1.9 KiB
Ruby
Raw Normal View History

2024-08-21 09:22:59 +03:00
# frozen_string_literal: true
class SubmitFormDeclineController < ApplicationController
skip_before_action :authenticate_user!
skip_authorization_check
2026-03-27 12:56:52 +02:00
before_action :load_submitter
2024-08-21 09:22:59 +03:00
2026-03-27 12:56:52 +02:00
def create
2026-06-21 12:35:43 +03:00
return redirect_to submit_form_path(@submitter.slug) if declining_disabled? ||
@submitter.declined_at? ||
2026-03-27 12:56:52 +02:00
@submitter.completed_at? ||
@submitter.submission.archived_at? ||
@submitter.submission.expired? ||
@submitter.submission.template&.archived_at? ||
!Submitters::AuthorizedForForm.call(@submitter,
current_user,
request)
2024-08-21 09:22:59 +03:00
ApplicationRecord.transaction do
2026-03-27 12:56:52 +02:00
@submitter.update!(declined_at: Time.current)
2024-08-21 09:22:59 +03:00
2026-03-27 12:56:52 +02:00
SubmissionEvents.create_with_tracking_data(@submitter, 'decline_form', request, { reason: params[:reason] })
2024-08-21 09:22:59 +03:00
end
2026-03-27 12:56:52 +02:00
user = @submitter.submission.created_by_user || @submitter.template.author
2024-08-21 09:22:59 +03:00
2024-10-29 16:44:07 +02:00
if user.user_configs.find_by(key: UserConfig::RECEIVE_DECLINED_EMAIL)&.value != false
2026-03-27 12:56:52 +02:00
SubmitterMailer.declined_email(@submitter, user).deliver_later!
2024-10-29 16:44:07 +02:00
end
2026-03-27 12:56:52 +02:00
WebhookUrls.enqueue_events(@submitter, 'form.declined')
redirect_to submit_form_path(@submitter.slug)
end
private
2024-08-21 09:22:59 +03:00
2026-06-21 12:35:43 +03:00
def declining_disabled?
@submitter.account.account_configs.find_by(key: AccountConfig::ALLOW_TO_DECLINE_KEY)&.value == false
end
2026-03-27 12:56:52 +02:00
def load_submitter
@submitter = Submitter.find_by!(slug: params[:submit_form_slug])
2024-08-21 09:22:59 +03:00
end
end