2020-06-16 16:35:08 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
# Envía los mensajes de mantenimiento
|
|
|
|
#
|
|
|
|
# TODO: Interfaz web desde el panel de gestión. Mientras tanto:
|
|
|
|
#
|
|
|
|
# docker exec -it sutty /bin/sh
|
|
|
|
# su app
|
|
|
|
# cd
|
|
|
|
# bundle exec rails c
|
|
|
|
# m = Maintenance.create message_en: 'reason', message_es: 'razón',
|
|
|
|
# estimated_from: Time.now, estimated_to: Time.now + 1.hour
|
|
|
|
# MaintenanceJob.perform_async(maintenance_id: m.id)
|
|
|
|
#
|
|
|
|
# Lo mismo para salir de mantenimiento, agregando el atributo
|
|
|
|
# are_we_back: true al crear el Maintenance.
|
|
|
|
class MaintenanceJob < ApplicationJob
|
|
|
|
def perform(maintenance_id:)
|
|
|
|
maintenance = Maintenance.find(maintenance_id)
|
|
|
|
# Decidir cuál vamos a enviar según el estado de Maintenance
|
|
|
|
mailer = maintenance.are_we_back ? :were_back : :notice
|
|
|
|
|
|
|
|
# XXX: Parece que [0] es más rápido que []#first
|
|
|
|
Usuarie.all.pluck(:email, :lang).each do |u|
|
2020-09-11 19:57:48 +00:00
|
|
|
begin
|
|
|
|
MaintenanceMailer.with(maintenance: maintenance,
|
|
|
|
email: u[0],
|
|
|
|
lang: u[1]).public_send(mailer).deliver_now
|
|
|
|
rescue Net::SMTPServerBusy => e
|
|
|
|
# Algunas direcciones no son válidas, no queremos detener el
|
|
|
|
# envío pero sí enterarnos cuáles son
|
2021-02-11 14:26:17 +00:00
|
|
|
ExceptionNotifier.notify_exception(e, data: { maintenance_id: maintenance_id, email: u[0]) })
|
2020-09-11 19:57:48 +00:00
|
|
|
end
|
2020-06-16 16:35:08 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|