diff --git a/app/controllers/repp/v1/domains/contacts_controller.rb b/app/controllers/repp/v1/domains/contacts_controller.rb index a90a2d27a..53f8559d9 100644 --- a/app/controllers/repp/v1/domains/contacts_controller.rb +++ b/app/controllers/repp/v1/domains/contacts_controller.rb @@ -41,9 +41,7 @@ module Repp def cta(action = 'add') params[:contacts].each { |c| c[:action] = action } action = Actions::DomainUpdate.new(@domain, contact_create_params, false) - # rubocop:disable Style/AndOr handle_errors(@domain) and return unless action.call - # rubocop:enable Style/AndOr render_success(data: { domain: { name: @domain.name } }) end diff --git a/app/interactions/actions/domain_update.rb b/app/interactions/actions/domain_update.rb index ff6eccce2..ca2814fdf 100644 --- a/app/interactions/actions/domain_update.rb +++ b/app/interactions/actions/domain_update.rb @@ -30,7 +30,7 @@ module Actions end def check_for_same_contacts(contacts, contact_type) - return unless contacts.uniq.count != contacts.count + return if contacts.uniq.count == contacts.count domain.add_epp_error('2306', contact_type, nil, %i[domain_contacts invalid]) end @@ -194,22 +194,33 @@ module Actions def contact_for_action(action:, method:, code:) contact = Epp::Contact.find_by(code: code) return contact if action == 'add' || !contact - return domain.admin_domain_contacts.find_by(contact_id: contact.id) if method == 'admin' - domain.tech_domain_contacts.find_by(contact_id: contact.id) + existing_contact(id: contact.id, admin: method == 'admin') end - def assign_contact(obj, add: false, admin: true, code:) + def existing_contact(id:, admin: true) + return domain.admin_domain_contacts.find_by(contact_id: id) if admin + + domain.tech_domain_contacts.find_by(contact_id: id) + end + + def assign_contact(obj, code:, add: false, admin: true) if obj.blank? domain.add_epp_error('2303', 'contact', code, %i[domain_contacts not_found]) elsif obj.try(:org?) && admin && add domain.add_epp_error('2306', 'contact', code, %i[domain_contacts admin_contact_can_be_only_private_person]) else - add ? { contact_id: obj.id, contact_code: obj.code } : { id: obj.id, _destroy: 1 } + assigned_contact_hash(obj, add, admin) end end + def assigned_contact_hash(obj, add, admin) + return if !existing_contact(id: obj.id, admin: admin).nil? && add + + add ? { contact_id: obj.id, contact_code: obj.code } : { id: obj.id, _destroy: 1 } + end + def assign_requested_statuses return unless params[:statuses]