From ac68cebe4fb65692eddd42a6074327ea0ef13900 Mon Sep 17 00:00:00 2001 From: Ryan Wold <64987852+ryanwoldatwork@users.noreply.github.com> Date: Thu, 16 Jan 2025 08:42:34 -0800 Subject: [PATCH] Export responses by start & end date * associate for with a service stage --- app/controllers/admin/forms_controller.rb | 8 + .../admin/service_stages_controller.rb | 9 +- .../forms/_form_manager_options.html.erb | 41 ++++ app/views/admin/forms/show.html.erb | 9 +- .../forms/update_form_manager_options.js.erb | 2 +- app/views/admin/submissions/index.html.erb | 201 ++++++++++-------- .../question_types/_radio_buttons.html.erb | 2 +- ...250115175322_add_service_stage_to_forms.rb | 5 + db/schema.rb | 3 +- lib/fiscal_year.rb | 17 ++ spec/features/admin/forms_spec.rb | 26 ++- spec/support/touchpoints_spec_helpers.rb | 8 + 12 files changed, 212 insertions(+), 119 deletions(-) create mode 100644 db/migrate/20250115175322_add_service_stage_to_forms.rb diff --git a/app/controllers/admin/forms_controller.rb b/app/controllers/admin/forms_controller.rb index 174de93db..446cd0a2a 100644 --- a/app/controllers/admin/forms_controller.rb +++ b/app/controllers/admin/forms_controller.rb @@ -150,6 +150,7 @@ def update_admin_options def update_form_manager_options ensure_form_manager(form: @form) @form.update(form_admin_options_params) + set_service_stage_options flash.now[:notice] = 'Form Manager forms options updated successfully' end @@ -158,6 +159,7 @@ def show format.html do ensure_response_viewer(form: @form) unless @form.template? @questions = @form.ordered_questions + set_service_stage_options @events = @events = Event.where(object_type: 'Form', object_uuid: @form.uuid).order("created_at DESC") end @@ -517,6 +519,7 @@ def form_params :success_text, :success_text_heading, :service_id, + :service_stage_id, # PRA Info :omb_approval_number, :expiration_date, @@ -588,10 +591,15 @@ def form_admin_options_params :omb_approval_number, :expiration_date, :service_id, + :service_stage_id, :enforce_new_submission_validations, ) end + def set_service_stage_options + @service_stage_options = @form.service.present? ? @form.service.service_stages.order(:position, :name).map { |s| [s.name, s.id] } : [] + end + # Add rules for AASM state transitions here def transition_state Event.log_event(Event.names[:form_published], 'Form', @form.uuid, "Form #{@form.name} published at #{DateTime.now}", current_user.id) if (params['form']['aasm_state'] == 'published') && !@form.published? diff --git a/app/controllers/admin/service_stages_controller.rb b/app/controllers/admin/service_stages_controller.rb index 934aef207..a840acc32 100644 --- a/app/controllers/admin/service_stages_controller.rb +++ b/app/controllers/admin/service_stages_controller.rb @@ -13,7 +13,14 @@ def index else ensure_service_manager_permissions @service_stages = ServiceStage.order(:position) - render :unscoped_index + end + respond_to do |format| + format.html { + render :index + } + format.json { + render json: @service_stages + } end end diff --git a/app/views/admin/forms/_form_manager_options.html.erb b/app/views/admin/forms/_form_manager_options.html.erb index bb2f5e645..db6b91ac0 100644 --- a/app/views/admin/forms/_form_manager_options.html.erb +++ b/app/views/admin/forms/_form_manager_options.html.erb @@ -49,6 +49,16 @@ <%= f.select :service_id, form.organization.services.includes(:organization).order("organizations.name", :name).map { |h| ["#{h.organization.name} - #{h.name}", h.id] }, { include_blank: true }, class: "usa-select" %> +