Logging contacts and addresses,view undeleted ones

This commit is contained in:
Andres Keskküla 2014-09-26 15:01:02 +03:00
parent bb3d2cc88a
commit d94eb22fc6
14 changed files with 263 additions and 3 deletions

View file

@ -0,0 +1,17 @@
class Admin::ContactVersionsController < AdminController
before_action :set_contact
def index
@q = Contact.search(params[:q])
@contacts = @q.result.page(params[:page])
end
def show
@versions = @contact.versions
end
private
def set_contact
@contact = Contact.find(params[:id])
end
end

View file

@ -10,8 +10,7 @@ class Address < ActiveRecord::Base
belongs_to :contact
belongs_to :country
# TODO: validate inclusion of :type in LONG_TYPES or smth similar
# validates_inclusion_of :type, in: TYPES
has_paper_trail class_name: 'AddressVersion'
class << self
# def validate_postal_info_types(parsed_frame)

View file

@ -0,0 +1,4 @@
class AddressVersion < PaperTrail::Version
self.table_name = :address_versions
self.sequence_name = :address_version_id_seq
end

View file

@ -1,6 +1,7 @@
class Contact < ActiveRecord::Base
# TODO: Foreign contact will get email with activation link/username/temp password
# TODO: Phone number validation, in first phase very minimam in order to support current registries
# TODO: Validate presence of name
include EppErrors
@ -32,6 +33,9 @@ class Contact < ActiveRecord::Base
delegate :street, to: :address#, prefix: true
delegate :zip, to: :address#, prefix: true
# archiving
has_paper_trail class_name: 'AddressVersion'
IDENT_TYPE_ICO = 'ico'
IDENT_TYPES = [
IDENT_TYPE_ICO, # Company registry code (or similar)

View file

@ -0,0 +1,4 @@
class ContactVersion < PaperTrail::Version
self.table_name = :contact_versions
self.sequence_name = :contact_version_id_seq
end

View file

@ -0,0 +1,40 @@
.row
.col-sm-6
%h2.text-center-xs= t('shared.contacts_history')
= render 'admin/contacts/partials/search'
.col-sm-6
%h2.text-right.text-center-xs
= link_to(t('shared.add'), new_admin_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'}
= sort_link(@q, 'name', t('shared.name'))
%th{class: 'col-xs-1'}
= sort_link(@q, 'code', t('shared.code'))
%th{class: 'col-xs-1'}
whodunnit
= #sort_link(@q, 'ident', t('shared.identity_code'))
%th{class: 'col-xs-1'}
event
= #sort_link(@q, 'email', t('shared.email'))
%th{class: 'col-xs-2'}
created_at
%th{class: 'col-xs-1'}
= t('shared.action')
%tbody
- @contacts.each do |x|
%tr
%td= x.name #link_to(x, admin_contact_path(x))
%td= x.code #link_to(x, admin_contact_path(x))
%td= x.versions.last.whodunnit if x.versions.last
%td= x.versions.last.event if x.versions.last
%td= x.versions.last.created_at if x.versions.last
%td= link_to(t('shared.history'), admin_contact_version_path(x), class: 'btn btn-primary btn-xs')
.row
.col-md-12
= paginate @contacts

View file

@ -0,0 +1,65 @@
.row
.col-sm-6
%h2.text-center-xs
= "#{t('shared.contact_details')}"
.col-sm-6
%h2.text-right.text-center-xs
%hr
.row
.col-md-12
.table-responsive
%table.table.table-hover.table-bordered.table-condensed
%thead
%tr
%th
whodunnit
%th
event
%th
created_at
%tbody
- @versions.each_with_index do |version, index|
- contact = version.reify(has_one: true)
- if contact
%tr.clickable{"data-target" => "#accordion-#{index}", "data-toggle" => "collapse"}
%td=version.whodunnit #contact.name if contact
%td=version.event #contact.ident if contact
%td=version.created_at #contact.email if contact
%tr
%td{colspan: "3"}
.collapse{ id: "accordion-#{index}" }
.row
.col-md-6
%dl.dl-horizontal
%dt= t('shared.name')
%dd= contact.name
%dt= t('shared.ident')
%dd= contact.ident
%dt= t('shared.phone')
%dd= contact.phone
%dt= t('shared.email')
%dd= contact.email
%dt= t('shared.fax')
%dd= contact.fax
%dt= t('shared.org_name')
%dd= contact.org_name
.col-md-6
%dl.dl-horizontal
- if contact.address
%dt= t('shared.city')
%dd= contact.address.city
%dt= t('shared.street')
%dd= contact.address.street
- else
%tr
%td=version.whodunnit #contact.name if contact
%td=version.event #contact.ident if contact
%td=version.created_at #contact.email if contact

View file

@ -43,6 +43,19 @@
= link_to t('shared.epp_users'), admin_epp_users_path
%li
= link_to t('shared.users'), admin_users_path
%li.dropdown
%a.dropdown-toggle{"data-toggle" => "dropdown", href: "#"}
= t('shared.archives')
%span.caret
%ul.dropdown-menu{role: "menu"}
%li.dropdown-header= t('shared.domain')
%li
= link_to t('shared.domains'), '#'
%li.dropdown-header= t('shared.contact')
%li
= link_to t('shared.contacts'), admin_contact_versions_path
%ul.nav.navbar-nav.navbar-right
%li= link_to t('shared.log_out', user: current_user), '/logout'
/ /.nav-collapse