# frozen_string_literal: true # Handle most of the emails sent by the platform. Triggered by notifications class NotificationsMailer < NotifyWith::NotificationsMailer default from: ->(*) { Setting.get('email_from') } layout 'notifications_mailer' helper :application def send_mail_by(notification) @notification = notification @recipient = notification.receiver @attached_object = notification.attached_object unless respond_to?(notification.notification_type) class_eval %{ def #{notification.notification_type} mail to: @recipient.email, subject: t('notifications_mailer.#{notification.notification_type}.subject'), template_name: '#{notification.notification_type}', content_type: 'text/html' end }, __FILE__, __LINE__ - 7 end send(notification.notification_type) rescue StandardError => e Rails.logger.error "[NotificationsMailer] notification cannot be sent: #{e}" end def helpers ActionController::Base.helpers 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 end