mezuro_plugin_range_controller.rb 1.75 KB
class MezuroPluginRangeController < MezuroPluginMyprofileController

  append_view_path File.join(File.dirname(__FILE__) + '/../../views')

  def new
    params_to_range_form
    params_to_redirect
  end

  def edit
    params_to_range_form
    ranges = Kalibro::Range.ranges_of params[:metric_configuration_id].to_i
    @range = (ranges.select { |range| range.id == params[:range_id].to_i }).first
  end

  def create
    params_to_redirect
    save_range
  end

  def update
    save_range
  end

  def remove
    configuration_content = profile.articles.find(params[:id])
    Kalibro::Range.new({:id => params[:range_id].to_i}).destroy
    redirect_to(metric_configuration_url(configuration_content))
  end

  private

  def metric_configuration_url configuration_content
    url = configuration_content.view_url
    url[:controller] = "mezuro_plugin_metric_configuration"
    url[:id] = configuration_content.id
    url[:metric_configuration_id] = params[:metric_configuration_id].to_i
    url[:action] = (params[:compound] ? "edit_compound" : "edit_native")
    url
  end

  def reading_labels_and_ids
    Kalibro::Reading.readings_of(params[:reading_group_id].to_i).map { |reading| [reading.label, reading.id] }
  end

  def save_range
    metric_configuration_id = params[:metric_configuration_id].to_i
    @range = Kalibro::Range.new params[:range]
    @range.save metric_configuration_id
    if !@range.errors.empty?
      @error = @range.errors[0].message
    end
  end

  def params_to_range_form
    @content_id = params[:id].to_i
    @metric_configuration_id = params[:metric_configuration_id].to_i
    @reading_labels_and_ids = reading_labels_and_ids
  end

  def params_to_redirect
    @reading_group_id = params[:reading_group_id].to_i
    @compound = params[:compound]
  end

end