add form events api
This commit is contained in:
@@ -39,12 +39,17 @@ module Api
|
||||
|
||||
private
|
||||
|
||||
def paginate(relation)
|
||||
result = relation.order(id: :desc)
|
||||
def paginate(relation, field: :id)
|
||||
result = relation.order(field => :desc)
|
||||
.limit([params.fetch(:limit, DEFAULT_LIMIT).to_i, MAX_LIMIT].min)
|
||||
|
||||
result = result.where(id: ...params[:after].to_i) if params[:after].present?
|
||||
result = result.where(id: (params[:before].to_i + 1)...) if params[:before].present?
|
||||
if field == :id
|
||||
result = result.where(id: ...params[:after].to_i) if params[:after].present?
|
||||
result = result.where(id: (params[:before].to_i + 1)...) if params[:before].present?
|
||||
else
|
||||
result = result.where(field => ...params[:after]) if params[:after].present?
|
||||
result = result.where(field => (params[:before] + 1)...) if params[:before].present?
|
||||
end
|
||||
|
||||
result
|
||||
end
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Api
|
||||
class FormEventsController < ApiBaseController
|
||||
load_and_authorize_resource :submitter, parent: false
|
||||
|
||||
def index
|
||||
submitters = @submitters.where.not(completed_at: nil)
|
||||
|
||||
params[:after] = Time.zone.at(params[:after].to_i) if params[:after].present?
|
||||
params[:before] = Time.zone.at(params[:before].to_i) if params[:before].present?
|
||||
|
||||
submitters = paginate(
|
||||
submitters.preload(template: :folder, submission: [:submitters, { audit_trail_attachment: :blob }],
|
||||
documents_attachments: :blob, attachments_attachments: :blob),
|
||||
field: :completed_at
|
||||
)
|
||||
|
||||
render json: {
|
||||
data: submitters.map do |s|
|
||||
{
|
||||
event_type: 'form.completed',
|
||||
timestamp: s.completed_at,
|
||||
data: Submitters::SerializeForWebhook.call(s)
|
||||
}
|
||||
end,
|
||||
pagination: {
|
||||
count: submitters.size,
|
||||
next: submitters.last&.completed_at&.to_i,
|
||||
prev: submitters.first&.completed_at&.to_i
|
||||
}
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -45,6 +45,9 @@ Rails.application.routes.draw do
|
||||
resources :tools, only: %i[] do
|
||||
post :merge, on: :collection
|
||||
end
|
||||
scope 'events' do
|
||||
resources :form_events, only: %i[index], path: 'form/:type'
|
||||
end
|
||||
end
|
||||
|
||||
resources :verify_pdf_signature, only: %i[create]
|
||||
|
||||
Reference in New Issue
Block a user