Skip to content

Commit

Permalink
Merge pull request #2475 from internetee/fix-domain-contacts-repp
Browse files Browse the repository at this point in the history
Fix domain contacts repp
  • Loading branch information
vohmar authored Nov 17, 2022
2 parents c96a9bd + 936ff18 commit 4328ebb
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 7 deletions.
2 changes: 0 additions & 2 deletions app/controllers/repp/v1/domains/contacts_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,7 @@ def destroy
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
Expand Down
21 changes: 16 additions & 5 deletions app/interactions/actions/domain_update.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def assign_relational_modifications
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
Expand Down Expand Up @@ -194,22 +194,33 @@ def gather_domain_contacts(contacts, admin: true)
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]

Expand Down

0 comments on commit 4328ebb

Please sign in to comment.