From 2ff224ec4734d29c86bc8e6f3e72dccda1594f66 Mon Sep 17 00:00:00 2001 From: Eric Leroy-Terquem Date: Mon, 4 Nov 2024 18:02:42 +0100 Subject: [PATCH] refactor(manager data exports): extract method to generate csv --- .../manager/administrateurs_controller.rb | 16 ++++------------ .../manager/application_controller.rb | 9 +++++++++ .../manager/instructeurs_controller.rb | 16 ++++------------ 3 files changed, 17 insertions(+), 24 deletions(-) diff --git a/app/controllers/manager/administrateurs_controller.rb b/app/controllers/manager/administrateurs_controller.rb index 23b047f96..e4e84f86c 100644 --- a/app/controllers/manager/administrateurs_controller.rb +++ b/app/controllers/manager/administrateurs_controller.rb @@ -42,24 +42,16 @@ module Manager def export_last_half_year administrateurs = Administrateur.joins(:user).where(created_at: 6.months.ago..).where.not(users: { email_verified_at: nil }) - csv = CSV.generate(headers: true) do |csv| - csv << ['ID', 'Email', 'Date de création'] - administrateurs.each do |administrateur| - csv << [administrateur.id, administrateur.email, administrateur.created_at] - end - end + + csv = generate_csv(administrateurs) send_data csv, filename: "administrateurs_recents_#{Date.today.strftime('%d-%m-%Y')}.csv" end def export_with_publiee_procedure administrateurs = Administrateur.joins(:user).where.not(users: { email_verified_at: nil }).joins(:procedures).where(procedures: { aasm_state: [:publiee] }) - csv = CSV.generate(headers: true) do |csv| - csv << ['ID', 'Email', 'Date de création'] - administrateurs.each do |administrateur| - csv << [administrateur.id, administrateur.email, administrateur.created_at] - end - end + + csv = generate_csv(administrateurs) send_data csv, filename: "administrateurs_actifs_#{Date.today.strftime('%d-%m-%Y')}.csv" end diff --git a/app/controllers/manager/application_controller.rb b/app/controllers/manager/application_controller.rb index 5586966e2..c10ebfffb 100644 --- a/app/controllers/manager/application_controller.rb +++ b/app/controllers/manager/application_controller.rb @@ -56,5 +56,14 @@ module Manager payload[:to_log] = to_log end + + def generate_csv(users) + CSV.generate(headers: true) do |csv| + csv << ['ID', 'Email', 'Date de création'] + users.each do |user| + csv << [user.id, user.email, user.created_at] + end + end + end end end diff --git a/app/controllers/manager/instructeurs_controller.rb b/app/controllers/manager/instructeurs_controller.rb index 4c72a1662..072df90fc 100644 --- a/app/controllers/manager/instructeurs_controller.rb +++ b/app/controllers/manager/instructeurs_controller.rb @@ -25,24 +25,16 @@ module Manager def export_last_half_year instructeurs = Instructeur.joins(:user).where(created_at: 6.months.ago..).where.not(users: { email_verified_at: nil }) - csv = CSV.generate(headers: true) do |csv| - csv << ['ID', 'Email', 'Date de création'] - instructeurs.each do |instructeur| - csv << [instructeur.id, instructeur.email, instructeur.created_at] - end - end + + csv = generate_csv(instructeurs) send_data csv, filename: "instructeurs_recents_#{Date.today.strftime('%d-%m-%Y')}.csv" end def export_currently_active instructeurs = Instructeur.joins(:user).where(users: { current_sign_in_at: 6.months.ago.. }).where.not(users: { email_verified_at: nil }) - csv = CSV.generate(headers: true) do |csv| - csv << ['ID', 'Email', 'Date de création'] - instructeurs.each do |instructeur| - csv << [instructeur.id, instructeur.email, instructeur.created_at] - end - end + + csv = generate_csv(instructeurs) send_data csv, filename: "instructeurs_actifs_#{Date.today.strftime('%d-%m-%Y')}.csv" end