mirror of https://github.com/docusealco/docuseal
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.5 KiB
45 lines
1.5 KiB
# frozen_string_literal: true
|
|
|
|
class SubmittersReopenController < ApplicationController
|
|
before_action :load_and_authorize_submitter
|
|
|
|
def update
|
|
ActiveRecord::Base.transaction do
|
|
@submitter.update!(completed_at: nil, opened_at: nil)
|
|
|
|
@submitter.submission_events.where(event_type: 'complete_form').destroy_all
|
|
|
|
@submitter.documents.each(&:purge)
|
|
|
|
# Clear stale LockEvents so EnsureResultGenerated regenerates on next completion
|
|
LockEvent.where(key: "result_attachments:#{@submitter.id}").delete_all
|
|
LockEvent.where(key: "combined_document:#{@submitter.id}").delete_all
|
|
LockEvent.where(key: "audit_trail:#{@submitter.submission_id}").delete_all
|
|
|
|
# Purge stale combined document and audit trail
|
|
@submitter.submission.combined_document.purge if @submitter.submission.combined_document.attached?
|
|
@submitter.submission.audit_trail.purge if @submitter.submission.audit_trail.attached?
|
|
|
|
SubmissionEvent.create!(
|
|
submitter: @submitter,
|
|
event_type: :admin_reopen_form,
|
|
data: { user_id: current_user.id, user_email: current_user.email }
|
|
)
|
|
end
|
|
|
|
if @submitter.email.present?
|
|
SendSubmitterInvitationEmailJob.perform_async('submitter_id' => @submitter.id)
|
|
end
|
|
|
|
redirect_to submission_path(@submitter.submission),
|
|
notice: I18n.t('submission_has_been_reopened')
|
|
end
|
|
|
|
private
|
|
|
|
def load_and_authorize_submitter
|
|
@submitter = Submitter.find(params[:id])
|
|
authorize! :update, @submitter.submission
|
|
end
|
|
end
|