diff --git a/app/controllers/api/submissions_controller.rb b/app/controllers/api/submissions_controller.rb index 89d361ec..17d961dd 100644 --- a/app/controllers/api/submissions_controller.rb +++ b/app/controllers/api/submissions_controller.rb @@ -11,17 +11,7 @@ module Api def index submissions = Submissions.search(@submissions, params[:q]) - submissions = submissions.where(template_id: params[:template_id]) if params[:template_id].present? - - if params[:template_folder].present? - submissions = submissions.joins(template: :folder).where(folder: { name: params[:template_folder] }) - end - - if params.key?(:archived) - submissions = params[:archived].in?(['true', true]) ? submissions.archived : submissions.active - end - - submissions = Submissions::Filter.call(submissions, current_user, params) + submissions = filter_submissions(submissions, params) submissions = paginate(submissions.preload(:created_by_user, :submitters, template: :folder, @@ -115,6 +105,21 @@ module Api private + def filter_submissions(submissions, params) + submissions = submissions.where(template_id: params[:template_id]) if params[:template_id].present? + submissions = submissions.where(slug: params[:slug]) if params[:slug].present? + + if params[:template_folder].present? + submissions = submissions.joins(template: :folder).where(folder: { name: params[:template_folder] }) + end + + if params.key?(:archived) + submissions = params[:archived].in?(['true', true]) ? submissions.archived : submissions.active + end + + Submissions::Filter.call(submissions, current_user, params) + end + def build_create_json(submissions) json = submissions.flat_map do |submission| submission.submitters.map do |s| diff --git a/app/controllers/api/submitters_controller.rb b/app/controllers/api/submitters_controller.rb index 1fd06d74..c2e6a07f 100644 --- a/app/controllers/api/submitters_controller.rb +++ b/app/controllers/api/submitters_controller.rb @@ -7,15 +7,7 @@ module Api def index submitters = Submitters.search(@submitters, params[:q]) - submitters = submitters.where(external_id: params[:application_key]) if params[:application_key].present? - submitters = submitters.where(external_id: params[:external_id]) if params[:external_id].present? - submitters = submitters.where(submission_id: params[:submission_id]) if params[:submission_id].present? - - if params[:template_id].present? - submitters = submitters.joins(:submission).where(submission: { template_id: params[:template_id] }) - end - - submitters = maybe_filder_by_completed_at(submitters, params) + submitters = filter_submitters(submitters, params) submitters = paginate( submitters.preload(:template, :submission, :submission_events, @@ -163,6 +155,19 @@ module Api submitter end + def filter_submitters(submitters, params) + submitters = submitters.where(external_id: params[:application_key]) if params[:application_key].present? + submitters = submitters.where(external_id: params[:external_id]) if params[:external_id].present? + submitters = submitters.where(slug: params[:slug]) if params[:slug].present? + submitters = submitters.where(submission_id: params[:submission_id]) if params[:submission_id].present? + + if params[:template_id].present? + submitters = submitters.joins(:submission).where(submission: { template_id: params[:template_id] }) + end + + maybe_filder_by_completed_at(submitters, params) + end + def assign_external_id(submitter, attrs) submitter.external_id = attrs[:application_key] if attrs.key?(:application_key) submitter.external_id = attrs[:external_id] if attrs.key?(:external_id) diff --git a/app/controllers/api/templates_controller.rb b/app/controllers/api/templates_controller.rb index a695e728..5e8da098 100644 --- a/app/controllers/api/templates_controller.rb +++ b/app/controllers/api/templates_controller.rb @@ -90,6 +90,7 @@ module Api templates = params[:archived].in?(['true', true]) ? templates.archived : templates.active templates = templates.where(external_id: params[:application_key]) if params[:application_key].present? templates = templates.where(external_id: params[:external_id]) if params[:external_id].present? + templates = templates.where(slug: params[:slug]) if params[:slug].present? templates = templates.joins(:folder).where(folder: { name: params[:folder] }) if params[:folder].present? templates