mirror of
https://github.com/internetee/registry.git
synced 2025-06-08 13:44:47 +02:00
57 lines
1.6 KiB
Ruby
57 lines
1.6 KiB
Ruby
class DomainExpireMailer < ApplicationMailer
|
|
attr_accessor :domain, :registrar
|
|
|
|
def expired(domain:, registrar:)
|
|
process_mail(domain: domain, registrar: registrar, method_name: __method__.to_s)
|
|
end
|
|
|
|
def expired_soft(domain:, registrar:)
|
|
process_mail(domain: domain, registrar: registrar, method_name: __method__.to_s)
|
|
end
|
|
|
|
private
|
|
|
|
def process_mail(domain:, registrar:, method_name:)
|
|
init(domain, registrar)
|
|
|
|
logger.info("Send DomainExpireMailer##{method_name} email for #{domain.name} (##{domain.id})" \
|
|
" to #{recipient(domain).join(', ')}")
|
|
|
|
mail(to: recipient(domain), subject: subject(method_name))
|
|
end
|
|
|
|
def init(domain, registrar)
|
|
@domain = domain_presenter(domain: domain)
|
|
@registrar = registrar_presenter(registrar: registrar)
|
|
end
|
|
|
|
def recipient(domain)
|
|
filter_invalid_emails(emails: domain.primary_contact_emails, domain: @domain)
|
|
end
|
|
|
|
def subject(method_name)
|
|
I18n.t("domain_expire_mailer.#{method_name}.subject", domain_name: @domain.name)
|
|
end
|
|
|
|
def domain_presenter(domain:)
|
|
DomainPresenter.new(domain: domain, view: view_context)
|
|
end
|
|
|
|
def registrar_presenter(registrar:)
|
|
RegistrarPresenter.new(registrar: registrar, view: view_context)
|
|
end
|
|
|
|
# Needed because there are invalid emails in the database, which have been imported from legacy app
|
|
def filter_invalid_emails(emails:, domain:)
|
|
emails.select do |email|
|
|
valid = EmailValidator.new(email).valid?
|
|
|
|
unless valid
|
|
logger.info("Unable to send DomainExpireMailer#expired email for domain #{domain.name} (##{domain.id})" \
|
|
" to invalid recipient #{email}")
|
|
end
|
|
|
|
valid
|
|
end
|
|
end
|
|
end
|