diff --git a/app/controllers/manager/users_controller.rb b/app/controllers/manager/users_controller.rb index ec6e7dd27..bdecedf6a 100644 --- a/app/controllers/manager/users_controller.rb +++ b/app/controllers/manager/users_controller.rb @@ -50,6 +50,23 @@ module Manager def emails @user = User.find(params[:id]) + transactionnal_api = ::SibApiV3Sdk::TransactionalEmailsApi.new + + @transactionnal_emails = transactionnal_api.get_transac_emails_list(email: @user.email) + @events = transactionnal_api.get_email_event_report(email: @user.email, days: 30) + + rescue ::SibApiV3Sdk::ApiError => e + flash.alert = "Impossible de récupérer les emails de cet utilisateur chez Sendinblue : #{e.message}" + end + + def unblock_user + @user = User.find(params[:id]) + + transactionnal_api = ::SibApiV3Sdk::TransactionalEmailsApi.new + transactionnal_api.smtp_blocked_contacts_email_delete(@user) + + rescue ::SibApiV3Sdk::ApiError => e + flash.alert = "Impossible de débloquer cet email auprès de Sendinblue : #{e.message}" end end end diff --git a/app/helpers/email_helper.rb b/app/helpers/email_helper.rb new file mode 100644 index 000000000..9bd74dc65 --- /dev/null +++ b/app/helpers/email_helper.rb @@ -0,0 +1,12 @@ +module EmailHelper + def event_color_code(email_events) + unique_events = email_events.map(&:event) + if unique_events.include?('delivered') + return 'email-sent' + elsif unique_events.include?('blocked') || unique_events.include?('hardBounces') + return 'email-blocked' + else + return '' + end + end +end diff --git a/app/views/manager/users/emails.html.erb b/app/views/manager/users/emails.html.erb index ea928ff40..13575b96a 100644 --- a/app/views/manager/users/emails.html.erb +++ b/app/views/manager/users/emails.html.erb @@ -1,5 +1,15 @@ <% content_for(:title) { "Emails vers #{@user.email}" } %> + +
-
+

Historique des email

+<% if @transactionnal_emails.present? %> +

+ Cet historique contient les 30 derniers jours. Pour un recherche plus fine, il faut fouiller les logs. +

+ + + + + + + + + + <% @transactionnal_emails&.transactional_emails&.reverse&.each do |email| %> + <% matching_events = @events&.events&.select { |e| e.message_id == email.message_id } %> + + + + + + + <% end %> + +
+ Émetteur + + Sujet + + Date +
+ <%= email.from %> + + <%= email.subject %> + + <%= l(email.date, format: '%d/%m/%y à %H:%M') %> + +
    - + <% matching_events.each do |event|%> +
  • <%= event.event %>
  • + <% end %> +
+
+<% else %> +

Historique indisponible. Cet email n'existe pas chez Sendinblue, ou nous n'avons pas réussi à échanger. + Vous pouvez éventuellement fouiller leurs logs.

+<% end %> + +

Problèmes potentiel

+ + <% if @user.confirmed? %> +

Compte activé, n'arrive pas à se connecter ?

+ + <% else %> +

Ce compte n'est pas activé. Vous pouvez lui <%= link_to('renvoyer l’email de confirmation', [:resend_confirmation_instructions, namespace, 'user'], method: :post, class: 'button') %>, puis un email.

+ + <% end %> +

Compte bloqué chez Sendinblue ? Vous pouvez le <%= link_to('débloquer', manager_user_unblock_email_path(@user), method: :put, class: 'button', remote: true) %> puis lui envoyer

+ +

Problème chez Sendinblue ? Regardez leur page de status.

+
diff --git a/app/views/manager/users/show.html.erb b/app/views/manager/users/show.html.erb index 3db37a080..24b793aa9 100644 --- a/app/views/manager/users/show.html.erb +++ b/app/views/manager/users/show.html.erb @@ -34,7 +34,7 @@ as well as a link to its edit page. <% if !user.confirmed? %> <%= link_to('Renvoyer l’email de confirmation', [:resend_confirmation_instructions, namespace, page.resource], method: :post, class: 'button') %> <% end %> -
+
diff --git a/config/routes.rb b/config/routes.rb index 7d9a64315..c01dbf8b6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -32,6 +32,7 @@ Rails.application.routes.draw do post 'resend_confirmation_instructions', on: :member put 'enable_feature', on: :member get 'emails', on: :member + put 'unblock_email' end resources :instructeurs, only: [:index, :show] do