|
|
|
@ -2,7 +2,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
module Api
|
|
|
|
module Api
|
|
|
|
class SubmissionsController < ApiBaseController
|
|
|
|
class SubmissionsController < ApiBaseController
|
|
|
|
SUBMISSION_COLUMNS = %i[id name slug source submitters_order expire_at created_at updated_at
|
|
|
|
SUBMISSION_COLUMNS = %i[id name slug source submitters_order expire_at completed_at created_at updated_at
|
|
|
|
archived_at variables template_id template_submitters created_by_user_id].freeze
|
|
|
|
archived_at variables template_id template_submitters created_by_user_id].freeze
|
|
|
|
TEMPLATE_COLUMNS = %i[id name external_id created_at updated_at folder_id submitters].freeze
|
|
|
|
TEMPLATE_COLUMNS = %i[id name external_id created_at updated_at folder_id submitters].freeze
|
|
|
|
|
|
|
|
|
|
|
|
@ -13,6 +13,8 @@ module Api
|
|
|
|
authorize!(:create, Submission)
|
|
|
|
authorize!(:create, Submission)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
before_action :maybe_return_template_error, only: :create
|
|
|
|
|
|
|
|
|
|
|
|
def index
|
|
|
|
def index
|
|
|
|
submissions = Submissions.search(current_user, @submissions, params[:q])
|
|
|
|
submissions = Submissions.search(current_user, @submissions, params[:q])
|
|
|
|
submissions = filter_submissions(submissions, params)
|
|
|
|
submissions = filter_submissions(submissions, params)
|
|
|
|
@ -58,7 +60,7 @@ module Api
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
if @submission.audit_trail_attachment.blank? && submitters.all?(&:completed_at?)
|
|
|
|
if @submission.audit_trail_attachment.blank? && @submission.completed_at?
|
|
|
|
@submission.audit_trail_attachment = Submissions::EnsureAuditGenerated.call(@submission)
|
|
|
|
@submission.audit_trail_attachment = Submissions::EnsureAuditGenerated.call(@submission)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
@ -68,20 +70,6 @@ module Api
|
|
|
|
def create
|
|
|
|
def create
|
|
|
|
Params::SubmissionCreateValidator.call(params)
|
|
|
|
Params::SubmissionCreateValidator.call(params)
|
|
|
|
|
|
|
|
|
|
|
|
return render json: { error: 'Template not found' }, status: :unprocessable_content if @template.nil?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if @template.archived_at?
|
|
|
|
|
|
|
|
Rollbar.warning("Archived template submission: #{@template.id}") if defined?(Rollbar)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return render json: { error: 'Template has been archived' }, status: :unprocessable_content
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if @template.fields.blank?
|
|
|
|
|
|
|
|
Rollbar.warning("Template does not contain fields: #{@template.id}") if defined?(Rollbar)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return render json: { error: 'Template does not contain fields' }, status: :unprocessable_content
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
params[:send_email] = true unless params.key?(:send_email)
|
|
|
|
params[:send_email] = true unless params.key?(:send_email)
|
|
|
|
params[:send_sms] = false unless params.key?(:send_sms)
|
|
|
|
params[:send_sms] = false unless params.key?(:send_sms)
|
|
|
|
|
|
|
|
|
|
|
|
@ -129,6 +117,22 @@ module Api
|
|
|
|
|
|
|
|
|
|
|
|
private
|
|
|
|
private
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def maybe_return_template_error
|
|
|
|
|
|
|
|
return render json: { error: 'Template not found' }, status: :unprocessable_content if @template.nil?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if @template.archived_at?
|
|
|
|
|
|
|
|
Rollbar.warning("Archived template submission: #{@template.id}") if defined?(Rollbar)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return render json: { error: 'Template has been archived' }, status: :unprocessable_content
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return if @template.fields.present?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Rollbar.warning("Template does not contain fields: #{@template.id}") if defined?(Rollbar)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
render json: { error: 'Template does not contain fields' }, status: :unprocessable_content
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
def filter_submissions(submissions, params)
|
|
|
|
def filter_submissions(submissions, params)
|
|
|
|
submissions = submissions.where(template_id: params[:template_id]) if params[:template_id].present?
|
|
|
|
submissions = submissions.where(template_id: params[:template_id]) if params[:template_id].present?
|
|
|
|
submissions = submissions.where(slug: params[:slug]) if params[:slug].present?
|
|
|
|
submissions = submissions.where(slug: params[:slug]) if params[:slug].present?
|
|
|
|
|