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'