Class: OrderArticlesController

Inherits:
ApplicationController show all
Defined in:
app/controllers/order_articles_controller.rb

Instance Method Summary collapse

Methods inherited from ApplicationController

current

Instance Method Details

#createObject


12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'app/controllers/order_articles_controller.rb', line 12

def create
  @order = Order.find(params[:order_id])
  # The article may be ordered with zero units - in that case do not complain.
  #   If order_article is ordered and a new order_article is created, an error message will be
  #   given mentioning that the article already exists, which is desired.
  @order_article = @order.order_articles.where(:article_id => params[:order_article][:article_id]).first
  unless @order_article && @order_article.units_to_order == 0
    @order_article = @order.order_articles.build(params[:order_article])
  end
  @order_article.save!
rescue
  render action: :new
end

#destroyObject


41
42
43
44
45
46
47
48
49
50
51
52
# File 'app/controllers/order_articles_controller.rb', line 41

def destroy
  @order_article = OrderArticle.find(params[:id])
  # only destroy if there are no associated GroupOrders; if we would, the requested
  # quantity and tolerance would be gone. Instead of destroying, we set all result
  # quantities to zero.
  if @order_article.group_order_articles.count == 0
    @order_article.destroy
  else
    @order_article.group_order_articles.each { |goa| goa.update_attribute(:result, 0) }
    @order_article.update_results!
  end
end

#editObject


26
27
28
29
# File 'app/controllers/order_articles_controller.rb', line 26

def edit
  @order = Order.find(params[:order_id])
  @order_article = OrderArticle.find(params[:id])
end

#newObject


7
8
9
10
# File 'app/controllers/order_articles_controller.rb', line 7

def new
  @order = Order.find(params[:order_id])
  @order_article = @order.order_articles.build(params[:order_article])
end

#updateObject


31
32
33
34
35
36
37
38
39
# File 'app/controllers/order_articles_controller.rb', line 31

def update
  @order = Order.find(params[:order_id])
  @order_article = OrderArticle.find(params[:id])
  begin
    @order_article.update_article_and_price!(params[:order_article], params[:article], params[:article_price])
  rescue
    render action: :edit
  end
end