vegantech/sims

View on GitHub
app/controllers/intervention_builder/interventions_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
class InterventionBuilder::InterventionsController < InterventionBuilder::BaseController
  skip_before_filter :verify_authenticity_token, :only => :disable
  before_filter :get_intervention_cluster
  # GET /intervention_definitions
  def index
    @intervention_definitions = @intervention_cluster.intervention_definitions.filter(params)

    respond_to do |format|
      format.html # index.rhtml
    end
  end

  # GET /intervention_definitions/1
  def show
    respond_to do |format|
      format.html # show.rhtml
    end
  end

  # GET /intervention_definitions/new
  def new
    @intervention_definition = @intervention_cluster.intervention_definitions.build
    @tiers = current_district.tiers
  end

  # GET /intervention_definitions/1;edit
  def edit
    @intervention_clusters = current_district.intervention_clusters
    @tiers = current_district.tiers
  end

  # POST /intervention_definitions
  def create
    @intervention_definition = @intervention_cluster.intervention_definitions.build(params[:intervention_definition])

    respond_to do |format|
      if @intervention_definition.save
        flash[:notice] = 'Intervention was successfully created.'
        format.html { redirect_to intervention_builder_interventions_url(@goal_definition,@objective_definition,@intervention_cluster) }
      else
        format.html {@tiers=current_district.tiers; render :action => "new" }
      end
    end
  end

  # PUT /intervention_definitions/1
  def update
    @intervention_definition.attributes=params[:intervention_definition]
    respond_to do |format|
      if @intervention_definition.save
        flash[:notice] = 'Intervention was successfully updated.'
        setup_parent_instance_variables
        format.html { redirect_to intervention_builder_interventions_url(@goal_definition,@objective_definition,@intervention_cluster) }
      else

        format.html { edit;render :action => "edit" }
      end
    end
  end

  # DELETE /intervention_definitions/1
  def destroy
    if @intervention_definition.interventions.any?
      flash[:notice]= "Interventions exist for this intervention definition"
    else
      @intervention_definition.destroy
    end

    respond_to do |format|
      format.html { redirect_to intervention_builder_interventions_url(@goal_definition,@objective_definition,@intervention_cluster) }
    end
  end

  def disable
    if params[:id]
      @intervention_definitions = Array(@intervention_definition)
    else
      @intervention_definitions = []
    end
    if params[:enable]
      a='enabled'
      @intervention_definitions.each{|i| i.update_attribute(:disabled, false)}
    else
      a='disabled'
      @intervention_definitions.each(&:disable!)
    end

    flash[:notice] = "#{view_context.pluralize(@intervention_definitions.size, 'Intervention Definition')} #{a}."
    respond_to do |format|
      format.html { redirect_to intervention_builder_interventions_url(@goal_definition,@objective_definition,@intervention_cluster) }
    end
  end


  def move
    @intervention_definition = @intervention_cluster.intervention_definitions.find(params[:id])
    @intervention_definition.move_higher if params[:direction].to_s == "up"
    @intervention_definition.move_lower if params[:direction].to_s == "down"
    respond_to do |format|
      format.html {redirect_to :action => :index}
      format.js {@intervention_definitions=@intervention_cluster.intervention_definitions}
    end
  end

  def sort
    params[:intervention_definition_list].split(",").each_with_index do |id, index|
      @intervention_cluster.intervention_definitions.update_all(['position=?', index+1], ['id=?', id])
    end
  end

  private

  def get_intervention_cluster
    @goal_definition = current_district.goal_definitions.find(params[:goal_id])
    @objective_definition=@goal_definition.objective_definitions.find(params[:objective_id])
    @intervention_cluster = @objective_definition.intervention_clusters.find(params[:category_id])
    @intervention_definition=@intervention_cluster.intervention_definitions.find(params[:id]) if params[:id]
  end

  def move_path(item, direction)
    unless action_name=="show"
      move_intervention_builder_intervention_path(:id=>item,:direction=>direction)
    else
      url_for(:controller=>"recommended_monitors",:action=>:move,:direction=>direction,:id=>item)
    end
  end

  def setup_parent_instance_variables
        @intervention_cluster,@objective_definition,@goal_definition = @intervention_definition.intervention_cluster,@intervention_definition.intervention_cluster.objective_definition,@intervention_definition.intervention_cluster.objective_definition.goal_definition if @intervention_cluster != @intervention_definition.intervention_cluster
        @tiers=current_district.tiers
        true #meeded for spellcheck call
  end
end