Files
docuseal/app/controllers/api/templates_clone_controller.rb
T

39 lines
1.3 KiB
Ruby
Raw Normal View History

2023-12-06 11:29:55 +02:00
# frozen_string_literal: true
module Api
class TemplatesCloneController < ApiBaseController
load_and_authorize_resource :template
def create
2025-05-11 16:11:02 +03:00
authorize!(:create, @template)
2023-12-06 11:29:55 +02:00
2024-07-16 01:40:38 +03:00
ActiveRecord::Associations::Preloader.new(
records: [@template],
associations: [schema_documents: :preview_images_attachments]
).call
2024-02-01 00:34:35 +02:00
cloned_template = Templates::Clone.call(
@template,
author: current_user,
name: params[:name],
external_id: params[:external_id].presence || params[:application_key],
folder_name: params[:folder_name]
)
2023-12-06 11:29:55 +02:00
2023-12-18 13:38:01 +02:00
cloned_template.source = :api
cloned_template.save!
2023-12-06 11:29:55 +02:00
2024-12-10 17:41:27 +02:00
schema_documents = Templates::CloneAttachments.call(template: cloned_template,
original_template: @template,
documents: params[:documents])
2023-12-06 11:29:55 +02:00
2024-11-01 15:35:02 +02:00
WebhookUrls.for_account_id(cloned_template.account_id, 'template.created').each do |webhook_url|
SendTemplateCreatedWebhookRequestJob.perform_async('template_id' => cloned_template.id,
'webhook_url_id' => webhook_url.id)
end
2024-05-12 11:37:33 +03:00
2024-07-16 01:40:38 +03:00
render json: Templates::SerializeForApi.call(cloned_template, schema_documents)
2023-12-06 11:29:55 +02:00
end
end
end