add submission created webhook event

This commit is contained in:
Pete Matsyburka
2024-05-17 13:28:10 +03:00
parent b4b17d847e
commit f0d5fc4e2d
7 changed files with 121 additions and 55 deletions
+6 -40
View File
@@ -22,7 +22,7 @@ module Api
audit_trail_attachment: :blob))
render json: {
data: submissions.as_json(serialize_params),
data: submissions.as_json(Submissions::SerializeForApi::SERIALIZE_PARAMS),
pagination: {
count: submissions.size,
next: submissions.last&.id,
@@ -44,29 +44,7 @@ module Api
@submission.audit_trail_attachment = Submissions::GenerateAuditTrail.call(@submission)
end
serialized_submitters = submitters.map { |submitter| Submitters::SerializeForApi.call(submitter) }
json = @submission.as_json(
serialize_params.deep_merge(
include: { submission_events: { only: %i[id submitter_id event_type event_timestamp] } }
)
)
if submitters.all?(&:completed_at?)
last_submitter = submitters.max_by(&:completed_at)
json[:documents] = serialized_submitters.find { |e| e['id'] == last_submitter.id }['documents']
json[:status] = 'completed'
json[:completed_at] = last_submitter.completed_at
else
json[:documents] = []
json[:status] = 'pending'
json[:completed_at] = nil
end
json[:submitters] = serialized_submitters
render json:
render json: Submissions::SerializeForApi.call(@submission, submitters)
end
def create
@@ -85,6 +63,10 @@ module Api
submissions = create_submissions(@template, params)
submissions.each do |submission|
SendSubmissionCreatedWebhookRequestJob.perform_later(submission)
end
Submissions.send_signature_requests(submissions)
submissions.each do |submission|
@@ -153,22 +135,6 @@ module Api
end
end
def serialize_params
{
only: %i[id source submitters_order created_at updated_at archived_at],
methods: %i[audit_log_url],
include: {
submitters: { only: %i[id slug uuid name email phone
completed_at opened_at sent_at
created_at updated_at external_id metadata],
methods: %i[status application_key] },
template: { only: %i[id name external_id created_at updated_at],
methods: %i[folder_name] },
created_by_user: { only: %i[id email first_name last_name] }
}
}
end
def submissions_params
permitted_attrs = [
:send_email, :send_sms, :bcc_completed, :completed_redirect_url, :reply_to, :go_to_last,