d93aa23d1c
Use the host of default_url_options for generating that header instead.
95 lines
2.8 KiB
Ruby
95 lines
2.8 KiB
Ruby
# encoding: utf-8
|
|
# ActionMailer class that handles all emails for Foodsoft.
|
|
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
|
|
|
|
layout 'email' # Use views/layouts/email.txt.erb
|
|
|
|
default from: "#{I18n.t('layouts.foodsoft')} <#{FoodsoftConfig[:email_sender]}>",
|
|
'X-Auto-Response-Suppress' => 'All'
|
|
|
|
# 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)
|
|
|
|
mail to: user,
|
|
subject: I18n.t('mailer.reset_password.subject', username: show_user(user))
|
|
end
|
|
|
|
# Sends an invite email.
|
|
def invite(invite)
|
|
@invite = invite
|
|
@link = accept_invitation_url(token: @invite.token)
|
|
|
|
mail to: invite.email,
|
|
subject: I18n.t('mailer.invite.subject')
|
|
end
|
|
|
|
# Notify user of upcoming task.
|
|
def upcoming_tasks(user, task)
|
|
@user = user
|
|
@task = task
|
|
|
|
mail to: user,
|
|
subject: I18n.t('mailer.upcoming_tasks.subject')
|
|
end
|
|
|
|
# Sends order result for specific Ordergroup
|
|
def order_result(user, group_order)
|
|
@order = group_order.order
|
|
@group_order = group_order
|
|
|
|
mail to: user,
|
|
subject: I18n.t('mailer.order_result.subject', name: group_order.order.name)
|
|
end
|
|
|
|
# Notify user if account balance is less than zero
|
|
def negative_balance(user,transaction)
|
|
@group = user.ordergroup
|
|
@transaction = transaction
|
|
|
|
mail to: user,
|
|
subject: I18n.t('mailer.negative_balance.subject')
|
|
end
|
|
|
|
def feedback(user, feedback)
|
|
@user = user
|
|
@feedback = feedback
|
|
|
|
mail to: FoodsoftConfig[:notification][:error_recipients],
|
|
from: user,
|
|
subject: I18n.t('mailer.feedback.subject')
|
|
end
|
|
|
|
def not_enough_users_assigned(task, user)
|
|
@task = task
|
|
@user = user
|
|
|
|
mail to: user,
|
|
subject: I18n.t('mailer.not_enough_users_assigned.subject', task: task.name)
|
|
end
|
|
|
|
def mail(args)
|
|
args[:message_id] = "#{Mail.random_tag}@#{default_url_options[:host]}" unless args[:message_id]
|
|
args[:subject] = "[#{FoodsoftConfig[:name]}] #{args[:subject]}"
|
|
|
|
if args[:from].is_a? User
|
|
args[:reply_to] = args[:from] unless args[:reply_to]
|
|
args[:from] = "#{show_user args[:from]} via #{I18n.t('layouts.foodsoft')} <#{FoodsoftConfig[:email_sender]}>"
|
|
end
|
|
|
|
[:bcc, :cc, :reply_to, :sender, :to].each do |k|
|
|
user = args[k]
|
|
args[k] = "#{show_user user} <#{user.email}>" if user.is_a? User
|
|
end
|
|
|
|
super
|
|
end
|
|
|
|
end
|