mirror of
https://github.com/internetee/registry.git
synced 2025-06-06 12:47:29 +02:00
162 lines
4.3 KiB
Ruby
162 lines
4.3 KiB
Ruby
class Registrar
|
|
class ContactsController < DeppController
|
|
before_action :init_epp_contact
|
|
helper_method :address_processing?
|
|
helper_method :ident_types
|
|
helper_method :domain_filter_params
|
|
|
|
def index
|
|
authorize! :view, Depp::Contact
|
|
|
|
params[:q] ||= {}
|
|
params[:q].delete_if { |_k, v| v.blank? }
|
|
|
|
search_params = params[:q].deep_dup
|
|
|
|
if search_params[:domain_contacts_type_in].is_a?(Array) && search_params[:domain_contacts_type_in].delete('registrant')
|
|
search_params[:registrant_domains_id_not_null] = 1
|
|
end
|
|
|
|
contacts = current_registrar_user.registrar.contacts.includes(:registrar)
|
|
status_list = params[:statuses_contains]
|
|
|
|
if status_list
|
|
contacts_ids = contacts.select { |c| (c.statuses & status_list.to_a) == status_list.to_a }
|
|
.map(&:id)
|
|
contacts = contacts.where(id: contacts_ids)
|
|
end
|
|
|
|
normalize_search_parameters do
|
|
@q = contacts.search(search_params)
|
|
end
|
|
|
|
contacts = @q.result
|
|
|
|
respond_to do |format|
|
|
format.html do
|
|
contacts_per_page = params[:results_per_page].to_i
|
|
@contacts = contacts.page(params[:page])
|
|
@contacts = @contacts.per(contacts_per_page) if contacts_per_page.positive?
|
|
end
|
|
format.csv do
|
|
raw_csv = contacts.to_csv
|
|
send_data raw_csv, filename: 'contacts.csv', type: "#{Mime[:csv]}; charset=utf-8"
|
|
end
|
|
format.pdf do
|
|
raw_html = ApplicationController.render(
|
|
template: 'registrar/contacts/list_pdf',
|
|
assigns: { contacts: contacts },
|
|
formats: [:html]
|
|
)
|
|
raw_pdf = contacts.pdf(raw_html)
|
|
|
|
send_data raw_pdf, filename: 'contacts.pdf'
|
|
end
|
|
end
|
|
end
|
|
|
|
def new
|
|
authorize! :create, Depp::Contact
|
|
@contact = Depp::Contact.new
|
|
end
|
|
|
|
def show
|
|
authorize! :view, Depp::Contact
|
|
@contact = Depp::Contact.find_by_id(params[:id])
|
|
end
|
|
|
|
def edit
|
|
authorize! :edit, Depp::Contact
|
|
@contact = Depp::Contact.find_by_id(params[:id])
|
|
end
|
|
|
|
def create
|
|
authorize! :create, Depp::Contact
|
|
@contact = Depp::Contact.new(contact_params)
|
|
|
|
if @contact.save
|
|
redirect_to registrar_contact_url(@contact.id)
|
|
else
|
|
render 'new'
|
|
end
|
|
end
|
|
|
|
def update
|
|
authorize! :edit, Depp::Contact
|
|
@contact = Depp::Contact.new(contact_params)
|
|
|
|
if @contact.update_attributes(contact_params)
|
|
redirect_to registrar_contact_url(@contact.id)
|
|
else
|
|
render 'edit'
|
|
end
|
|
end
|
|
|
|
def delete
|
|
authorize! :delete, Depp::Contact
|
|
@contact = Depp::Contact.find_by_id(params[:id])
|
|
end
|
|
|
|
def destroy
|
|
authorize! :delete, Depp::Contact
|
|
@contact = Depp::Contact.new(contact_params_for_delete)
|
|
|
|
if @contact.delete
|
|
redirect_to registrar_contacts_url, notice: t(:destroyed)
|
|
else
|
|
render 'delete'
|
|
end
|
|
end
|
|
|
|
protected
|
|
|
|
def domain_filter_params
|
|
params.permit(:domain_filter)
|
|
end
|
|
|
|
private
|
|
|
|
def init_epp_contact
|
|
Depp::Contact.user = depp_current_user
|
|
end
|
|
|
|
def normalize_search_parameters
|
|
ca_cache = params[:q][:valid_to_lteq]
|
|
begin
|
|
end_time = params[:q][:valid_to_lteq].try(:to_date)
|
|
params[:q][:valid_to_lteq] = end_time.try(:end_of_day)
|
|
rescue
|
|
logger.warn('Invalid date')
|
|
end
|
|
|
|
yield
|
|
|
|
params[:q][:valid_to_lteq] = ca_cache
|
|
end
|
|
|
|
def address_processing?
|
|
Contact.address_processing?
|
|
end
|
|
|
|
def ident_types
|
|
Contact::Ident.types
|
|
end
|
|
|
|
def contact_params
|
|
params.require(:depp_contact).permit(:id,
|
|
:name,
|
|
:email,
|
|
:phone,
|
|
:org_name,
|
|
:ident, :ident_type, :ident_country_code,
|
|
:street, :city, :zip, :state, :country_code,
|
|
:password,
|
|
:legal_document,
|
|
:code)
|
|
end
|
|
|
|
def contact_params_for_delete
|
|
params.require(:depp_contact).permit(:id, :password, :legal_document)
|
|
end
|
|
end
|
|
end
|