module Domains module ForceDelete class SetStatus < Base def execute domain.force_delete_type = type type == :fast_track ? force_delete_fast_track : force_delete_soft set_status_notes domain.skip_whois_record_update = true domain.force_delete_domain_statuses_history_data = { reason: domain.status_notes[DomainStatus::FORCE_DELETE], date: Time.zone.now } end def force_delete_fast_track domain.force_delete_date = Time.zone.today + expire_warning_period_days + redemption_grace_period_days domain.force_delete_start = Time.zone.today + 1.day end def force_delete_soft years = (domain.valid_to.to_date - Time.zone.today).to_i / 365 soft_forcedelete_dates(years) if years.positive? end private def set_status_notes domain.status_notes[DomainStatus::FORCE_DELETE] = "Company no: #{domain.registrant.ident} #{"+ #{notes}" if notes.present?}" if reason == 'invalid_company' domain.status_notes[DomainStatus::FORCE_DELETE] = email if reason == 'invalid_email' end def soft_forcedelete_dates(years) domain.force_delete_start = domain.valid_to - years.years domain.force_delete_date = domain.force_delete_start + Setting.expire_warning_period.days + Setting.redemption_grace_period.days end def redemption_grace_period_days Setting.redemption_grace_period.days + 1.day end def expire_warning_period_days Setting.expire_warning_period.days end end end end