diff --git a/app/controllers/base_configurations_controller.rb b/app/controllers/base_configurations_controller.rb new file mode 100644 index 0000000..15d1968 --- /dev/null +++ b/app/controllers/base_configurations_controller.rb @@ -0,0 +1,37 @@ +include OwnershipAuthentication +include MetricConfigurationsConcern + +class BaseConfigurationsController < ApplicationController + + def new + update_metric_configuration(MetricConfiguration.new) + metric_configuration.configuration_id = params[:mezuro_configuration_id].to_i + end + + def show + @reading_group = ReadingGroup.find(metric_configuration.reading_group_id) + @mezuro_ranges = metric_configuration.mezuro_ranges + metric_configuration.configuration_id = params[:mezuro_configuration_id].to_i + end + + def create + update_metric_configuration(MetricConfiguration.new(metric_configuration_params)) + metric_configuration.configuration_id = params[:mezuro_configuration_id].to_i + end + + protected + + def metric_configuration + raise "SubclassResponsibility"; + end + + def update_metric_configuration (new_metric_configuration) + raise "SubclassResponsibility"; + end + + # Never trust parameters from the scary internet, only allow the white list through. + # TODO: this should be refactored to the concern metric configuration + def metric_configuration_params + params[:metric_configuration] + end +end \ No newline at end of file diff --git a/app/controllers/compound_metric_configurations_controller.rb b/app/controllers/compound_metric_configurations_controller.rb index 128d51d..1ee3b18 100644 --- a/app/controllers/compound_metric_configurations_controller.rb +++ b/app/controllers/compound_metric_configurations_controller.rb @@ -1,33 +1,24 @@ include OwnershipAuthentication include MetricConfigurationsConcern -class CompoundMetricConfigurationsController < ApplicationController +class CompoundMetricConfigurationsController < BaseConfigurationsController before_action :authenticate_user!, except: [:show, :index] before_action :mezuro_configuration_owner?, only: [:new, :create] before_action :metric_configuration_owner?, only: [:edit, :update] before_action :set_metric_configuration, only: [:show, :edit, :update] before_action :set_metric_configurations, only: [:new, :edit] - - # GET mezuro_configurations/1/compound_metric_configurations/new - def new - @compound_metric_configuration = MetricConfiguration.new - @compound_metric_configuration.configuration_id = params[:mezuro_configuration_id].to_i - end def create - @compound_metric_configuration = MetricConfiguration.new(metric_configuration_params) - @compound_metric_configuration.configuration_id = params[:mezuro_configuration_id].to_i - @compound_metric_configuration.metric.compound = true + super + metric_configuration.metric.compound = true respond_to do |format| create_and_redir(format) end end def show - @compound_metric_configuration = @metric_configuration - @reading_group = ReadingGroup.find(@compound_metric_configuration.reading_group_id) - @mezuro_ranges = @compound_metric_configuration.mezuro_ranges - @compound_metric_configuration.configuration_id = params[:mezuro_configuration_id].to_i + update_metric_configuration(@metric_configuration) + super end def edit @@ -35,6 +26,16 @@ class CompoundMetricConfigurationsController < ApplicationController @compound_metric_configuration.configuration_id = params[:mezuro_configuration_id].to_i end + protected + + def metric_configuration + @compound_metric_configuration; + end + + def update_metric_configuration (new_metric_configuration) + @compound_metric_configuration = new_metric_configuration; + end + private # Never trust parameters from the scary internet, only allow the white list through. diff --git a/app/controllers/metric_configurations_controller.rb b/app/controllers/metric_configurations_controller.rb index f6b2521..677e3ef 100644 --- a/app/controllers/metric_configurations_controller.rb +++ b/app/controllers/metric_configurations_controller.rb @@ -1,7 +1,7 @@ include OwnershipAuthentication include MetricConfigurationsConcern -class MetricConfigurationsController < ApplicationController +class MetricConfigurationsController < BaseConfigurationsController before_action :authenticate_user!, except: [:show, :index] before_action :metric_configuration_owner?, only: [:edit, :update, :destroy] before_action :mezuro_configuration_owner?, only: [:new, :create, :choose_metric] @@ -15,15 +15,13 @@ class MetricConfigurationsController < ApplicationController end def new - @metric_configuration = MetricConfiguration.new - @metric_configuration.configuration_id = params[:mezuro_configuration_id].to_i - @metric_configuration.base_tool_name = params[:base_tool_name] - @metric_configuration.metric = KalibroGatekeeperClient::Entities::BaseTool.find_by_name(params[:base_tool_name]).metric params[:metric_name] + super + metric_configuration.base_tool_name = params[:base_tool_name] + metric_configuration.metric = KalibroGatekeeperClient::Entities::BaseTool.find_by_name(params[:base_tool_name]).metric params[:metric_name] end def create - @metric_configuration = MetricConfiguration.new(metric_configuration_params) - @metric_configuration.configuration_id = params[:mezuro_configuration_id].to_i + super @metric_configuration.metric = KalibroGatekeeperClient::Entities::BaseTool.find_by_name(params[:base_tool_name]).metric params[:metric_name] @metric_configuration.base_tool_name = params[:base_tool_name] respond_to do |format| @@ -31,12 +29,6 @@ class MetricConfigurationsController < ApplicationController end end - def show - @reading_group = ReadingGroup.find(@metric_configuration.reading_group_id) - @mezuro_ranges = @metric_configuration.mezuro_ranges - @metric_configuration.configuration_id = params[:mezuro_configuration_id].to_i - end - def edit #FIXME: set the configuration id just once! @mezuro_configuration_id = params[:mezuro_configuration_id] @@ -63,14 +55,18 @@ class MetricConfigurationsController < ApplicationController end end - private + protected - # Never trust parameters from the scary internet, only allow the white list through. - # TODO: this should be refactored to the concern metric configuration - def metric_configuration_params - params[:metric_configuration] + def metric_configuration + @metric_configuration; end + def update_metric_configuration (new_metric_configuration) + @metric_configuration = new_metric_configuration; + end + + private + # Duplicated code on create and update actions extracted here def failed_action(format, destiny_action) @mezuro_configuration_id = params[:mezuro_configuration_id] -- libgit2 0.21.2