Files

45 lines
1.4 KiB
Ruby
Raw Permalink Normal View History

2026-04-17 14:49:14 +03:00
# frozen_string_literal: true
class SubmitFormMetadataController < ApplicationController
skip_before_action :authenticate_user!
skip_authorization_check
def index
2026-05-06 21:02:15 +03:00
@submitter = Submitter.find_by!(slug: params[:submit_form_slug])
2026-04-17 14:49:14 +03:00
2026-07-09 11:40:55 +03:00
return head :not_found unless authorized_submitter?(@submitter)
2026-04-17 14:49:14 +03:00
2026-05-06 21:02:15 +03:00
submission = @submitter.submission
2026-04-17 14:49:14 +03:00
values = submission.submitters.reduce({}) { |acc, sub| acc.merge(sub.values) }
2026-05-06 21:02:15 +03:00
schema = Submissions.filtered_conditions_schema(submission, values:, include_submitter_uuid: @submitter.uuid)
2026-04-17 14:49:14 +03:00
documents = schema.filter_map do |item|
submission.schema_documents.find { |a| a.uuid == item['attachment_uuid'] }
end
ActiveRecord::Associations::Preloader.new(records: documents, associations: %i[blob record]).call
text_runs = documents.to_h do |document|
[
document.uuid,
DocumentMetadatas.find_or_create_for_document(document, account_id: document.record.account_id).text_runs
]
end
render json: { text_runs: }
end
2026-07-09 11:40:55 +03:00
private
def authorized_submitter?(submitter)
!submitter.declined_at? &&
!submitter.completed_at? &&
!submitter.submission.archived_at? &&
!submitter.submission.completed_at? &&
!submitter.submission.expired? &&
!submitter.submission.template&.archived_at? &&
!submitter.account.archived_at? &&
Submitters::AuthorizedForForm.call(submitter, current_user, request)
end
2026-04-17 14:49:14 +03:00
end