class QuantitiesController < ApplicationController before_action :find_project_by_project_id, only: [:index, :create] before_action :find_quantity, only: [:destroy, :toggle, :up, :down, :left, :right] before_action :authorize def index @quantity = @project.quantities.new @quantities = @project.quantities end def create @quantity = @project.quantities.new(quantity_params) if @quantity.save flash[:notice] = 'Created new quantity' redirect_to project_quantities_url(@project) else @quantities = @project.quantities render :index end end def destroy if @quantity.destroy flash[:notice] = 'Deleted quantity' end @quantities = @project.quantities render :toggle end def toggle @quantity.toggle_primary! @quantities = @project.quantities end def up @quantity.move_left if @quantity.left_sibling.present? @quantities = @project.quantities render :toggle end def down @quantity.move_right if @quantity.right_sibling.present? @quantities = @project.quantities render :toggle end def left @quantity.move_to_right_of(@quantity.parent) if @quantity.parent.present? @quantities = @project.quantities render :toggle end def right @quantity.move_to_child_of(@quantity.left_sibling) if @quantity.left_sibling.present? @quantities = @project.quantities render :toggle end private def quantity_params params.require(:quantity).permit( :name, :description, :domain, :parent_id, :primary ) end end