From 404e52faf6b01f42e2f79c9836358b94765b2a5c Mon Sep 17 00:00:00 2001 From: Stas Date: Wed, 10 Feb 2016 16:03:53 +0200 Subject: [PATCH 1/3] 105842700-statuses_and_domains --- .../registrants/partials/_domains.haml | 30 +++++++++++++++++++ .../registrants/partials/_statuses.haml | 21 +++++++++++++ app/views/registrant/registrants/show.haml | 7 ++++- 3 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 app/views/registrant/registrants/partials/_domains.haml create mode 100644 app/views/registrant/registrants/partials/_statuses.haml diff --git a/app/views/registrant/registrants/partials/_domains.haml b/app/views/registrant/registrants/partials/_domains.haml new file mode 100644 index 000000000..d0180532d --- /dev/null +++ b/app/views/registrant/registrants/partials/_domains.haml @@ -0,0 +1,30 @@ +- domains = contact.all_domains(page: params[:domain_page], per: 20, params: params) +#contacts.panel.panel-default + .panel-heading + .pull-left + = t(:domains) + .pull-right + = form_tag request.path, method: :get do + = select_tag :domain_filter, options_for_select(%w(Registrant AdminDomainContact TechDomainContact), selected: params[:domain_filter]), + include_blank: true, class: 'form-control2 selectize2' + %button.btn.btn-primary + %span.glyphicon.glyphicon-search + .clearfix + + .table-responsive + %table.table.table-hover.table-bordered.table-condensed + %thead + %tr + %th{class: 'col-xs-3'}=custom_sort_link t(:domain_name), :name + %th{class: 'col-xs-3'}=custom_sort_link t(:registrar), :registrar_name + %th{class: 'col-xs-3'}=custom_sort_link t(:valid_to), :valid_to + %th{class: 'col-xs-3'}= t(:roles) + %tbody + - domains.each do |x| + %tr + %td= link_to(x.name, [:registrant, x]) + %td= link_to(x.registrar, [:registrant, x.registrar]) + %td= l(x.valid_to, format: :short) + %td= x.roles.join(", ") + += paginate domains, param_name: :domain_page \ No newline at end of file diff --git a/app/views/registrant/registrants/partials/_statuses.haml b/app/views/registrant/registrants/partials/_statuses.haml new file mode 100644 index 000000000..c39075754 --- /dev/null +++ b/app/views/registrant/registrants/partials/_statuses.haml @@ -0,0 +1,21 @@ +- panel_class = contact.errors.messages[:statuses] ? 'panel-danger' : 'panel-default' +#contact_statuses.panel{class: panel_class} + .panel-heading.clearfix + = t(:statuses) + .table-responsive + %table.table.table-hover.table-bordered.table-condensed + %thead + %tr + %th{class: 'col-xs-6'}= t(:status) + %th{class: 'col-xs-6'}= t(:notes) + %tbody + - contact.statuses.each do |status| + %tr + %td= status + %td= contact.status_notes[status] + + - if contact.errors.messages[:statuses] + %tfoot + - @domain.errors.messages[:statuses].each do |s| + %tr + %td{colspan: 4}= s diff --git a/app/views/registrant/registrants/show.haml b/app/views/registrant/registrants/show.haml index 5b2a527ca..3aa458973 100644 --- a/app/views/registrant/registrants/show.haml +++ b/app/views/registrant/registrants/show.haml @@ -72,4 +72,9 @@ %dd= @contact.state %dt= t(:country) - %dd= @contact.country \ No newline at end of file + %dd= @contact.country + +.row + .col-md-12= render 'registrant/registrants/partials/statuses', contact: @contact +.row + .col-md-12= render 'registrant/registrants/partials/domains', contact: @contact \ No newline at end of file From 81a19983a7888228d76684d15874a330b131089b Mon Sep 17 00:00:00 2001 From: Stas Date: Fri, 12 Feb 2016 12:34:17 +0200 Subject: [PATCH 2/3] 105842700-api_link_delete --- app/views/registrant/contacts/partials/_general.haml | 4 ++-- app/views/registrant/registrants/show.haml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/views/registrant/contacts/partials/_general.haml b/app/views/registrant/contacts/partials/_general.haml index 36192cb2c..131501232 100644 --- a/app/views/registrant/contacts/partials/_general.haml +++ b/app/views/registrant/contacts/partials/_general.haml @@ -31,13 +31,13 @@ %dd = l(@contact.created_at, format: :short) by - = creator_link(@contact) + = @contact.name %dt= t(:updated) %dd = l(@contact.updated_at, format: :short) by - = updator_link(@contact) + = @contact.name %dt= t(:registrar) %dd diff --git a/app/views/registrant/registrants/show.haml b/app/views/registrant/registrants/show.haml index 3aa458973..d01dba82e 100644 --- a/app/views/registrant/registrants/show.haml +++ b/app/views/registrant/registrants/show.haml @@ -35,13 +35,13 @@ %dd = l(@contact.created_at, format: :short) by - = creator_link(@contact) + = @contact.name %dt= t(:updated) %dd = l(@contact.updated_at, format: :short) by - = updator_link(@contact) + = @contact.name %dt= t(:registrar) %dd From e077ba7ee8f00da1353e55b2877fb75696802f04 Mon Sep 17 00:00:00 2001 From: Stas Date: Mon, 15 Feb 2016 12:38:05 +0200 Subject: [PATCH 3/3] 105842700-contact_and_domain_query_change --- .../registrant/contacts_controller.rb | 5 ++-- app/models/business_registry_cache.rb | 12 ++++++--- app/models/contact.rb | 25 +++++++++++++++++++ .../registrants/partials/_domains.haml | 2 +- 4 files changed, 37 insertions(+), 7 deletions(-) diff --git a/app/controllers/registrant/contacts_controller.rb b/app/controllers/registrant/contacts_controller.rb index dfef2723a..fd4d32a37 100644 --- a/app/controllers/registrant/contacts_controller.rb +++ b/app/controllers/registrant/contacts_controller.rb @@ -1,14 +1,15 @@ class Registrant::ContactsController < RegistrantController def show - @contact = Contact.where(id: contacts).find(params[:id]) + @contact = Contact.where(id: contacts).find_by(id: params[:id]) + @current_user = current_user authorize! :read, @contact end def contacts ident_cc, ident = @current_user.registrant_ident.to_s.split '-' begin - BusinessRegistryCache.fetch_by_ident_and_cc(ident, ident_cc).associated_contacts + DomainContact.where(domain_id: BusinessRegistryCache.fetch_by_ident_and_cc(ident, ident_cc).associated_domain_ids).pluck(:contact_id) rescue Soap::Arireg::NotAvailableError => error flash[:notice] = I18n.t(error.json[:message]) Rails.logger.fatal("[EXCEPTION] #{error.to_s}") diff --git a/app/models/business_registry_cache.rb b/app/models/business_registry_cache.rb index cab39e7ee..f73a5cfe8 100644 --- a/app/models/business_registry_cache.rb +++ b/app/models/business_registry_cache.rb @@ -28,16 +28,20 @@ class BusinessRegistryCache < ActiveRecord::Base contact_ids end - def associated_domains - domains = [] + def associated_domain_ids + domain_ids = [] contact_ids = associated_contacts unless contact_ids.blank? - domains = DomainContact.distinct.where(contact_id: contact_ids).pluck(:domain_id) + domain_ids = DomainContact.distinct.where(contact_id: contact_ids).pluck(:domain_id) end - Domain.includes(:registrar, :registrant).where(id: domains) + domain_ids + end + + def associated_domains + Domain.includes(:registrar, :registrant).where(id: associated_domain_ids) end class << self diff --git a/app/models/contact.rb b/app/models/contact.rb index 1d6f069e5..035fedf59 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -407,6 +407,31 @@ class Contact < ActiveRecord::Base domains end + def all_registrant_domains(page: nil, per: nil, params: {}, registrant: nil) + + if registrant + sorts = params.fetch(:sort, {}).first || [] + sort = Domain.column_names.include?(sorts.first) ? sorts.first : "valid_to" + order = {"asc"=>"desc", "desc"=>"asc"}[sorts.second] || "desc" + + domain_ids = DomainContact.distinct.where(contact_id: registrant.id).pluck(:domain_id) + + domains = Domain.where(id: domain_ids).includes(:registrar).page(page).per(per) + if sorts.first == "registrar_name".freeze + domains = domains.includes(:registrar).where.not(registrars: {id: nil}).order("registrars.name #{order} NULLS LAST") + else + domains = domains.order("#{sort} #{order} NULLS LAST") + end + + domain_c = Hash.new([]) + registrant_domains.where(id: domains.map(&:id)).each{|d| domain_c[d.id] |= ["Registrant".freeze] } + DomainContact.where(contact_id: id, domain_id: domains.map(&:id)).each{|d| domain_c[d.domain_id] |= [d.type] } + domains.each{|d| d.roles = domain_c[d.id].uniq} + domains + end + [] + end + def set_linked statuses << LINKED if statuses.detect { |s| s == LINKED }.blank? end diff --git a/app/views/registrant/registrants/partials/_domains.haml b/app/views/registrant/registrants/partials/_domains.haml index d0180532d..e528a331d 100644 --- a/app/views/registrant/registrants/partials/_domains.haml +++ b/app/views/registrant/registrants/partials/_domains.haml @@ -1,4 +1,4 @@ -- domains = contact.all_domains(page: params[:domain_page], per: 20, params: params) +- domains = contact.all_registrant_domains(page: params[:domain_page], per: 20, params: params, current_user: current_user) #contacts.panel.panel-default .panel-heading .pull-left