This repository has been archived on 2021-11-24. You can view files and clone it, but cannot push or open issues or pull requests.
phone_app/app/controllers/admin/v_contacts_controller.rb
2021-08-23 10:26:02 +02:00

214 lines
5.4 KiB
Ruby

# -*- encoding : utf-8 -*-
class Admin::VContactsController < ApplicationController
layout "admin"
before_action :auth_admin
before_action :admin_space
def admin_space
@admin_space = "cartes"
end
def index
@v_contacts = VContact.all
params[:search][:enabled] = "Oui" if !params[:search][:enabled]
if params[:search][:enabled].to_s == "Oui"
@v_contacts = @v_contacts.where(:enabled => true)
elsif params[:search][:enabled].to_s == "Non"
@v_contacts = @v_contacts.where(:enabled => false)
end
if params[:code].to_s != ""
@v_contacts = @v_contacts.where("codemanaginn LIKE ?","%#{params[:code]}%")
end
if params[:name].to_s != ""
@v_contacts = @v_contacts.where("nom LIKE ?","%#{params[:name]}%")
end
if params[:firstname].to_s != ""
@v_contacts = @v_contacts.where("prenom LIKE ?","%#{params[:firstname]}%")
end
if params[:city].to_s != ""
@v_contacts = @v_contacts.where("ville LIKE ?", "%#{params[:city]}%")
end
if params[:cp].to_s != ""
@v_contacts = @v_contacts.where("codepostal LIKE ?", "%#{params[:cp]}%")
end
if !current_admin.super_admin
@v_contacts = @v_contacts.where(:codeproprietaire => current_admin.societes.pluck(:socmanaginn))
end
if params[:search][:codeproprietaire].to_s != ""
if params[:search][:codeproprietaire].to_s == "null"
@v_contacts = @v_contacts.where(:codeproprietaire => nil)
else
@v_contacts = @v_contacts.where(:codeproprietaire => params[:search][:codeproprietaire])
end
end
@v_contacts = sort_by_sorting(@v_contacts, "id DESC")
respond_to do |format|
format.html{
params[:search][:per_page] = params[:search][:per_page] || 100
per_page = params[:search][:per_page]
page = (params[:page] and params[:page] != "") ? params[:page] : 1
@v_contacts = @v_contacts.page(page).per(per_page)
}
format.csv {
@headers = []
@columns = []
@exclude = (!current_admin.super_admin ? [:enabled, :id, :codeproprietaire, :corbeille, :datecreation,:v_societe] : [] )
VContact.qi_table_order.each do |key, value|
if value.instance_of? Hash
name = value[:name]
else
name = value
end
if name != "Actions" and !@exclude.include?(key.to_sym)
@headers << name.to_s
@columns << key
end
end
xlsx_package = Axlsx::Package.new
wb = xlsx_package.workbook
wb.add_worksheet(name: "import") do |sheet|
sheet.add_row @headers
@v_contacts.each do |v_contact|
line = []
@columns.each do |column|
if (v_contact.respond_to?("csv_"+column.to_s))
line << v_contact.send("csv_"+column.to_s)
elsif (v_contact.respond_to?(column))
if v_contact.send(column.to_s).class.to_s == "BigDecimal"
line << v_contact.send(column.to_s).to_s.gsub('.', ',')
else
line << v_contact.send(column.to_s)
end
else
line << column.to_s
end
end
sheet.add_row line, types: line.map{|t| self.cell_type_from_value(t)}
end
end
@final_file = "#{Rails.root}/private_medias/export-cartes-#{Time.now.to_s.to_slug}.xlsx"
xlsx_package.serialize(@final_file)
send_file @final_file
}
end
end
def show
@v_contact = VContact.find(params[:id])
end
def generate_ba
@v_contact = VContact.find(params[:id])
@v_contact.generate_ba
redirect_back :fallback_location => "/"
end
def new
@v_contact = VContact.new(:codeproprietaire => (params[:codesociete] ? params[:codesociete] : (current_admin.societe ? current_admin.societe.socmanaginn : "")))
end
def edit
@v_contact = VContact.find(params[:id])
end
def create
@v_contact = VContact.new(params.require(:v_contact).permit!)
if @v_contact.save
@societe = @v_contact.societe
else
render action: "new"
end
end
def update
@v_contact = VContact.find(params[:id])
if @v_contact.update_attributes(params.require(:v_contact).permit!)
@societe = @v_contact.societe
else
render action: "edit"
end
end
def destroy
@v_contact = VContact.find(params[:id])
@v_contact.destroy
end
def autocomplete
@v_contacts = VContact
result = []
if !current_admin.super_admin
@v_contacts = @v_contacts.where(:codeproprietaire => current_admin.societes.pluck(:socmanaginn))
end
@v_contacts = @v_contacts.where("codemanaginn LIKE ? or nom LIKE ?","%#{params[:search]}%", "%#{params[:search]}%")
@v_contacts.all.each do |v_contact|
result << {:member_label => v_contact.member_label, :id => v_contact.id }
end
respond_to do |format|
format.json { render json: result}
end
end
end