1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-02-20 14:54:15 +01:00

[ongoing] members export full infos

This commit is contained in:
Sylvain 2016-07-12 17:46:19 +02:00
parent b489b5d270
commit 3413c3040b
4 changed files with 63 additions and 11 deletions

View File

@ -106,7 +106,7 @@ class API::MembersController < API::ApiController
def export_members
authorize :export
@members = User.with_role(:member).includes(:group, :subscriptions, :profile)
@members = User.with_role(:member).includes(:group, :trainings, :tags, :invoices, :projects, :subscriptions => [:plan], :profile => [:address])
render xlsx: 'export_members.xlsx', filename: "export_members.xlsx"
end

View File

@ -8,27 +8,57 @@ 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.phone'), t('export_members.group'),
t('export_members.subscription'), t('export_members.subscription_end_date'), t('export_members.validated_trainings')]
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.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.phone,
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.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, date, nil]
types = [:integer, :string, :string, :string, :string, :integer, :string, :string, :string, :date, :string]
styles = [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,
:date,
:string, :string,
:integer,
:string,
:string, :string, :string]
sheet.add_row data, :style => styles, :types => types
end

View File

@ -120,11 +120,22 @@ en:
email: "E-mail"
gender: "Gender"
age: "Age"
address: "Address"
phone: "Phone"
website: "Website"
job: "Job"
interests: "Interests"
cad_software_mastered: "CAD Softwares mastered"
group: "Group"
subscription: "Subscription"
subscription_end_date: "Subscription end date"
validated_trainings: "Validated trainings"
tags: "Tags"
number_of_invoices: "Number of invoices"
projects: "Projects"
facebook: "Facebook"
twitter: "Twitter"
echo_sciences: "Echosciences"
man: "Man"
woman: "Woman"
without_subscriptions: "Without subscriptions"

View File

@ -120,11 +120,22 @@ fr:
email: "Courriel"
gender: "Genre"
age: "Âge"
address: "Adresse"
phone: "Tel."
website: "Site web"
job: "Profession"
interests: "Centres d'intérêts"
cad_software_mastered: "Logiciels de conception maîtrisés"
group: "Groupe"
subscription: "Abonnement"
subscription_end_date: "Date de fin de l'abonnement"
validated_trainings: "Formations validées"
tags: "Étiquettes"
number_of_invoices: "Nombre de factures"
projects: "Projets"
facebook: "Facebook"
twitter: "Twitter"
echo_sciences: "Echosciences"
man: "Homme"
woman: "Femme"
without_subscriptions: "Sans Abonnement"