foodsoft/lib/tasks/foodsoft.rake

57 lines
1.8 KiB
Ruby
Raw Normal View History

2009-01-06 11:49:19 +01:00
# put in here all foodsoft tasks
# => :environment loads the environment an gives easy access to the application
namespace :foodsoft do
desc "Notify users of upcoming tasks"
task :notify_upcoming_tasks => :environment do
2012-08-27 08:38:43 +02:00
tasks = Task.where(done: false, due_date: 1.day.from_now.to_date)
for task in tasks
rake_say "Send notifications for #{task.name} to .."
for user in task.users
2012-08-27 08:38:43 +02:00
begin
2015-01-13 18:02:30 +01:00
Mailer.upcoming_tasks(user, task).deliver_now if user.settings.notify['upcoming_tasks'] == 1
2012-08-27 08:38:43 +02:00
rescue
rake_say "deliver aborted for #{user.email}.."
end
end
end
end
desc "Notify workgroup of upcoming weekly task"
task :notify_users_of_weekly_task => :environment do
for workgroup in Workgroup.all
2012-08-27 08:38:43 +02:00
for task in workgroup.tasks.where(due_date: 7.days.from_now.to_date)
unless task.enough_users_assigned?
puts "Notify workgroup: #{workgroup.name} for task #{task.name}"
2009-08-14 13:50:05 +02:00
for user in workgroup.users
if user.settings.messages['send_as_email'] == "1" && !user.email.blank?
begin
2015-01-13 18:02:30 +01:00
Mailer.not_enough_users_assigned(task, user).deliver_now
rescue
rake_say "deliver aborted for #{user.email}"
end
2009-08-14 13:50:05 +02:00
end
end
end
end
end
end
desc "Create upcoming periodic tasks"
task :create_upcoming_periodic_tasks => :environment do
for tg in PeriodicTaskGroup.all
if tg.has_next_task?
2014-11-23 01:22:50 +01:00
create_until = Date.today + FoodsoftConfig[:tasks_upfront_days].to_i + 1
rake_say "creating until #{create_until}"
while tg.next_task_date.nil? || tg.next_task_date < create_until
tg.create_next_task
end
end
end
end
end
# Helper
def rake_say(message)
puts message unless Rake.application.options.silent
end