xlsx export for registrations list

This commit is contained in:
Ancor Gonzalez Sosa 2013-07-16 09:47:23 +02:00
parent b9cd54a256
commit 9af4393928
6 changed files with 47 additions and 13 deletions

View file

@ -4,15 +4,8 @@ class Admin::RegistrationsController < ApplicationController
def show
session[:return_to] ||= request.referer
@pdf_filename = "#{@conference.title}.pdf"
@registrations = @conference.registrations.all(:joins => :person,
:order => "registrations.created_at ASC",
:select => "registrations.*,
people.last_name AS last_name,
people.first_name AS first_name,
people.public_name AS public_name,
people.email AS email")
@attended = @conference.registrations.where("attended = ?", true)
@registrations = @conference.registrations.includes(:person).order("registrations.created_at ASC")
@attended = @conference.registrations.where("attended = ?", true).count
@headers = %w[attended name email attending_social_events attending_with_partner need_access other_needs arrival departure]
end

View file

@ -15,6 +15,13 @@ class Registration < ActiveRecord::Base
accepts_nested_attributes_for :person
accepts_nested_attributes_for :supporter_registration
accepts_nested_attributes_for :social_events
delegate :first_name, :to => :person
delegate :last_name, :to => :person
delegate :public_name, :to => :person
delegate :email, :to => :person
delegate :irc_nickname, :to => :person
delegate :company, :to => :person
alias_attribute :with_partner, :attending_with_partner
alias_attribute :need_access, :handicapped_access_required

View file

@ -3,14 +3,14 @@
.pull-right{:style=>"margin-top:20px; margin-bottom:20px;"}
= link_to "New", admin_users_new_path(@conference.short_title), :class => "btn btn-primary"
= link_to "Export PDF", admin_conference_registrations_path(@conference.short_title, :format => :pdf), :class => "btn btn-success"
= link_to "Export xlsx", {:format => :xlsx}, :class => "btn btn-success"
.row-fluid
.span12
%h2
Registrations
- if @registrations
= "(#{@registrations.length})"
- if @attended
= " - Attended (#{@attended.length})"
= " - Attended (#{@attended})"
%table.table.table-striped.table-bordered.table-hover#registrations
%thead
%th
@ -49,4 +49,4 @@
"bPaginate": false,
"bLengthChange": false
} );
} );
} );

View file

@ -0,0 +1,25 @@
wb = xlsx_package.workbook
wb.add_worksheet(:name => "registrations") do |sheet|
bold_style = wb.styles.add_style(:b => true)
row = ["Attended", "Name", "Nickname", "Affilation", "Email", "Social events",
"With partner", "Needs access", "Other needs", "Arrival", "Departure"]
sheet.add_row row, :style => bold_style
@registrations.each do |reg|
row = []
row << reg.attended
row << "#{reg.last_name} #{reg.first_name} (#{reg.public_name})"
row << reg.irc_nickname
row << reg.company
row << reg.email
row << reg.attending_social_events
row << reg.attending_with_partner
row << reg.need_access
row << reg.other_needs
row << reg.arrival
row << reg.departure
sheet.add_row row
end
sheet.column_info[8].width = [sheet.column_info[8].width, 30].min
end