Class: Mailer
- Inherits:
-
ActionMailer::Base
- Object
- ActionMailer::Base
- Mailer
- Includes:
- ApplicationHelper
- Defined in:
- app/mailers/mailer.rb
Overview
ActionMailer class that handles all emails for Foodsoft.
Class Method Summary collapse
- .deliver_now ⇒ Object
- .deliver_now_with_default_locale(&block) ⇒ Object
- .deliver_now_with_user_locale(user, &block) ⇒ Object
Instance Method Summary collapse
-
#add_order_result_attachments(order, options = {}) ⇒ Object
separate method to allow plugins to mess with the attachments.
-
#additonal_welcome_text(user) ⇒ Object
separate method to allow plugins to mess with the text.
-
#invite(invite) ⇒ Object
Sends an invite email.
- #mail(args) ⇒ Object
-
#negative_balance(user, transaction) ⇒ Object
Notify user if account balance is less than zero.
- #not_enough_users_assigned(task, user) ⇒ Object
-
#order_received(user, group_order) ⇒ Object
Sends order received info for specific Ordergroup.
-
#order_result(user, group_order) ⇒ Object
Sends order result for specific Ordergroup.
-
#order_result_supplier(user, order, options = {}) ⇒ Object
Sends order result to the supplier.
-
#reset_password(user) ⇒ Object
Sends an email with instructions on how to reset the password.
-
#upcoming_tasks(user, task) ⇒ Object
Notify user of upcoming task.
-
#welcome(user) ⇒ Object
Sends a welcome email with instructions on how to reset the password.
Methods included from ApplicationHelper
#base_errors, #bootstrap_flash_patched, #close_button, #expand, #foodcoop_css_path, #foodcoop_css_tag, #format_currency, #format_date, #format_datetime, #format_datetime_timespec, #format_iban, #format_roles, #format_time, #heading_helper, #icon, #items_per_page, #link_to_gmaps, #link_to_top, #pagination_links_remote, #remote_link_to, #show_title?, #show_user, #show_user_link, #sort_link_helper, #tab_is_active?, #title, #truncate, #weekday
Methods included from PathHelper
#finance_group_transactions_path
Class Method Details
.deliver_now ⇒ Object
150 151 152 153 154 155 |
# File 'app/mailers/mailer.rb', line 150 def self.deliver_now = yield .deliver_now rescue StandardError => e MailDeliveryStatus.create email: .to[0], message: e. end |
.deliver_now_with_default_locale(&block) ⇒ Object
144 145 146 147 148 |
# File 'app/mailers/mailer.rb', line 144 def self.deliver_now_with_default_locale(&block) I18n.with_locale(FoodsoftConfig[:default_locale]) do deliver_now(&block) end end |
.deliver_now_with_user_locale(user, &block) ⇒ Object
138 139 140 141 142 |
# File 'app/mailers/mailer.rb', line 138 def self.deliver_now_with_user_locale(user, &block) I18n.with_locale(user.settings['profile']['language']) do deliver_now(&block) end end |
Instance Method Details
#add_order_result_attachments(order, options = {}) ⇒ Object
separate method to allow plugins to mess with the attachments
158 159 160 161 |
# File 'app/mailers/mailer.rb', line 158 def (order, = {}) ['order.pdf'] = OrderFax.new(order, ).to_pdf ['order.csv'] = OrderCsv.new(order, ).to_csv end |
#additonal_welcome_text(user) ⇒ Object
separate method to allow plugins to mess with the text
164 |
# File 'app/mailers/mailer.rb', line 164 def additonal_welcome_text(user); end |
#invite(invite) ⇒ Object
Sends an invite email.
25 26 27 28 29 30 31 |
# File 'app/mailers/mailer.rb', line 25 def invite(invite) @invite = invite @link = accept_invitation_url(token: @invite.token) mail to: invite.email, subject: I18n.t('mailer.invite.subject') end |
#mail(args) ⇒ Object
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'app/mailers/mailer.rb', line 110 def mail(args) args[:message_id] ||= "<#{Mail.random_tag}@#{[:host]}>" args[:subject] = "[#{FoodsoftConfig[:name]}] #{args[:subject]}" if args[:from].is_a? User args[:reply_to] ||= args[:from] args[:from] = format_address(FoodsoftConfig[:email_sender], I18n.t('mailer.from_via_foodsoft', name: show_user(args[:from]))) end %i[bcc cc reply_to sender to].each do |k| user = args[k] args[k] = format_address(user.email, show_user(user)) if user.is_a? User end if contact_email = FoodsoftConfig[:contact][:email] args[:reply_to] ||= format_address(contact_email, FoodsoftConfig[:name]) end reply_email_domain = FoodsoftConfig[:reply_email_domain] if reply_email_domain && !args[:return_path] && args[:to].is_a?(String) address = Mail::Parsers::AddressListsParser.parse(args[:to]).addresses.first args[:return_path] = "<#{FoodsoftConfig.scope}.bounce+#{address.local}=#{address.domain}@#{reply_email_domain}>" end super end |
#negative_balance(user, transaction) ⇒ Object
Notify user if account balance is less than zero
94 95 96 97 98 99 100 |
# File 'app/mailers/mailer.rb', line 94 def negative_balance(user, transaction) @group = user.ordergroup @transaction = transaction mail to: user, subject: I18n.t('mailer.negative_balance.subject') end |
#not_enough_users_assigned(task, user) ⇒ Object
102 103 104 105 106 107 108 |
# File 'app/mailers/mailer.rb', line 102 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 |
#order_received(user, group_order) ⇒ Object
Sends order received info for specific Ordergroup
64 65 66 67 68 69 70 71 72 73 74 |
# File 'app/mailers/mailer.rb', line 64 def order_received(user, group_order) @order = group_order.order @group_order = group_order order_articles = @order.order_articles.reject { |oa| oa.units_received.nil? } @abundant_articles = order_articles.select { |oa| oa.difference_received_ordered.positive? } @scarce_articles = order_articles.select { |oa| oa.difference_received_ordered.negative? } mail to: user, subject: I18n.t('mailer.order_received.subject', name: group_order.order.name) end |
#order_result(user, group_order) ⇒ Object
Sends order result for specific Ordergroup
55 56 57 58 59 60 61 |
# File 'app/mailers/mailer.rb', line 55 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 |
#order_result_supplier(user, order, options = {}) ⇒ Object
Sends order result to the supplier
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'app/mailers/mailer.rb', line 77 def order_result_supplier(user, order, = {}) @user = user @order = order @supplier = order.supplier order, subject = I18n.t('mailer.order_result_supplier.subject', name: order.supplier.name) subject += " (#{I18n.t('activerecord.attributes.order.pickup')}: #{format_date(order.pickup)})" if order.pickup mail to: order.supplier.email, cc: user, reply_to: user, subject: subject end |
#reset_password(user) ⇒ Object
Sends an email with instructions on how to reset the password. Assumes user.setResetPasswordToken has been successfully called already.
16 17 18 19 20 21 22 |
# File 'app/mailers/mailer.rb', line 16 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 |
#upcoming_tasks(user, task) ⇒ Object
Notify user of upcoming task.
34 35 36 37 38 39 40 41 |
# File 'app/mailers/mailer.rb', line 34 def upcoming_tasks(user, task) @user = user @task = task @next_tasks = Task.order(:due_date).next_assigned_tasks_for(user) mail to: user, subject: I18n.t('mailer.upcoming_tasks.subject') end |
#welcome(user) ⇒ Object
Sends a welcome email with instructions on how to reset the password. Assumes user.setResetPasswordToken has been successfully called already.
45 46 47 48 49 50 51 52 |
# File 'app/mailers/mailer.rb', line 45 def welcome(user) @user = user @additional_text = additonal_welcome_text(user) @link = new_password_url(id: @user.id, token: @user.reset_password_token) mail to: user, subject: I18n.t('mailer.welcome.subject') end |