Merge pull request #11012 from demarches-simplifiees/update-export-administration-info

ETQ superadmin je peux générer les exports adaptés pour la newsletter
This commit is contained in:
Eric Leroy-Terquem 2024-11-05 12:44:45 +00:00 committed by GitHub
commit c10bec342a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 54 additions and 22 deletions

View file

@ -40,16 +40,20 @@ module Manager
def data_exports def data_exports
end 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 }) 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'] csv = generate_csv(administrateurs)
administrateurs.each do |administrateur|
csv << [administrateur.id, administrateur.email, administrateur.created_at] send_data csv, filename: "administrateurs_recents_#{Date.today.strftime('%d-%m-%Y')}.csv"
end
end end
send_data csv, filename: "administrateurs_#{Date.today.strftime('%d-%m-%Y')}.csv" def export_with_publiee_procedure
administrateurs = Administrateur.joins(:user).where.not(users: { email_verified_at: nil }).joins(:procedures).where(procedures: { aasm_state: [:publiee] })
csv = generate_csv(administrateurs)
send_data csv, filename: "administrateurs_actifs_#{Date.today.strftime('%d-%m-%Y')}.csv"
end end
private private

View file

@ -56,5 +56,14 @@ module Manager
payload[:to_log] = to_log payload[:to_log] = to_log
end 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
end end

View file

@ -23,16 +23,20 @@ module Manager
redirect_to manager_instructeurs_path redirect_to manager_instructeurs_path
end 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 }) 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'] csv = generate_csv(instructeurs)
instructeurs.each do |instructeur|
csv << [instructeur.id, instructeur.email, instructeur.created_at] send_data csv, filename: "instructeurs_recents_#{Date.today.strftime('%d-%m-%Y')}.csv"
end
end end
send_data csv, filename: "instructeurs_#{Date.today.strftime('%d-%m-%Y')}.csv" 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 = generate_csv(instructeurs)
send_data csv, filename: "instructeurs_actifs_#{Date.today.strftime('%d-%m-%Y')}.csv"
end end
end end
end end

View file

@ -1,6 +1,19 @@
<div> <header class="main-content__header">
<h1 class="main-content__page-title">
Export des administrateurs et instructeurs
</h1>
</header>
<section class="main-content__body">
<h2>Pour les invitations aux webinaires</h2>
<ul> <ul>
<li><a href="/manager/exports/administrateurs/last_month">Export des administrateurs (6 mois)</a></li> <li><a href="/manager/exports/administrateurs/last_half_year">Export des administrateurs créés dans les 6 derniers mois</a></li>
<li><a href="/manager/exports/instructeurs/last_month">Export des instructeurs (6 mois)</a></li> <li><a href="/manager/exports/instructeurs/last_half_year">Export des instructeurs créés dans les 6 derniers mois</a></li>
</ul> </ul>
</div>
<h2>Pour les newsletters</h2>
<ul>
<li><a href="/manager/exports/administrateurs/with_publiee_procedure">Export des administrateurs avec au moins une démarche publiée</a></li>
<li><a href="/manager/exports/instructeurs/currently_active">Export des instructeurs qui se sont connectés dans les 6 derniers mois</a></li>
</ul>
</section>

View file

@ -115,8 +115,10 @@ Rails.application.routes.draw do
end end
get 'data_exports' => 'administrateurs#data_exports' get 'data_exports' => 'administrateurs#data_exports'
get 'exports/administrateurs/last_month' => 'administrateurs#export_last_month' get 'exports/administrateurs/last_half_year' => 'administrateurs#export_last_half_year'
get 'exports/instructeurs/last_month' => 'instructeurs#export_last_month' 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' get 'import_procedure_tags' => 'procedures#import_data'
post 'import_tags' => 'procedures#import_tags' post 'import_tags' => 'procedures#import_tags'