# 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