From 49be55238b016992ef24283ca5d81f40834ba41b Mon Sep 17 00:00:00 2001 From: Benjamin Meichsner Date: Tue, 11 Aug 2009 18:10:14 +0200 Subject: [PATCH] Added rake task to notify workgroup members if not enough users assigned an upcoming task. --- app/models/mailer.rb | 7 +++++++ app/models/workgroup.rb | 6 +++--- app/views/mailer/not_enough_users_assigned.erb | 11 +++++++++++ lib/tasks/foodsoft.rake | 14 ++++++++++++++ 4 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 app/views/mailer/not_enough_users_assigned.erb diff --git a/app/models/mailer.rb b/app/models/mailer.rb index 482c400c..a86e5aa6 100644 --- a/app/models/mailer.rb +++ b/app/models/mailer.rb @@ -67,6 +67,13 @@ class Mailer < ActionMailer::Base body :user => user, :message => message end + def not_enough_users_assigned(task,user) + prepare_system_message(user) + subject "[#{Foodsoft.config[:name]}] #{task.name} braucht noch Leute!" + body :task => task, :user => user, + :task_url => File.join(Foodsoft.config[:base_url], "tasks/workgroup", task.workgroup_id.to_s) + end + protected def prepare_system_message(recipient) diff --git a/app/models/workgroup.rb b/app/models/workgroup.rb index 8b029840..d29da6b2 100644 --- a/app/models/workgroup.rb +++ b/app/models/workgroup.rb @@ -54,8 +54,8 @@ class Workgroup < Group # now generate the Array nextTasks = Array.new number.times do - nextTasks << nextTask - nextTask = 1.week.from_now(nextTask).to_date + nextTasks << nextTask.to_date + nextTask = 1.week.from_now(nextTask) end return nextTasks end @@ -69,5 +69,5 @@ class Workgroup < Group :weekly => true } end - + end diff --git a/app/views/mailer/not_enough_users_assigned.erb b/app/views/mailer/not_enough_users_assigned.erb new file mode 100644 index 00000000..9032b4f3 --- /dev/null +++ b/app/views/mailer/not_enough_users_assigned.erb @@ -0,0 +1,11 @@ +Liebe(r) <%= @user.first_name %>, + +Der Job <%= @task.name -%> Deiner Arbeitsgruppe ist am <%= @task.due_date.strftime("%d. %b") -%> fällig +und es fehlen noch Mitstreiterinnen! + +Sofern Du Dich noch nicht für diese Aufgabe eingetragen hast ist das jetzt die Chance: + <%= @task_url %> + +-- +Deine Aufgaben: <%= Foodsoft.config[:base_url] %>/home/tasks + diff --git a/lib/tasks/foodsoft.rake b/lib/tasks/foodsoft.rake index 78ae441b..de773b13 100644 --- a/lib/tasks/foodsoft.rake +++ b/lib/tasks/foodsoft.rake @@ -52,6 +52,20 @@ namespace :foodsoft do end end + desc "Notify workgroup of upcoming weekly task" + task :notify_users_of_weekly_task => :environment do + for workgroup in Workgroup.all + for task in workgroup.tasks.all(:conditions => ["due_date = ?", 4.days.from_now.to_date]) + unless task.enough_users_assigned? + puts "Notify workgroup: #{workgroup.name} for task #{task.name}" + for user in workgroup.users.collect { |u| u if u.settings['messages.sendAsEmail'] == "1" && !u.email.blank? } + Mailer.deliver_not_enough_users_assigned(task, user) + end + end + end + end + end + desc "Notify users of finished orders" task :notify_order_finished => :environment do order = Order.find(ENV["ORDER_ID"])