gravier_app/app/controllers/admin/registrants_controller.rb
2017-09-21 12:37:53 +02:00

132 lines
2.5 KiB
Ruby

# -*- encoding : utf-8 -*-
class Admin::RegistrantsController < ApplicationController
layout "admin"
before_filter :auth_admin
http_basic_authenticate_with name: "xavier", password: "852321xb", only: :export_csv
def index
@registrants = Registrant
per_page = (params[:per_page] and params[:per_page] != "") ? params[:per_page] : 100
page = (params[:page] and params[:page] != "") ? params[:page] : 1
if params[:email] and params[:email] != ""
@registrants = @registrants.where("email LIKE ?", "%"+params[:email]+"%")
end
@registrants = @registrants.order(:email).page(page).per(per_page)
end
def show
@registrant = Registrant.find(params[:id])
end
def new
@registrant = Registrant.new
end
def edit
@registrant = Registrant.find(params[:id])
end
def create
@registrant = Registrant.new(params.require(:registrant).permit!)
if @registrant.save
else
render action: "new"
end
end
def update
@registrant = Registrant.find(params[:id])
if @registrant.update_attributes(params.require(:registrant).permit!)
else
render action: "edit"
end
end
def destroy
@registrant = Registrant.find(params[:id])
@registrant.destroy
end
def import
require 'roo'
@xlsx = Roo::Spreadsheet.open("#{Rails.root}/import_donateurs/news.xlsx")
#xlsx = Roo::Excelx.new("./new_prices.xlsx")
# Use the extension option if the extension is ambiguous.
#xlsx = Roo::Spreadsheet.open('./rails_temp_upload', extension: :xlsx)
@xlsx.info
@sheet = @xlsx.sheet(0)
@doublon = 0
@saves = 0
ir = 0
while ir <= (@sheet.last_row) do
ir += 1
row = @sheet.row(ir)
i = 0
@registrant = Registrant.new(:email => row[0], :ancien_site => true, :enabled => true)
if @registrant.save
@saves += 1
else
@doublon += 1
end
end
render :inline => @doublon.to_s+" "+@saves.to_s
end
def export_csv
@csv = CSV.generate(:headers => false, :col_sep => ";") do |csv|
Registrant.where(:enabled => true, :validated => true).all.each do |registrant|
csv << [registrant.email]
end
end
send_data @csv.encode('iso-8859-1', :undef => :replace, :replace => ''), :filename => "export-inscrits-#{Time.now.to_s.to_slug}.csv", :type => 'text/csv; charset=iso-8859-1; header=present'
end
end