Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove general alumnus mail #180

Merged
merged 3 commits into from
Dec 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading