132 lines
2.5 KiB
Ruby
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
|