foodsoft/app/mailers/mailer.rb

78 lines
2.5 KiB
Ruby
Raw Normal View History

2012-08-06 12:00:40 +02:00
# encoding: utf-8
2014-06-18 13:28:19 +02:00
# ActionMailer class that handles all emails for Foodsoft.
2011-05-11 10:53:18 +02:00
class Mailer < ActionMailer::Base
# XXX Quick fix to allow the use of show_user. Proper take would be one of
# (1) Use draper, decorate user
# (2) Create a helper with this method, include here and in ApplicationHelper
helper :application
include ApplicationHelper
2011-05-11 10:53:18 +02:00
2012-08-17 19:08:02 +02:00
layout 'email' # Use views/layouts/email.txt.erb
2011-05-11 10:53:18 +02:00
default from: "#{I18n.t('layouts.foodsoft')} <#{FoodsoftConfig[:email_sender]}>"
2011-05-11 10:53:18 +02:00
# Sends an email with instructions on how to reset the password.
# Assumes user.setResetPasswordToken has been successfully called already.
def reset_password(user)
@user = user
@link = new_password_url(id: @user.id, token: @user.reset_password_token)
2011-05-11 10:53:18 +02:00
mail :to => @user.email,
:subject => "[#{FoodsoftConfig[:name]}] " + I18n.t('mailer.reset_password.subject', :username => show_user(@user))
2011-05-11 10:53:18 +02:00
end
# Sends an invite email.
def invite(invite)
@invite = invite
@link = accept_invitation_url(token: @invite.token)
2011-05-11 10:53:18 +02:00
mail :to => @invite.email,
2013-05-07 13:28:14 +02:00
:subject => I18n.t('mailer.invite.subject')
2011-05-11 10:53:18 +02:00
end
# Notify user of upcoming task.
def upcoming_tasks(user, task)
@user = user
@task = task
mail :to => user.email,
2013-05-07 13:28:14 +02:00
:subject => "[#{FoodsoftConfig[:name]}] " + I18n.t('mailer.upcoming_tasks.subject')
2011-05-11 10:53:18 +02:00
end
# Sends order result for specific Ordergroup
def order_result(user, group_order)
@order = group_order.order
@group_order = group_order
mail :to => user.email,
2013-05-07 13:28:14 +02:00
:subject => "[#{FoodsoftConfig[:name]}] " + I18n.t('mailer.order_result.subject', :name => group_order.order.name)
2011-05-11 10:53:18 +02:00
end
# Notify user if account balance is less than zero
def negative_balance(user,transaction)
@group = user.ordergroup
@transaction = transaction
mail :to => user.email,
2014-05-30 10:13:21 +02:00
:subject => "[#{FoodsoftConfig[:name]}] " + I18n.t('mailer.negative_balance.subject')
2011-05-11 10:53:18 +02:00
end
def feedback(user, feedback)
2011-05-11 10:53:18 +02:00
@user = user
@feedback = feedback
2011-05-11 10:53:18 +02:00
mail :to => FoodsoftConfig[:notification]["error_recipients"],
:from => "#{show_user user} <#{user.email}>",
2013-05-07 13:28:14 +02:00
:subject => "[#{FoodsoftConfig[:name]}] " + I18n.t('mailer.feedback.subject', :email => user.email)
2011-05-11 10:53:18 +02:00
end
def not_enough_users_assigned(task, user)
2011-05-11 10:53:18 +02:00
@task = task
@user = user
2011-05-11 10:53:18 +02:00
mail :to => user.email,
2013-05-07 13:28:14 +02:00
:subject => "[#{FoodsoftConfig[:name]}] " + I18n.t('mailer.not_enough_users_assigned.subject', :task => task.name)
2011-05-11 10:53:18 +02:00
end
2011-05-11 10:53:18 +02:00
end