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.
33 lines
1.0 KiB
33 lines
1.0 KiB
# frozen_string_literal: true
|
|
|
|
class TemplateDocumentsModifyController < ApplicationController
|
|
load_and_authorize_resource :template
|
|
|
|
def create
|
|
authorize!(:update, @template)
|
|
|
|
documents_layout =
|
|
params.require(:documents).map do |item|
|
|
item.permit(:attachment_uuid,
|
|
pages: [:attachment_uuid, :page, :rotate,
|
|
{ redact: [%i[x y w h]], replaced_page: %i[attachment_uuid page] }]).to_h
|
|
end
|
|
|
|
Templates::ModifyDocuments.call(@template, documents_layout)
|
|
|
|
render json: {
|
|
schema: @template.schema,
|
|
fields: @template.fields,
|
|
submitters: @template.submitters,
|
|
documents: @template.schema_documents.reload.preload(:blob, preview_images_attachments: :blob).as_json(
|
|
methods: %i[metadata signed_key],
|
|
include: {
|
|
preview_images: { methods: %i[url metadata filename] }
|
|
}
|
|
)
|
|
}
|
|
rescue Templates::ModifyDocuments::InvalidLayout
|
|
render json: { error: I18n.t(:unable_to_save) }, status: :unprocessable_content
|
|
end
|
|
end
|