internetee-registry/app/presenters/domain_presenter.rb
2021-09-10 11:46:21 +03:00

107 lines
2.9 KiB
Ruby

class DomainPresenter
delegate :name, :transfer_code, :registrant, :registrant_id, :id, to: :domain
def initialize(domain:, view:)
@domain = domain
@view = view
end
def name_with_status
html = domain.name
if domain.discarded?
label = view.tag.span('deleteCandidate', class: 'label label-warning')
html += " #{label}"
end
if domain.locked_by_registrant?
label = view.tag.span('registryLock', class: 'label label-danger')
html += " #{label}"
end
html.html_safe
end
def expire_time
view.l(domain.expire_time)
end
def expire_date
view.l(domain.expire_time, format: :date)
end
def on_hold_date
view.l(domain.on_hold_time, format: :date) if domain.on_hold_time
end
def delete_date
view.l(domain.delete_date) if domain.delete_date
end
def force_delete_date
view.l(domain.force_delete_date) if domain.force_delete_scheduled?
end
def force_delete_toggle_btn
return inactive_schedule_force_delete_btn if domain.discarded?
if domain.force_delete_scheduled?
cancel_force_delete_btn
else
schedule_force_delete_btn
end
end
def contact_emails_verification_failed
domain.contact_emails_verification_failed.join(', ')
end
def remove_registry_lock_btn
return unless domain.locked_by_registrant?
view.link_to(view.t('admin.domains.registry_lock.destroy.btn'),
view.admin_domain_registry_lock_path(domain),
method: :delete,
data: { confirm: view.t('admin.domains.registry_lock.destroy.confirm') },
class: 'dropdown-item')
end
def keep_btn
return unless domain.discarded?
view.link_to view.t('admin.domains.edit.keep_btn'), view.keep_admin_domain_path(@domain),
method: :patch,
data: { confirm: view.t('admin.domains.edit.keep_btn_confirm') },
class: 'dropdown-item'
end
private
def schedule_force_delete_btn
view.tag.a(view.t('admin.domains.force_delete_toggle_btn.schedule'),
class: 'dropdown-item',
data: {
toggle: 'modal',
target: '.domain-edit-force-delete-dialog',
})
end
def cancel_force_delete_btn
view.link_to view.t('admin.domains.force_delete_toggle_btn.cancel'),
view.admin_domain_force_delete_path(domain),
method: :delete,
data: {
confirm: view.t('admin.domains.force_delete_toggle_btn.cancel_confirm'),
},
class: 'dropdown-item'
end
def inactive_schedule_force_delete_btn
view.tag.button(view.t('admin.domains.force_delete_toggle_btn.schedule'),
title: view.t('admin.domains.force_delete_toggle_btn.unable_to_schedule'),
disabled: true,
class: 'dropdown-item')
end
attr_reader :domain, :view
end