foodsoft/lib/tasks/foodsoft.rake

83 lines
2.7 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 "Finish ended orders"
task :finish_ended_orders => :environment do
Order.finish_ended!
end
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
if user.settings.notify['upcoming_tasks']
Mailer.deliver_now_with_user_locale user do
Mailer.upcoming_tasks(user, task)
end
end
end
end
end
desc "Notify workgroup of upcoming weekly task"
task :notify_users_of_weekly_task => :environment do
2017-08-20 06:07:05 +02:00
tasks = Task.where(done: false, due_date: 7.day.from_now.to_date)
for task in tasks
unless task.enough_users_assigned?
workgroup = task.workgroup
if workgroup
rake_say "Notify workgroup: #{workgroup.name} for task #{task.name}"
2009-08-14 13:50:05 +02:00
for user in workgroup.users
2017-08-20 06:07:05 +02:00
if user.receive_email?
Mailer.deliver_now_with_user_locale user do
Mailer.not_enough_users_assigned(task, user)
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
created_until = tg.create_tasks_for_upfront_days
rake_say "created until #{created_until}"
end
end
desc "Parse incoming email on stdin (options: RECIPIENT=foodcoop.handling)"
task :parse_reply_email => :environment do
FoodsoftMailReceiver.received ENV['RECIPIENT'], STDIN.read
end
desc "Start STMP server for incoming email (options: SMTP_SERVER_PORT=2525, SMTP_SERVER_HOST=0.0.0.0)"
task :reply_email_smtp_server => :environment do
port = ENV['SMTP_SERVER_PORT'].present? ? ENV['SMTP_SERVER_PORT'].to_i : 2525
host = ENV['SMTP_SERVER_HOST']
rake_say "Started SMTP server for incoming email on port #{port}."
server = FoodsoftMailReceiver.new port, host, 1, logger: Rails.logger
server.start
server.join
end
desc "Import and assign bank transactions"
task :import_and_assign_bank_transactions => :environment do
BankAccount.find_each do |ba|
import_method = ba.find_import_method
next unless import_method
import_count = import_method.call(ba)
assign_count = ba.assign_unlinked_transactions
rake_say "#{ba.name}: imported #{import_count}, assigned #{assign_count}"
end
end
end
# Helper
def rake_say(message)
puts message unless Rake.application.options.silent
end