internetee/registry

View on GitHub
app/interactions/domains/delete_confirm/base.rb

Summary

Maintainability
A
0 mins
Test Coverage
F
50%
module Domains
  module DeleteConfirm
    class Base < ActiveInteraction::Base
      object :domain,
             class: Domain,
             description: 'Domain to confirm release'
      string :action
      string :initiator,
             default: nil

      validates :domain, :action, presence: true
      validates :action, inclusion: { in: [RegistrantVerification::CONFIRMED,
                                           RegistrantVerification::REJECTED] }

      def raise_errors!(domain)
        return unless domain.errors.any?

        message = "domain #{domain.name} failed with errors #{domain.errors.full_messages}"
        throw message
      end

      def notify_registrar(message_key)
        domain.registrar.notifications.create!(
          text: "#{I18n.t(message_key)}: #{domain.name}",
          attached_obj_id: domain.id,
          attached_obj_type: domain.class.to_s
        )
      end

      def preclean_pendings
        domain.registrant_verification_token = nil
        domain.registrant_verification_asked_at = nil
      end

      def clean_pendings!
        domain.is_admin = true
        domain.registrant_verification_token = nil
        domain.registrant_verification_asked_at = nil
        domain.pending_json = {}
        clear_statuses
        domain.save
      end

      def clear_statuses
        domain.statuses.delete(DomainStatus::PENDING_DELETE_CONFIRMATION)
        domain.statuses.delete(DomainStatus::PENDING_UPDATE)
        domain.statuses.delete(DomainStatus::PENDING_DELETE)
        domain.status_notes[DomainStatus::PENDING_UPDATE] = ''
        domain.status_notes[DomainStatus::PENDING_DELETE] = ''
      end
    end
  end
end