From ce2156d75feff622ca43fcf7932c27b07b82f06e Mon Sep 17 00:00:00 2001 From: Benjamin Meichsner Date: Wed, 11 Mar 2009 16:58:31 +0100 Subject: [PATCH] Send order-finish-notifications in background. --- app/controllers/orders_controller.rb | 1 + app/models/order.rb | 14 +------------- app/views/mailer/order_result.html.erb | 4 ++-- lib/tasks/foodsoft.rake | 10 ++++++++++ 4 files changed, 14 insertions(+), 15 deletions(-) diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb index 16352261..15369ef4 100644 --- a/app/controllers/orders_controller.rb +++ b/app/controllers/orders_controller.rb @@ -95,6 +95,7 @@ class OrdersController < ApplicationController def finish order = Order.find(params[:id]) order.finish!(@current_user) + call_rake "foodsoft:notify_order_finished", :order_id => order.id flash[:notice] = "Die Bestellung wurde beendet." redirect_to order end diff --git a/app/models/order.rb b/app/models/order.rb index 8e3f3c00..92145a14 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -183,9 +183,6 @@ class Order < ActiveRecord::Base oa.group_order_articles.each { |goa| goa.group_order_article_quantities.clear } end end - - # notify order groups - notify_order_finished end end @@ -213,7 +210,7 @@ class Order < ActiveRecord::Base self.update_attributes! :state => 'closed', :updated_by => user end end - + protected def starts_before_ends @@ -232,13 +229,4 @@ class Order < ActiveRecord::Base group_orders.each { |group_order| group_order.update_price! } end - # Sends "order finished" messages to users who have participated in this order. - def notify_order_finished - for group_order in self.group_orders - for user in group_order.ordergroup.users - Mailer.deliver_order_result(user, group_order) if user.settings["notify.orderFinished"] == '1' - end - end - end - end diff --git a/app/views/mailer/order_result.html.erb b/app/views/mailer/order_result.html.erb index d3eda5d5..f1633c91 100644 --- a/app/views/mailer/order_result.html.erb +++ b/app/views/mailer/order_result.html.erb @@ -3,9 +3,9 @@ Liebe <%= @group_order.ordergroup.name %>, die Bestellung für "<%= @order.name %>" wurde am <%= @order.ends.strftime('%d.%m.%Y um %H:%M') %> von <%= @order.updated_by.nick %> beendet. Für Euch wurden die folgenden Artikel bestellt: -<% for group_order_article in @group_order.group_order_articles.all(:include => :order_article) +<% for group_order_article in @group_order.group_order_articles.ordered.all(:include => :order_article) article = group_order_article.order_article.article -%> -<%= article.name %>: <%= group_order_article.quantity %> x <%= article.unit %> = <%= group_order_article.quantity * article.fc_price %> +<%= article.name %>: <%= group_order_article.result %> x <%= article.unit %> = <%= group_order_article.result * article.fc_price %> <% end -%> Gesamtpreis: <%= @group_order.price %> diff --git a/lib/tasks/foodsoft.rake b/lib/tasks/foodsoft.rake index 5b67c918..2ddd5c72 100644 --- a/lib/tasks/foodsoft.rake +++ b/lib/tasks/foodsoft.rake @@ -38,4 +38,14 @@ namespace :foodsoft do end end end + + desc "Notify users of finished orders" + task :notify_order_finished => :environment do + order = Order.find(ENV["ORDER_ID"]) + for group_order in order.group_orders + for user in group_order.ordergroup.users + Mailer.deliver_order_result(user, group_order) if user.settings["notify.orderFinished"] == '1' + end + end + end end \ No newline at end of file