1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-12-01 12:24:28 +01:00
fab-manager/app/mailers/notifications_mailer.rb

62 lines
2.7 KiB
Ruby

# frozen_string_literal: true
# Handle most of the emails sent by the platform. Triggered by notifications
class NotificationsMailer < BaseMailer
after_action :mark_notification_as_send
def send_mail_by(notification)
@notification = notification
@recipient = notification.receiver
@attached_object = notification.attached_object
unless respond_to?(notification.notification_type)
class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
def #{notification.notification_type} # def notify_admin_when_project_published
mail to: @recipient.email, # mail to: @recipient.email,
subject: t('notifications_mailer.#{notification.notification_type}.subject'), # subject: t('notifications_mailer.notify_admin_when_project_published.subject'),
template_name: '#{notification.notification_type}', # template_name: 'notify_admin_when_project_published',
content_type: 'text/html' # content_type: 'text/html'
end # end
RUBY
end
send(notification.notification_type)
rescue StandardError => e
Rails.logger.error "[NotificationsMailer] notification cannot be sent: #{e}"
end
def notify_user_when_invoice_ready
attachments[@attached_object.filename] = File.read(@attached_object.file)
mail(to: @recipient.email,
subject: t('notifications_mailer.notify_member_invoice_ready.subject'),
template_name: 'notify_member_invoice_ready')
end
def notify_user_when_avoir_ready
attachments[@attached_object.filename] = File.read(@attached_object.file)
mail(to: @recipient.email,
subject: t('notifications_mailer.notify_member_avoir_ready.subject'),
template_name: 'notify_member_avoir_ready')
end
def notify_user_when_payment_schedule_ready
attachments[@attached_object.filename] = File.read(@attached_object.file)
mail(to: @recipient.email,
subject: t('notifications_mailer.notify_member_payment_schedule_ready.subject'),
template_name: 'notify_member_payment_schedule_ready')
end
def notify_member_create_reservation
attachments[@attached_object.ics_filename] = @attached_object.to_ics.encode(Encoding::UTF_8)
mail(to: @recipient.email,
subject: t('notifications_mailer.notify_member_create_reservation.subject'),
template_name: 'notify_member_create_reservation')
end
private
def mark_notification_as_send
@notification.mark_as_send unless @notification.is_send
end
end