From a426862aa8a370cfc89fd8298e99e26b46b02ac7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andres=20Keskk=C3=BCla?= Date: Thu, 2 Oct 2014 16:19:23 +0300 Subject: [PATCH] Basic history display for eedirekt users --- .../client/contact_versions_controller.rb | 19 +++++++++++ app/models/contact.rb | 15 --------- app/models/contact_version.rb | 26 +++++++++++++++ app/views/client/contact_versions/index.haml | 33 +++++++++++++++++++ app/views/client/contact_versions/show.haml | 24 ++++++++++++++ config/routes.rb | 2 ++ 6 files changed, 104 insertions(+), 15 deletions(-) create mode 100644 app/controllers/client/contact_versions_controller.rb create mode 100644 app/views/client/contact_versions/index.haml create mode 100644 app/views/client/contact_versions/show.haml diff --git a/app/controllers/client/contact_versions_controller.rb b/app/controllers/client/contact_versions_controller.rb new file mode 100644 index 000000000..e71a7682d --- /dev/null +++ b/app/controllers/client/contact_versions_controller.rb @@ -0,0 +1,19 @@ +class Client::ContactVersionsController < ClientController + before_action :set_version, only: [:show] + + def index + @versions = ContactVersion.registrar_events(current_user.registrar.id) + @versions.flatten! + end + + def show + @event = params[:event] + @contact = @version.reify(has_one: true) unless @event == 'create' + end + + private + + def set_version + @version = ContactVersion.find(params[:id]) + end +end diff --git a/app/models/contact.rb b/app/models/contact.rb index a12701b00..17dd506ed 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -48,21 +48,6 @@ class Contact < ActiveRecord::Base CONTACT_TYPE_ADMIN = 'admin' CONTACT_TYPES = [CONTACT_TYPE_TECH, CONTACT_TYPE_ADMIN] - # TEMP Scope until confusion with contact name is sorted out - # scope :named, -> { joins(:international_address).uniq.all } - - # TEMP METHOD for transaction to STI - #def address - # international_address - #end - ## - - #def presence_of_one_address - # return true if local_address || international_address - # errors.add(:local_address, 'Local or international address must be present') - # errors.add(:international_address, 'Local or international address must be present') - #end - def ident_must_be_valid # TODO: Ident can also be passport number or company registry code. # so have to make changes to validations (and doc/schema) accordingly diff --git a/app/models/contact_version.rb b/app/models/contact_version.rb index f97e9c027..fc84be9ad 100644 --- a/app/models/contact_version.rb +++ b/app/models/contact_version.rb @@ -3,4 +3,30 @@ class ContactVersion < PaperTrail::Version self.table_name = :contact_versions self.sequence_name = :contact_version_id_seq + + class << self + + def registrar_events(id) + registrar = Registrar.find(id) + @events = [] + registrar.users.each { |user| @events << user_contacts(user.id) } + registrar.epp_users.each { |user| @events << user_contacts(user.id) } + @events + end + + def user_events(id, epp_user_id=nil) + contacts = [] + contacts << user_contacts(id) + contacts << epp_user_contacts(epp_user_id) if epp_user_id + contacts + end + + def user_contacts(id) + where(whodunnit: id.to_s) + end + + def epp_user_contacts(id) + where(whodunnit: "#{id}-EppUser") + end + end end diff --git a/app/views/client/contact_versions/index.haml b/app/views/client/contact_versions/index.haml new file mode 100644 index 000000000..c8dac47b5 --- /dev/null +++ b/app/views/client/contact_versions/index.haml @@ -0,0 +1,33 @@ +.row + .col-sm-6 + %h2.text-center-xs= t('shared.contacts') + =# render 'admin/contacts/partials/search' + .col-sm-6 + %h2.text-right.text-center-xs + = link_to(t('shared.create_new_contact'), new_client_contact_path, class: 'btn btn-primary') +%hr +.row + .col-md-12 + .table-responsive + %table.table.table-hover.table-bordered.table-condensed + %thead + %tr + %th{class: 'col-xs-2'} + = t('shared.event') + %th{class: 'col-xs-2'} + = t('shared.whodunnit') + %th{class: 'col-xs-2'} + = t('shared.created_at') + %th{class: 'col-xs-1'} + = t('shared.details') + =# sort_link(@q, 'email', t('shared.email')) + %tbody + - @versions.each do |x| + %tr + %td= x.event + %td= x.whodunnit + %td= l(x.created_at, format: :short) + %td= link_to(t('shared.details'), client_contact_version_path(x, event: x.event)) +.row + .col-md-12 + =# paginate @contacts diff --git a/app/views/client/contact_versions/show.haml b/app/views/client/contact_versions/show.haml new file mode 100644 index 000000000..958ce31be --- /dev/null +++ b/app/views/client/contact_versions/show.haml @@ -0,0 +1,24 @@ +.row + .col-sm-6 + %h2.text-center-xs= t('shared.contacts') +%hr +.row + .col-sm-6 + .panel.panel-default + .panel-heading + %h3.panel-title= t('shared.version') + .panel-body + %dl.dl-horizontal + %dt= t('shared.whodunnit') + %dd= @version.whodunnit + %dt= t('shared.event') + %dd= @version.event + %dt= t('shared.created_at') + %dd= l(@version.created_at, format: :short) + - if @event != 'create' && @contact.address + - # TODO fix address not being available with reify + = render 'admin/contacts/partials/address' + + + + .col-sm-6= render 'admin/contacts/partials/general' unless @event == 'create' diff --git a/config/routes.rb b/config/routes.rb index db3ae27f0..ad20b78f0 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -48,6 +48,8 @@ Rails.application.routes.draw do end end + resources :contact_versions + root 'domains#index' end