From 7cf81d3e9bc4dbd3ceed9b54a6804b9305b05017 Mon Sep 17 00:00:00 2001 From: Eric Leroy-Terquem Date: Mon, 4 Nov 2024 17:40:45 +0100 Subject: [PATCH 1/3] refactor(manager data exports): renaming methods --- app/controllers/manager/administrateurs_controller.rb | 2 +- app/controllers/manager/instructeurs_controller.rb | 2 +- app/views/manager/administrateurs/data_exports.html.erb | 4 ++-- config/routes.rb | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/controllers/manager/administrateurs_controller.rb b/app/controllers/manager/administrateurs_controller.rb index 238793ee7..eb69eb473 100644 --- a/app/controllers/manager/administrateurs_controller.rb +++ b/app/controllers/manager/administrateurs_controller.rb @@ -40,7 +40,7 @@ module Manager def data_exports end - def export_last_month + 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'] diff --git a/app/controllers/manager/instructeurs_controller.rb b/app/controllers/manager/instructeurs_controller.rb index 3acb6a784..ffe95bc78 100644 --- a/app/controllers/manager/instructeurs_controller.rb +++ b/app/controllers/manager/instructeurs_controller.rb @@ -23,7 +23,7 @@ module Manager redirect_to manager_instructeurs_path end - def export_last_month + 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'] diff --git a/app/views/manager/administrateurs/data_exports.html.erb b/app/views/manager/administrateurs/data_exports.html.erb index 061ec3280..fbe47f6fc 100644 --- a/app/views/manager/administrateurs/data_exports.html.erb +++ b/app/views/manager/administrateurs/data_exports.html.erb @@ -1,6 +1,6 @@
diff --git a/config/routes.rb b/config/routes.rb index ed06d5b7b..02846ab5b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -115,8 +115,8 @@ Rails.application.routes.draw do end get 'data_exports' => 'administrateurs#data_exports' - get 'exports/administrateurs/last_month' => 'administrateurs#export_last_month' - get 'exports/instructeurs/last_month' => 'instructeurs#export_last_month' + get 'exports/administrateurs/last_half_year' => 'administrateurs#export_last_half_year' + get 'exports/instructeurs/last_half_year' => 'instructeurs#export_last_half_year' get 'import_procedure_tags' => 'procedures#import_data' post 'import_tags' => 'procedures#import_tags' From d5de21fac46f43588964616a985b990326d1e39e Mon Sep 17 00:00:00 2001 From: Eric Leroy-Terquem Date: Mon, 4 Nov 2024 17:55:22 +0100 Subject: [PATCH 2/3] feat(manager data exports): add exports for newsletter --- .../manager/administrateurs_controller.rb | 14 +++++++++++++- .../manager/instructeurs_controller.rb | 14 +++++++++++++- .../administrateurs/data_exports.html.erb | 17 +++++++++++++++-- config/routes.rb | 2 ++ 4 files changed, 43 insertions(+), 4 deletions(-) diff --git a/app/controllers/manager/administrateurs_controller.rb b/app/controllers/manager/administrateurs_controller.rb index eb69eb473..23b047f96 100644 --- a/app/controllers/manager/administrateurs_controller.rb +++ b/app/controllers/manager/administrateurs_controller.rb @@ -49,7 +49,19 @@ module Manager end end - send_data csv, filename: "administrateurs_#{Date.today.strftime('%d-%m-%Y')}.csv" + 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 + + send_data csv, filename: "administrateurs_actifs_#{Date.today.strftime('%d-%m-%Y')}.csv" end private diff --git a/app/controllers/manager/instructeurs_controller.rb b/app/controllers/manager/instructeurs_controller.rb index ffe95bc78..4c72a1662 100644 --- a/app/controllers/manager/instructeurs_controller.rb +++ b/app/controllers/manager/instructeurs_controller.rb @@ -32,7 +32,19 @@ module Manager end end - send_data csv, filename: "instructeurs_#{Date.today.strftime('%d-%m-%Y')}.csv" + 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 + + send_data csv, filename: "instructeurs_actifs_#{Date.today.strftime('%d-%m-%Y')}.csv" end end end diff --git a/app/views/manager/administrateurs/data_exports.html.erb b/app/views/manager/administrateurs/data_exports.html.erb index fbe47f6fc..1e3d897cd 100644 --- a/app/views/manager/administrateurs/data_exports.html.erb +++ b/app/views/manager/administrateurs/data_exports.html.erb @@ -1,6 +1,19 @@ -
+
+

+ Export des administrateurs et instructeurs +

+
+ +
+

Pour les invitations aux webinaires

-
+ +

Pour les newsletters

+ + diff --git a/config/routes.rb b/config/routes.rb index 02846ab5b..58fe3255c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -117,6 +117,8 @@ Rails.application.routes.draw do get 'data_exports' => 'administrateurs#data_exports' get 'exports/administrateurs/last_half_year' => 'administrateurs#export_last_half_year' get 'exports/instructeurs/last_half_year' => 'instructeurs#export_last_half_year' + get 'exports/administrateurs/with_publiee_procedure' => 'administrateurs#export_with_publiee_procedure' + get 'exports/instructeurs/currently_active' => 'instructeurs#export_currently_active' get 'import_procedure_tags' => 'procedures#import_data' post 'import_tags' => 'procedures#import_tags' From 2ff224ec4734d29c86bc8e6f3e72dccda1594f66 Mon Sep 17 00:00:00 2001 From: Eric Leroy-Terquem Date: Mon, 4 Nov 2024 18:02:42 +0100 Subject: [PATCH 3/3] 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