unepwcmc/SAPI

View on GitHub
app/controllers/admin/nomenclature_changes/build_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
class Admin::NomenclatureChanges::BuildController < Admin::AdminController
  include Wicked::Wizard

  before_action :set_nomenclature_change, :only => [:show, :update, :destroy]
  before_action :unset_back, only: [:update]
  before_action :authorise_finish, only: [:update]

  def finish_wizard_path
    admin_nomenclature_changes_path
  end

  def create
    @nomenclature_change = klass.new()
    @nomenclature_change.status = NomenclatureChange::NEW
    if @nomenclature_change.save
      redirect_to wizard_path(steps.first, :nomenclature_change_id => @nomenclature_change.id)
    else
      redirect_to admin_nomenclature_changes_url, :alert => "Could not start a new nomenclature change"
    end
  end

  private

  def set_nomenclature_change
    @nomenclature_change = NomenclatureChange.find(params[:nomenclature_change_id])
  end

  def set_events
    @events = CitesCop.order('effective_at DESC')
  end

  def set_taxonomy
    @taxonomy = Taxonomy.find_by_name(Taxonomy::CITES_EU)
  end

  def set_ranks
    @ranks = Rank.order(:taxonomic_position)
  end

  def skip_or_previous_step
    if params[:back] || session[:back]
      jump_to(previous_step)
      session[:back] = true
    else
      skip_step
    end
  end

  def authorise_finish
    if step == steps.last && (current_user.is_secretariat? || !current_user.is_active?)
      raise CanCan::AccessDenied
    end
  end

  private

  def klass
    NomenclatureChange
  end

  def unset_back
    session[:back] = false
  end

end