From 38d3ddd48a4c34ca6dd56470391c345ab73472a6 Mon Sep 17 00:00:00 2001 From: Sylvain Date: Wed, 10 Jul 2019 11:27:45 +0200 Subject: [PATCH] [bug] export members list to excel is broken --- CHANGELOG.md | 1 + app/services/users_export_service.rb | 5 +++-- app/views/exports/users_members.xlsx.axlsx | 11 ++++++----- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f881e301e..9c336cd4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # Changelog Fab Manager +- Fix a bug: unable to export members list - Fix a bug: projects RSS feed fails to render - Fix a bug: abuses reports are not notified to admins - Fix a bug: SubscriptionExpireWorker cannot run due to wrong expiration column in SQL query diff --git a/app/services/users_export_service.rb b/app/services/users_export_service.rb index 0fe2b7dea..312bd3ed2 100644 --- a/app/services/users_export_service.rb +++ b/app/services/users_export_service.rb @@ -50,8 +50,9 @@ class UsersExportService # export members def export_members(export) @members = User.with_role(:member) - .includes(:group, :trainings, :tags, :invoices, :projects, - subscriptions: [:plan], profile: [:address, organization: [:address]]) + .includes(:group, :tags, :projects, :profile, + invoicing_profile: [:invoices, :address, organization: [:address]], + statistic_profile: [:trainings, subscriptions: [:plan]]) ActionController::Base.prepend_view_path './app/views/' # place data in view_assigns diff --git a/app/views/exports/users_members.xlsx.axlsx b/app/views/exports/users_members.xlsx.axlsx index 256bdefd0..2c4b2588e 100644 --- a/app/views/exports/users_members.xlsx.axlsx +++ b/app/views/exports/users_members.xlsx.axlsx @@ -38,6 +38,7 @@ wb.add_worksheet(name: t('export_members.members')) do |sheet| # data rows @members.each do |member| + expiration = member&.subscription&.expired_at data = [ member.id, member.profile.last_name, @@ -45,7 +46,7 @@ wb.add_worksheet(name: t('export_members.members')) do |sheet| member.email, member.is_allow_newsletter, member.statistic_profile.gender ? t('export_members.man') : t('export_members.woman'), - member.profile.age, + member.statistic_profile.age, member.invoicing_profile&.address&.address || '', member.profile.phone, member.profile.website, @@ -53,8 +54,8 @@ wb.add_worksheet(name: t('export_members.members')) do |sheet| member.profile.interest, member.profile.software_mastered, member.group&.name, - member.subscription && member.subscription.expired_at > Time.now ? member.subscription.plan.name : t('export_members.without_subscriptions'), - member.subscription && member.subscription.expired_at > Time.now ? member.subscription.expired_at.to_date : nil, + expiration && Time.now < expiration ? member.subscription.plan.name : t('export_members.without_subscriptions'), + expiration && Time.now < expiration ? member.subscription.expired_at.to_date : nil, member.trainings.map(&:name).join("\n"), member.tags.map(&:name).join("\n"), member.invoices.size, @@ -62,14 +63,14 @@ wb.add_worksheet(name: t('export_members.members')) do |sheet| member.profile.facebook || '', member.profile.twitter || '', member.profile.echosciences || '', - member.invoicing_profile&.organization.name || '', + member.invoicing_profile&.organization&.name || '', member.invoicing_profile&.organization&.address&.address || '' ] styles = [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, date, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil] types = %i[integer string string string boolean string integer string string string string string - string string string date string string integer boolean string string string string string string] + string string string date string string integer string string string string string string string] sheet.add_row data, style: styles, types: types end