diff --git a/CHANGELOG.md b/CHANGELOG.md index defe9163..9fb3f7d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## unreleased * Filter nach für ausgetretene Personen von "Ehemalige" zu "Austritte" umbenannt (hitobito_jubla#159) +* Benachrichtigungen an neue Ehemalige werden nur noch auf Scharebene verschickt. (hitobito_jubla#166) ## Version 2.2 diff --git a/app/jobs/alumni_mail_job.rb b/app/jobs/alumni_mail_job.rb index 7e79a75d..2e3133df 100644 --- a/app/jobs/alumni_mail_job.rb +++ b/app/jobs/alumni_mail_job.rb @@ -13,12 +13,9 @@ def initialize(group_id, person_id) def perform return if no_more_active_roles? + return unless group.is_a?(Group::Flock) - if group.is_a?(Group::Flock) - AlumniMailer.new_member_flock(person).deliver_now - else - AlumniMailer.new_member(person).deliver_now - end + AlumniMailer.new_member_flock(person).deliver_now end private diff --git a/app/mailers/alumni_mailer.rb b/app/mailers/alumni_mailer.rb index fde2c140..00023ca8 100644 --- a/app/mailers/alumni_mailer.rb +++ b/app/mailers/alumni_mailer.rb @@ -1,16 +1,11 @@ -# Copyright (c) 2012-2017, Jungwacht Blauring Schweiz. This file is part of +# Copyright (c) 2012-2024, Jungwacht Blauring Schweiz. This file is part of # hitobito_jubla and licensed under the Affero General Public License version 3 # or later. See the COPYING file at the top-level directory or at # https://github.com/hitobito/hitobito_jubla. class AlumniMailer < ApplicationMailer - NEW_MEMBER = "new_member".freeze NEW_MEMBER_FLOCK = "new_member_flock".freeze - def new_member(recipient) - custom_content_mail(recipient.email, NEW_MEMBER, mail_values(recipient)) - end - def new_member_flock(recipient) custom_content_mail(recipient.email, NEW_MEMBER_FLOCK, mail_values(recipient)) end diff --git a/db/migrate/20241211173100_remove_outdated_custom_contents.rb b/db/migrate/20241211173100_remove_outdated_custom_contents.rb new file mode 100644 index 00000000..877f243b --- /dev/null +++ b/db/migrate/20241211173100_remove_outdated_custom_contents.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +class RemoveOutdatedCustomContents < ActiveRecord::Migration[7.0] + def up + custom_content_id = select_value("SELECT id FROM custom_contents WHERE key = 'new_member'") + + if custom_content_id.blank? + say "CustomContent 'new_member' not found, moving on." + return + end + + execute("DELETE FROM custom_content_translations WHERE custom_content_id = #{custom_content_id};") + execute("DELETE FROM custom_contents WHERE id = #{custom_content_id};") + end + + def down + CustomContent.seed_once(:key, + { + key: "new_member", + placeholders_required: "recipient-name, recipient-profile-url" + }) + + CustomContent::Translation.seed_once(:custom_content_id, :locale, + { + custom_content_id: CustomContent.where(key: "new_member").first.id, + locale: "de", + label: "Ehemalige: Benachrichtigung", + subject: "Danke für deinen Einsatz bei der Jubla!", + body: "Liebe/Lieber {recipient-name}

Herzlichen Dank für dein wichtiges Engagement für Jungwacht Blauring. Bestimmt hast du viele tolle Erlebnisse gehabt und gute Freundschaften aufgebaut – eben Lebensfreu(n)de.

\"Freude und Freunde – und das fürs Leben\" soll auch heissen, dass deine Jubla-Zeit jetzt nicht vorbei sein muss. Als frischgebackene Ehemalige / frischgebackener Ehemaliger bist du nämlich ein wichtiger Teil für Jungwacht Blauring. Vielleicht braucht deine ehemalige Schar jedes Jahr tatkräftige Unterstützung beim Sommerlager-Aufbau? Oder der entsprechende Kantonalverband ist auf der Suche nach Leuten, die beim kantonalen Geländespiel die Verpflegung organisieren? Es wäre doch toll, wenn du auf diese oder andere Arten noch mit Jungwacht Blauring in Verbindung bleiben könntest. Darum kannst du in deinem Profil auf der jubla.db bestimmen, welche Ebene dich in Zukunft kontaktieren und dir Informationen senden darf. Vielen Dank nochmals für dein Engagement – auch über deine aktive Zeit hinaus.

Liebe Grüsse
Jungwacht Blauring Schweiz" + }) + end +end diff --git a/db/seeds/custom_contents.rb b/db/seeds/custom_contents.rb index f8fe88ea..7afed31a 100644 --- a/db/seeds/custom_contents.rb +++ b/db/seeds/custom_contents.rb @@ -1,6 +1,6 @@ # encoding: utf-8 -# Copyright (c) 2012-2017, Jungwacht Blauring Schweiz. This file is part of +# Copyright (c) 2012-2024, Jungwacht Blauring Schweiz. This file is part of # hitobito_jubla and licensed under the Affero General Public License version 3 # or later. See the COPYING file at the top-level directory or at # https://github.com/hitobito/hitobito_jubla. @@ -17,12 +17,7 @@ placeholders_optional: 'recipient-names, due-date, contact-address, census-url' }, - { - key: AlumniMailer::NEW_MEMBER, - placeholders_required: 'recipient-name, recipient-profile-url' - }, - - { + { key: AlumniMailer::NEW_MEMBER_FLOCK, placeholders_required: 'recipient-name, recipient-profile-url' }, @@ -45,15 +40,7 @@ body: "Hallo {recipient-names}

Wir bitten dich, den Bestand deiner Gruppe zu aktualisieren und die Bestandesmeldung bis am {due-date} zu bestätigen:

{census-url}

Vielen Dank für deine Mithilfe. Bei Fragen kannst du dich an die folgende Adresse wenden:

{contact-address}

Deine Jubla" }, - { - custom_content_id: CustomContent.where(key: AlumniMailer::NEW_MEMBER).first.id, - locale: 'de', - label: 'Ehemalige: Benachrichtigung', - subject: 'Danke für deinen Einsatz bei der Jubla!', - body: "Liebe/Lieber {recipient-name}

Herzlichen Dank für dein wichtiges Engagement für Jungwacht Blauring. Bestimmt hast du viele tolle Erlebnisse gehabt und gute Freundschaften aufgebaut – eben Lebensfreu(n)de.

\"Freude und Freunde – und das fürs Leben\" soll auch heissen, dass deine Jubla-Zeit jetzt nicht vorbei sein muss. Als frischgebackene Ehemalige / frischgebackener Ehemaliger bist du nämlich ein wichtiger Teil für Jungwacht Blauring. Vielleicht braucht deine ehemalige Schar jedes Jahr tatkräftige Unterstützung beim Sommerlager-Aufbau? Oder der entsprechende Kantonalverband ist auf der Suche nach Leuten, die beim kantonalen Geländespiel die Verpflegung organisieren? Es wäre doch toll, wenn du auf diese oder andere Arten noch mit Jungwacht Blauring in Verbindung bleiben könntest. Darum kannst du in deinem Profil auf der jubla.db bestimmen, welche Ebene dich in Zukunft kontaktieren und dir Informationen senden darf. Vielen Dank nochmals für dein Engagement – auch über deine aktive Zeit hinaus.

Liebe Grüsse
Jungwacht Blauring Schweiz" - }, - - { + { custom_content_id: CustomContent.where(key: AlumniMailer::NEW_MEMBER_FLOCK).first.id, locale: 'de', label: 'Ehemalige: Benachrichtigung Schar', diff --git a/spec/jobs/alumni_mail_job_spec.rb b/spec/jobs/alumni_mail_job_spec.rb index 330d717e..e00e9cbd 100644 --- a/spec/jobs/alumni_mail_job_spec.rb +++ b/spec/jobs/alumni_mail_job_spec.rb @@ -27,12 +27,15 @@ expect { AlumniMailJob.new(group.id, person.id).perform }.to change { ActionMailer::Base.deliveries.size }.by(1) end - it 'sends email if there are only Alumnus::Member roles left' do + it 'sends email if the group is not a flock' do group = groups(:city) person = Fabricate(Group::RegionalAlumnusGroup::Member.sti_name.to_sym, group: group.alumnus_group).person - expect(AlumniMailer).to receive(:new_member).with(person).and_call_original - expect { AlumniMailJob.new(group.id, person.id).perform }.to change { ActionMailer::Base.deliveries.size }.by(1) + expect(group).not_to be_a(Group::Flock) + + expect(AlumniMailer).not_to receive(:new_member).with(person).and_call_original + expect(AlumniMailer).not_to receive(:new_member_flock).and_call_original + expect { AlumniMailJob.new(group.id, person.id).perform }.to change { ActionMailer::Base.deliveries.size }.by(0) end it 'does not send flock email if there are other roles in the current flock-layer left' do