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:
parent
b489b5d270
commit
3413c3040b
@ -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
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
Loading…
x
Reference in New Issue
Block a user