diff --git a/.reek b/.reek index 76f486fdb..f108f4bf3 100644 --- a/.reek +++ b/.reek @@ -144,7 +144,6 @@ DuplicateMethodCall: - Admin::DomainsController#build_associations - Admin::DomainsController#index - Admin::DomainsController#normalize_search_parameters - - Admin::DomainsController#schedule_force_delete - Admin::EppLogsController#index - Admin::EppLogsController#set_default_dates - Admin::LegalDocumentsController#show @@ -474,7 +473,6 @@ IrresponsibleModule: - Registrar::ApplicationHelper - DomainDeleteConfirmEmailJob - DomainDeleteConfirmJob - - DomainDeleteForcedEmailJob - DomainDeleteJob - DomainExpireEmailJob - DomainUpdateConfirmJob @@ -623,7 +621,6 @@ TooManyStatements: - Admin::DomainVersionsController#show - Admin::DomainsController#index - Admin::DomainsController#normalize_search_parameters - - Admin::DomainsController#schedule_force_delete - Admin::DomainsController#update - Admin::EppLogsController#index - Admin::InvoicesController#create @@ -852,7 +849,6 @@ UtilityFunction: - ApplicationHelper#plain_username - ApplicationHelper#unstable_env - DomainDeleteConfirmEmailJob#logger - - DomainDeleteForcedEmailJob#logger - DomainExpireEmailJob#run - RegenerateRegistrarWhoisesJob#run - RegistrantChangeConfirmEmailJob#logger @@ -891,8 +887,6 @@ FeatureEnvy: - DomainDeleteConfirmEmailJob#run - DomainDeleteConfirmJob#raise_errors! - DomainDeleteConfirmJob#run - - DomainDeleteForcedEmailJob#log - - DomainDeleteForcedEmailJob#run - DomainDeleteJob#run - DomainUpdateConfirmJob#raise_errors! - DomainUpdateConfirmJob#run diff --git a/app/assets/javascripts/admin/domains/force_delete.js b/app/assets/javascripts/admin/domains/force_delete.js new file mode 100644 index 000000000..652f798b3 --- /dev/null +++ b/app/assets/javascripts/admin/domains/force_delete.js @@ -0,0 +1,13 @@ +(function() { + let container = document.querySelector('.domain-edit-force-delete-dialog'); + let toggle = container.querySelector('[data-dependent-content-toggle]'); + let dependentContent = container.querySelector('.email-template-row'); + + if (!toggle) { + return; + } + + toggle.addEventListener('change', function() { + dependentContent.hidden = !this.checked; + }); +})(); diff --git a/app/controllers/admin/domains/force_delete_controller.rb b/app/controllers/admin/domains/force_delete_controller.rb new file mode 100644 index 000000000..5d72739d5 --- /dev/null +++ b/app/controllers/admin/domains/force_delete_controller.rb @@ -0,0 +1,39 @@ +module Admin + module Domains + class ForceDeleteController < BaseController + def create + authorize! :manage, domain + + domain.transaction do + domain.schedule_force_delete + domain.registrar.messages.create!(body: t('force_delete_set_on_domain', domain_name: domain.name)) + + if notify_by_email? + DomainDeleteMailer.forced(domain: domain, + registrar: domain.registrar, + registrant: domain.registrant, + template_name: params[:template_name]).deliver_now + end + end + + redirect_to edit_admin_domain_url(domain), notice: t('.scheduled') + end + + def destroy + authorize! :manage, domain + domain.cancel_force_delete + redirect_to edit_admin_domain_url(domain), notice: t('.cancelled') + end + + private + + def domain + @domain ||= Domain.find(params[:domain_id]) + end + + def notify_by_email? + ActiveRecord::Type::Boolean.new.type_cast_from_user(params[:notify_by_email]) + end + end + end +end diff --git a/app/controllers/admin/domains_controller.rb b/app/controllers/admin/domains_controller.rb index 3a5005d32..576b5f8e1 100644 --- a/app/controllers/admin/domains_controller.rb +++ b/app/controllers/admin/domains_controller.rb @@ -62,28 +62,6 @@ module Admin end end - def schedule_force_delete - raise 'Template param cannot be empty' if params[:template_name].blank? - - @domain.transaction do - @domain.schedule_force_delete - @domain.registrar.messages.create!(body: I18n.t('force_delete_set_on_domain', domain_name: @domain.name)) - DomainDeleteForcedEmailJob.enqueue(@domain.id, params[:template_name]) - end - - redirect_to edit_admin_domain_path(@domain), notice: t('.scheduled') - end - - def cancel_force_delete - if @domain.cancel_force_delete - flash[:notice] = t('.cancelled') - else - flash.now[:alert] = I18n.t('failed_to_update_domain') - end - - redirect_to edit_admin_domain_path(@domain) - end - def versions @domain = Domain.where(id: params[:domain_id]).includes({ versions: :item }).first @versions = @domain.versions diff --git a/app/jobs/domain_delete_forced_email_job.rb b/app/jobs/domain_delete_forced_email_job.rb deleted file mode 100644 index c9ba13a6f..000000000 --- a/app/jobs/domain_delete_forced_email_job.rb +++ /dev/null @@ -1,23 +0,0 @@ -class DomainDeleteForcedEmailJob < Que::Job - def run(domain_id, template_name) - domain = Domain.find(domain_id) - - log(domain) - DomainDeleteMailer.forced(domain: domain, - registrar: domain.registrar, - registrant: domain.registrant, - template_name: template_name).deliver_now - end - - private - - def log(domain) - message = "Send DomainDeleteMailer#forced email for domain #{domain.name} (##{domain.id})" \ - " to #{domain.primary_contact_emails.join(', ')}" - logger.info(message) - end - - def logger - Rails.logger - end -end diff --git a/app/presenters/domain_presenter.rb b/app/presenters/domain_presenter.rb index 11a066b7a..9597330b8 100644 --- a/app/presenters/domain_presenter.rb +++ b/app/presenters/domain_presenter.rb @@ -41,7 +41,7 @@ class DomainPresenter def force_delete_toggle_btn if !domain.force_delete_scheduled? view.content_tag(:a, view.t('admin.domains.force_delete_toggle_btn.schedule'), - class: 'btn btn-danger', + class: 'btn btn-default', data: { toggle: 'modal', target: '.domain-edit-force-delete-dialog', @@ -49,9 +49,9 @@ class DomainPresenter ) else view.link_to(view.t('admin.domains.force_delete_toggle_btn.cancel'), - view.cancel_force_delete_admin_domain_path(domain), - method: :patch, - data: { confirm: view.t('admin.domains.force_delete_toggle_btn.cancel_confim') }, + view.admin_domain_force_delete_path(domain), + method: :delete, + data: { confirm: view.t('admin.domains.force_delete_toggle_btn.cancel_confirm') }, class: 'btn btn-primary') end end diff --git a/app/views/admin/domains/_force_delete_dialog.html.erb b/app/views/admin/domains/_force_delete_dialog.html.erb index 3452883f2..26edf3756 100644 --- a/app/views/admin/domains/_force_delete_dialog.html.erb +++ b/app/views/admin/domains/_force_delete_dialog.html.erb @@ -8,19 +8,27 @@