From 2a6a30c2b24b4c46dccd607530948a27e07b2f73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andres=20Keskk=C3=BCla?= Date: Mon, 4 Aug 2014 14:13:30 +0300 Subject: [PATCH] Fixed address saving for contact, refactored a bit --- app/helpers/epp/contacts_helper.rb | 56 +++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 16 deletions(-) diff --git a/app/helpers/epp/contacts_helper.rb b/app/helpers/epp/contacts_helper.rb index 085c002ea..f5813985c 100644 --- a/app/helpers/epp/contacts_helper.rb +++ b/app/helpers/epp/contacts_helper.rb @@ -3,27 +3,15 @@ module Epp::ContactsHelper ph = params_hash['epp']['command']['create']['create'] ph[:ident] ? @contact = Contact.where(ident: ph[:ident]).first_or_initialize : @contact = Contact.new - if @contact.new_record? - @contact.assign_attributes( - code: ph[:id], - phone: ph[:voice], - ident: ph[:ident], - email: ph[:email], - org_name: ph[:postalInfo][:org] - ) - end - @contact.name = ph[:postalInfo][:name] - @contact.ident_type = ident_type - @contact.addresses << Address.new( - country_id: Country.find_by(iso: ph[:postalInfo][:cc]), - street: ph[:postalInfo][:street], - zip: ph[:postalInfo][:pc] - ) + @contact.assign_attributes(new_contact_info ) if @contact.new_record? + @contact.assign_attributes(name_and_ident_type) + @contact.addresses << new_address stamp @contact @contact.save + render '/epp/contacts/create' end @@ -71,6 +59,42 @@ module Epp::ContactsHelper private + def new_address + ph = params_hash['epp']['command']['create']['create'] + + Address.new( + country_id: Country.find_by(iso: ph[:postalInfo][:addr][:cc]), + street: tidy_street, + zip: ph[:postalInfo][:addr][:pc] + ) + end + + def name_and_ident_type + ph = params_hash['epp']['command']['create']['create'] + { + name: ph[:postalInfo][:name], + ident_type: ident_type + } + end + + def new_contact_info + ph = params_hash['epp']['command']['create']['create'] + { + code: ph[:id], + phone: ph[:voice], + ident: ph[:ident], + email: ph[:email], + org_name: ph[:postalInfo][:org] + } + end + + def tidy_street + street = params_hash['epp']['command']['create']['create'][:postalInfo][:addr][:street] + return street if street.is_a? String + return street.join(',') if street.is_a? Array + return nil + end + def ident_type result = params[:frame].slice(/(?<=\