foodsoft/app/controllers/stockit_selections_controller.rb

56 lines
2.1 KiB
Ruby

# encoding: utf-8
class StockitSelectionsController < ApplicationController
def index
@stock_article_selections = StockArticleSelection.all
end
def show
@stock_article_selection = StockArticleSelection.find(params[:id])
end
def create
@stock_article_selection = StockArticleSelection.new(params[:stock_article_selection])
@stock_article_selection.created_by = current_user
if @stock_article_selection.save
redirect_to(@stock_article_selection, :notice => 'Löschvorschlag für gewählte Artikel wurde erstellt.')
else
@stock_articles = StockArticle.includes(:supplier, :article_category).
order('suppliers.name, article_categories.name, articles.name')
render 'stockit/index'
end
end
def destroy # destroy (open or finished) selection without deleting articles
stock_article_selection = StockArticleSelection.find(params[:id])
stock_article_selection.destroy
redirect_to stock_article_selections_path, :notice => 'Löschvorschlag wurde verworfen.'
end
def articles # destroy articles, finish selection
stock_article_selection = StockArticleSelection.find(params[:id])
destroyed_articles_count = 0
failed_articles_count = 0
stock_article_selection.stock_articles.each do |article|
begin
article.destroy # article.delete would save some effort, but validations are important
destroyed_articles_count += 1
rescue => error # recover if article.destroy fails and continue with next article
failed_articles_count += 1
end
end
if destroyed_articles_count>0 # note that 1 successful article.destroy is enough to destroy selection
stock_article_selection.destroy
flash[:notice] = "#{destroyed_articles_count} gewählte Artikel sind nun gelöscht."
flash[:error] = "#{failed_articles_count} Artikel konnten nicht gelöscht werden." unless 0==failed_articles_count
else
flash[:error] = "Löschvorgang fehlgeschlagen. Es wurden keine Artikel gelöscht."
end
redirect_to stock_articles_path
end
end