Skip to content

Commit

Permalink
Merge pull request #180 from hitobito/feature/jubla-166-remove-genera…
Browse files Browse the repository at this point in the history
…l-alumnus-mail

Remove general alumnus mail
  • Loading branch information
kronn authored Dec 17, 2024
2 parents 8060ae6 + d3cbd0f commit c48cddd
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 30 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
7 changes: 2 additions & 5 deletions app/jobs/alumni_mail_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
7 changes: 1 addition & 6 deletions app/mailers/alumni_mailer.rb
Original file line number Diff line number Diff line change
@@ -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
Expand Down
32 changes: 32 additions & 0 deletions db/migrate/20241211173100_remove_outdated_custom_contents.rb
Original file line number Diff line number Diff line change
@@ -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}<br/><br/>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.<br/><br/> \"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 <a href=\"{recipient-profile-url}\">jubla.db</a> 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.<br/><br/>Liebe Grüsse<br/>Jungwacht Blauring Schweiz"
})
end
end
19 changes: 3 additions & 16 deletions db/seeds/custom_contents.rb
Original file line number Diff line number Diff line change
@@ -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.
Expand All @@ -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'
},
Expand All @@ -45,15 +40,7 @@
body: "Hallo {recipient-names}<br/><br/>Wir bitten dich, den Bestand deiner Gruppe zu aktualisieren und die Bestandesmeldung bis am {due-date} zu bestätigen:<br/><br/>{census-url}<br/><br/>Vielen Dank für deine Mithilfe. Bei Fragen kannst du dich an die folgende Adresse wenden:<br/><br/>{contact-address}<br/><br/>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}<br/><br/>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.<br/><br/> \"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 <a href=\"{recipient-profile-url}\">jubla.db</a> 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.<br/><br/>Liebe Grüsse<br/>Jungwacht Blauring Schweiz"
},

{
{
custom_content_id: CustomContent.where(key: AlumniMailer::NEW_MEMBER_FLOCK).first.id,
locale: 'de',
label: 'Ehemalige: Benachrichtigung Schar',
Expand Down
9 changes: 6 additions & 3 deletions spec/jobs/alumni_mail_job_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit c48cddd

Please sign in to comment.