mirror of
https://github.com/internetee/registry.git
synced 2025-05-17 09:57:23 +02:00
117 lines
3.1 KiB
Ruby
117 lines
3.1 KiB
Ruby
class DomainMailModel
|
|
# Capture current values used in app/views/mailers/domain_mailer/* and app/mailers/domain_mailer will send later
|
|
|
|
def initialize(domain)
|
|
@domain = domain
|
|
@params = {errors: [], deliver_emails: domain.deliver_emails, id: domain.id}
|
|
end
|
|
|
|
def pending_delete_rejected_notification
|
|
registrant
|
|
subject(:pending_delete_rejected_notification_subject)
|
|
compose
|
|
end
|
|
|
|
def pending_delete_expired_notification
|
|
registrant
|
|
subject(:pending_delete_expired_notification_subject)
|
|
compose
|
|
end
|
|
|
|
def delete_confirmation
|
|
registrant
|
|
subject(:delete_confirmation_subject)
|
|
compose
|
|
end
|
|
|
|
def force_delete
|
|
admins
|
|
subject(:force_delete_subject)
|
|
compose
|
|
end
|
|
|
|
private
|
|
|
|
def registrant_old
|
|
@params[:recipient] = format Registrant.find(@domain.registrant_id_was).email
|
|
end
|
|
|
|
def registrant
|
|
@params[:recipient] = format @domain.registrant.email
|
|
end
|
|
|
|
def registrant_pending
|
|
@params[:recipient] = format @domain.pending_json['new_registrant_email']
|
|
@params[:new_registrant_name] = @domain.pending_json['new_registrant_name']
|
|
@params[:old_registrant_name] = @domain.registrant.name
|
|
end
|
|
|
|
# registrant and domain admin contacts
|
|
def admins
|
|
emails = ([@domain.registrant.email] + @domain.admin_contacts.map { |x| format(x.email) })
|
|
@params[:recipient] = emails.uniq.map { |x| format(x) }
|
|
end
|
|
|
|
# puny internet domain name, TODO: username<email>
|
|
def format(email)
|
|
return warn_no_email if email.nil?
|
|
user, host = email.split('@')
|
|
host = SimpleIDN.to_ascii(host)
|
|
"#{user}@#{host}"
|
|
end
|
|
|
|
def subject(subject)
|
|
@params[:name] = @domain.name
|
|
@params[:subject] = "#{I18n.t(subject, name: @domain.name)}, [#{@domain.name}]"
|
|
end
|
|
|
|
def confirm_update
|
|
verification_url('domain_update_confirms')
|
|
end
|
|
|
|
def compose
|
|
@params
|
|
end
|
|
|
|
def verification_url(path)
|
|
token = verification_token or return
|
|
@params[:verification_url] = "#{ENV['registrant_url']}/registrant/#{path}/#{@domain.id}?token=#{token}"
|
|
end
|
|
|
|
def verification_token
|
|
return warn_missing(:registrant_verification_token) if @domain.registrant_verification_token.blank?
|
|
return warn_missing(:registrant_verification_asked_at) if @domain.registrant_verification_asked_at.blank?
|
|
@domain.registrant_verification_token
|
|
end
|
|
|
|
def domain_info
|
|
[:name, :registrar_name,
|
|
:registrant_name, :registrant_ident, :registrant_email,
|
|
:registrant_street,:registrant_city
|
|
].each do |attr|
|
|
@params.store attr, @domain.send(attr)
|
|
end
|
|
@params.store :registrant_country, @domain.registrant_country.name
|
|
@params.store :registrant_priv, @domain.registrant.priv?
|
|
@params.store :old_registrant_name, Registrant.find(@domain.registrant_id_was).name
|
|
@params
|
|
end
|
|
|
|
def warn_no_email(item = 'email')
|
|
warn_missing item
|
|
nil
|
|
end
|
|
|
|
def warn_missing(item)
|
|
warn_not_delivered "#{item.to_s} is missing for #{@domain.name}"
|
|
end
|
|
|
|
def warn_not_delivered(reason)
|
|
message = "EMAIL NOT DELIVERED: #{reason}"
|
|
@params[:errors] << message
|
|
# Rails.logger.warn message
|
|
nil
|
|
end
|
|
|
|
end
|
|
|