|
|
|
|
@ -2,6 +2,10 @@
|
|
|
|
|
|
|
|
|
|
module Api
|
|
|
|
|
class SubmissionsController < ApiBaseController
|
|
|
|
|
SUBMISSION_COLUMNS = %i[id name slug source submitters_order expire_at created_at updated_at
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
load_and_authorize_resource :template, only: :create
|
|
|
|
|
load_and_authorize_resource :submission, only: %i[show index destroy]
|
|
|
|
|
|
|
|
|
|
@ -13,10 +17,22 @@ module Api
|
|
|
|
|
submissions = Submissions.search(current_user, @submissions, params[:q])
|
|
|
|
|
submissions = filter_submissions(submissions, params)
|
|
|
|
|
|
|
|
|
|
submissions = paginate(submissions.preload(:created_by_user, :submitters,
|
|
|
|
|
template: { folder: :parent_folder },
|
|
|
|
|
combined_document_attachment: :blob,
|
|
|
|
|
audit_trail_attachment: :blob))
|
|
|
|
|
with_fields = params[:include].to_s.include?('fields')
|
|
|
|
|
|
|
|
|
|
submissions = paginate(
|
|
|
|
|
submissions.select(with_fields ? SUBMISSION_COLUMNS + %i[template_fields] : SUBMISSION_COLUMNS)
|
|
|
|
|
.preload(:created_by_user, :submitters, combined_document_attachment: :blob,
|
|
|
|
|
audit_trail_attachment: :blob)
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
ActiveRecord::Associations::Preloader.new(
|
|
|
|
|
records: submissions,
|
|
|
|
|
associations: :template,
|
|
|
|
|
scope: Template.select(with_fields ? TEMPLATE_COLUMNS + %i[fields] : TEMPLATE_COLUMNS)
|
|
|
|
|
).call
|
|
|
|
|
|
|
|
|
|
ActiveRecord::Associations::Preloader.new(records: submissions.filter_map(&:template),
|
|
|
|
|
associations: { folder: :parent_folder }).call
|
|
|
|
|
|
|
|
|
|
expires_at = Accounts.link_expires_at(current_account)
|
|
|
|
|
|
|
|
|
|
|