From 410914e16ebf3d0aacf13698ed3e39cd6e687c91 Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Wed, 3 Jun 2015 10:06:40 +0300 Subject: [PATCH] Contact change notification email content update #2558 --- app/models/contact.rb | 18 +++++++++++++++++ .../contact_mailer/email_updated.html.erb | 12 ++++++----- .../contact_mailer/email_updated.text.erb | 14 +++++++------ spec/models/contact_spec.rb | 20 +++++++++++++++++++ 4 files changed, 53 insertions(+), 11 deletions(-) diff --git a/app/models/contact.rb b/app/models/contact.rb index 5cbc6ac53..f2de0a4fd 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -7,6 +7,7 @@ class Contact < ActiveRecord::Base has_many :domains, through: :domain_contacts has_many :statuses, class_name: 'ContactStatus', dependent: :destroy has_many :legal_documents, as: :documentable + has_many :registrant_domains, class_name: 'Domain', foreign_key: 'registrant_id' # when contant is registrant accepts_nested_attributes_for :legal_documents @@ -184,4 +185,21 @@ class Contact < ActiveRecord::Base errors.add(:ident, :invalid_country_code) end end + + def related_domain_descriptions + @desc = {} + + registrant_domains.each do |dom| + @desc[dom.name] ||= [] + @desc[dom.name] << :registrant + end + + domain_contacts.each do |dc| + @desc[dc.domain.name] ||= [] + @desc[dc.domain.name] << dc.name.downcase.to_sym + @desc[dc.domain.name] = @desc[dc.domain.name].compact + end + + @desc + end end diff --git a/app/views/contact_mailer/email_updated.html.erb b/app/views/contact_mailer/email_updated.html.erb index c461659b1..438bbdbb5 100644 --- a/app/views/contact_mailer/email_updated.html.erb +++ b/app/views/contact_mailer/email_updated.html.erb @@ -6,10 +6,10 @@ uus aadress: <%= @contact.email %>

Eposti aadressile saadetakse domeenidega seotud infot seal hulgas kinnitustaotluseid omaniku vahetuse ja domeeni kustutamise korral. Palun veenduge, et muudatus on korrektne ning probleemide korral pöörduga oma registripidaja poole. Teie registripidaja on <%= @contact.registrar.name %>

-<% if @contact.domain_contacts.present? %> +<% if @contact.related_domain_descriptions.present? %> Muudatusega seotud domeenid:
-<% @contact.domain_contacts.each do |dc| %> - <%= dc.domain.name %> (<%= dc.name %>)
+<% @contact.related_domain_descriptions.each do |domain, desc| %> + <%= domain %> (<%= desc.map { |d| t(:d) }.join(', ') %>)
<% end %> <% end %>
@@ -35,9 +35,11 @@ new address: <% @contact.email %>

E-mail addresses are used to send important information regarding your registered domains including applications for approval of registrant change and domain deletion. Please make sure that the update and contact information are correct. Incase of problems please turn to your registrar. Your registrar is <%= @contact.registrar.name %>

+<% if @contact.related_domain_descriptions.present? %> Domains affected by this update:
-<% @contact.domain_contacts.each do |dc| %> - <%= dc.domain.name %> (<%= dc.name %>)
+<% @contact.related_domain_descriptions.each do |domain, desc| %> + <%= domain %> (<%= desc.map { |d| t(:d) }.join(', ') %>)
+<% end %> <% end %>
Contact information:
diff --git a/app/views/contact_mailer/email_updated.text.erb b/app/views/contact_mailer/email_updated.text.erb index 5d70bca79..a304c5c66 100644 --- a/app/views/contact_mailer/email_updated.text.erb +++ b/app/views/contact_mailer/email_updated.text.erb @@ -6,11 +6,11 @@ uus aadress: <%= @contact.email %> Eposti aadressile saadetakse domeenidega seotud infot seal hulgas kinnitustaotluseid omaniku vahetuse ja domeeni kustutamise korral. Palun veenduge, et muudatus on korrektne ning probleemide korral pöörduga oma registripidaja poole. Teie registripidaja on <%= @contact.registrar.name %> -<% if @contact.domain_contacts.present? %> +<% if @contact.related_domain_descriptions.present? %> Muudatusega seotud domeenid: -<% @contact.domain_contacts.each do |dc| %> - <%= dc.domain.name %> (<%= dc.name %>) -<% end %> + <% @contact.related_domain_descriptions.each do |domain, desc| %> + <%= domain %> (<%= desc.map { |d| t(:d) }.join(', ') %>) + <% end %> <% end %> Kontaktandmed: @@ -35,9 +35,11 @@ new address: <% @contact.email %> E-mail addresses are used to send important information regarding your registered domains including applications for approval of registrant change and domain deletion. Please make sure that the update and contact information are correct. Incase of problems please turn to your registrar. Your registrar is <%= @contact.registrar.name %> +<% if @contact.related_domain_descriptions.present? %> Domains affected by this update: -<% @contact.domain_contacts.each do |dc| %> - <%= dc.domain.name %> (<%= dc.name %>) + <% @contact.related_domain_descriptions.each do |domain, desc| %> + <%= domain %> (<%= desc.map { |d| t(:d) }.join(', ') %>) + <% end %> <% end %> Contact information: diff --git a/spec/models/contact_spec.rb b/spec/models/contact_spec.rb index 107f72106..86fe6fc90 100644 --- a/spec/models/contact_spec.rb +++ b/spec/models/contact_spec.rb @@ -99,6 +99,10 @@ describe Contact do @contact.valid? @contact.errors[:code].should == ['is too long (maximum is 100 characters)'] end + + it 'should have no related domain descriptions' do + @contact.related_domain_descriptions.should == {} + end end context 'with valid attributes' do @@ -189,6 +193,22 @@ describe Contact do # contact.statuses.map(&:value).should == %w(ok linked) end + context 'as birthday' do + before do + @domain = Fabricate(:domain) + end + + it 'should have related domain descriptions hash' do + contact = @domain.registrant + contact.related_domain_descriptions.should == { "#{@domain.name}" => [:registrant] } + end + + it 'should have related domain descriptions hash' do + contact = @domain.contacts.first + contact.related_domain_descriptions.should == { "#{@domain.name}" => [:admin] } + end + end + context 'as birthday' do before :all do @contact.ident_type = 'birthday'