# frozen_string_literal: true
module Settings
class PlansController < SettingsController
before_filter :get_settings
after_action :verify_authorized
def show
authorize [:settings, @plan]
respond_to do |format|
format.html
format.partial
format.json { render json: settings_json }
end
end
def update
authorize @plan
export_params = params[:export].try(:deep_symbolize_keys)
settings = @plan.super_settings(:export).tap do |s|
if params[:commit] == "Reset"
s.formatting = nil
s.fields = nil
s.title = nil
else
s.formatting = export_params[:formatting]
s.fields = export_params[:fields]
s.title = export_params[:title]
end
end
if settings.save
flash[:notice] = _("Export settings updated successfully.")
else
# rubocop:disable Metrics/LineLength
flash[:alert] = _("An error has occurred while saving/resetting your export settings.")
# rubocop:enable Metrics/LineLength
end
respond_to do |format|
@phase_options = @plan.phases.order(:number).pluck(:title, :id)
format.html { redirect_to(download_plan_path(@plan.id)) }
# format.json { render json: settings_json }
end
end
private
def get_settings
@plan = Plan.find(params[:id])
@export_settings = plan.settings(:export)
end
def settings_json
@settings_json ||= { export: @export_settings }.to_json
end
def plan
@plan ||= Plan.find(params[:id])
end
end
end