mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2024-11-29 10:24:20 +01:00
54 lines
2.7 KiB
Plaintext
54 lines
2.7 KiB
Plaintext
wb = xlsx_package.workbook
|
|
|
|
header = wb.styles.add_style :b => true, :bg_color => Stylesheet.primary.upcase.gsub('#', 'FF'), :fg_color => 'FFFFFFFF'
|
|
date = wb.styles.add_style :format_code => Rails.application.secrets.excel_date_format
|
|
|
|
wb.add_worksheet(name: t('export_members.members')) do |sheet|
|
|
|
|
## data table
|
|
# heading labels
|
|
columns = [t('export_members.id'), t('export_members.surname'), t('export_members.first_name'), t('export_members.email'),
|
|
t('export_members.gender'), t('export_members.age'), t('export_members.address'), t('export_members.phone'),
|
|
t('export_members.website'), t('export_members.job'), t('export_members.interests'),
|
|
t('export_members.cad_software_mastered'), t('export_members.group'), t('export_members.subscription'),
|
|
t('export_members.subscription_end_date'), t('export_members.validated_trainings'), t('export_members.tags'),
|
|
t('export_members.number_of_invoices'), t('export_members.projects'), t('export_members.facebook'),
|
|
t('export_members.twitter'), t('export_members.echo_sciences')]
|
|
sheet.add_row columns, :style => header
|
|
|
|
# data rows
|
|
@members.each do |member|
|
|
data = [
|
|
member.id, member.profile.last_name, member.profile.first_name,
|
|
member.email, member.profile.gender ? t('export_members.man') : t('export_members.woman'), member.profile.age,
|
|
member.profile.address ? member.profile.address.address : '', member.profile.phone, member.profile.website,
|
|
member.profile.job, member.profile.interest, member.profile.software_mastered, member.group.name,
|
|
(member.subscription and member.subscription.expired_at > Time.now) ? member.subscription.plan.name : t('export_members.without_subscriptions'),
|
|
(member.subscription and member.subscription.expired_at > Time.now) ? member.subscription.expired_at.to_date : nil,
|
|
member.trainings.map(&:name).join("\n"), member.tags.map(&:name).join("\n"), member.invoices.size,
|
|
member.projects.map(&:name).join("\n"), member.profile.facebook || '', member.profile.twitter || '',
|
|
member.profile.echosciences || ''
|
|
]
|
|
styles = [nil, nil, nil,
|
|
nil, nil, nil,
|
|
nil, nil, nil,
|
|
nil, nil, nil, nil,
|
|
nil,
|
|
date,
|
|
nil, nil, nil,
|
|
nil, nil, nil,
|
|
nil]
|
|
types = [:integer, :string, :string,
|
|
:string, :string, :integer,
|
|
:string, :string, :string,
|
|
:string, :string, :string, :string,
|
|
:string,
|
|
:date,
|
|
:string, :string, :integer,
|
|
:string, :string, :string,
|
|
:string]
|
|
|
|
sheet.add_row data, :style => styles, :types => types
|
|
end
|
|
end
|