Skip to content

Commit

Permalink
API Particulier reporters: group emails instead of 1 email per group
Browse files Browse the repository at this point in the history
Better this way, less spammy
  • Loading branch information
skelz0r committed Jul 31, 2024
1 parent a2a573e commit 5da76af
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 20 deletions.
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
class DatapassWebhook::APIParticulier::NotifyReporters < ApplicationInteractor
def call
return if %w[submit approve].exclude?(context.event)
return if groups_to_notify.empty?

reporters_config.each_key do |group_name|
next unless scopes.any? { |scope| scope.start_with?("#{group_name}_") }

APIParticulier::ReportersMailer.with(group: group_name).send(context.event).deliver_later
end
APIParticulier::ReportersMailer.with(groups: groups_to_notify).send(context.event).deliver_later
end

private

def reporters_config
Rails.application.credentials.api_particulier_reporters
def groups_to_notify
reporters_groups_config.select do |group_name|
scopes.any? { |scope| scope.start_with?(group_name.to_s) }
end
end

def reporters_groups_config
Rails.application.credentials.api_particulier_reporters.keys
end

def scopes
Expand Down
12 changes: 8 additions & 4 deletions app/mailers/api_particulier/reporters_mailer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,23 @@ class APIParticulier::ReportersMailer < APIParticulierMailer
approve
].each do |event|
define_method(event) do
group = params[:group]
groups = params[:groups].map(&:to_sym)

return if reporters_config[group].blank?
return if reporter_emails(groups).empty?

mail(
bcc: reporters_config[group],
subject: t('.subject', group:)
bcc: reporter_emails(groups),
subject: t('.subject')
)
end
end

private

def reporter_emails(groups)
reporters_config.values_at(*groups).flatten
end

def reporters_config
Rails.application.credentials.api_particulier_reporters
end
Expand Down
4 changes: 2 additions & 2 deletions app/views/api_particulier/reporters_mailer/approve.text.erb
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
Bonjour,

Une nouvelle demande vient d'être validée pour l'ensemble de données associé au groupe '<%= params[:group] %>'.
Une nouvelle demande vient d'être validée pour un ensemble de données associé au groupe auquel vous êtes bonné.

Vous pouvez consulter la liste des demandes relatives aux données associé au groupe '<%= params[:group] %>' sur le lien suivant : <%= api_particulier_dashboard_reporter_url %>
Vous pouvez consulter la liste des demandes relatives aux données associé aux groupes où vous êtes abonnés sur le lien suivant : <%= api_particulier_dashboard_reporter_url %>

Cordialement,
L'équipe API Particulier
4 changes: 2 additions & 2 deletions app/views/api_particulier/reporters_mailer/submit.text.erb
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
Bonjour,

Une nouvelle demande vient d'être déposée pour l'ensemble de données associé au groupe '<%= params[:group] %>'.
Une nouvelle demande vient d'être déposée pour un ensemble de données associé à un groupe auquel vous êtes abonné.

Vous pouvez consulter la liste des demandes relatives aux données associé au groupe '<%= params[:group] %>' sur le lien suivant : <%= api_particulier_dashboard_reporter_url %>
Vous pouvez consulter la liste des demandes relatives aux données associé aux groupes où vous êtes abonnés sur le lien suivant : <%= api_particulier_dashboard_reporter_url %>

Cordialement,
L'équipe API Particulier
6 changes: 4 additions & 2 deletions spec/mailers/api_particulier/reporters_mailer_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@

describe '#submit' do
subject(:mail) do
described_class.with(group: 'cnaf').submit
described_class.with(groups: %w[cnaf men]).submit
end

it 'sends an email to reporters associated to this group' do
it 'sends an email to reporters associated to these groups' do
expect(mail.bcc).to include('[email protected]')
expect(mail.bcc).to include('[email protected]')
expect(mail.bcc).not_to include('[email protected]')
end
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ class APIParticulier::ReportersMailerPreview < ActionMailer::Preview
approve
].each do |event|
define_method(event) do
APIParticulier::ReportersMailer.with(group:).send(event)
APIParticulier::ReportersMailer.with(groups:).send(event)
end
end

private

def group
'cnaf'
def groups
%w[cnaf men]
end
end

0 comments on commit 5da76af

Please sign in to comment.