Compare commits
9 Commits
smtp-setti
...
main
Author | SHA1 | Date | |
---|---|---|---|
4496deeef5 | |||
de87b6c46b | |||
eabba2109a | |||
1586f88986 | |||
c42eb4e576 | |||
29b3fca80c | |||
d236e459cd | |||
ff8918a1d4 | |||
45313daba2 |
@ -22,7 +22,13 @@ class GuestsController < ApplicationController
|
||||
end
|
||||
|
||||
def update
|
||||
guest = Guest.find(params[:id]).update!(guest_params)
|
||||
guest = Guest.find(params[:id])
|
||||
guest.update!(guest_params)
|
||||
|
||||
if !user_signed_in? && guest.saved_change_to_status?
|
||||
AdminMailer.with(guest_id: guest.id).attendance_change_email.deliver_later
|
||||
end
|
||||
|
||||
render json: guest.as_json(GUEST_PARAMS), status: :ok
|
||||
end
|
||||
|
||||
|
18
app/mailers/admin_mailer.rb
Normal file
18
app/mailers/admin_mailer.rb
Normal file
@ -0,0 +1,18 @@
|
||||
# Copyright (C) 2024-2025 LibreWeddingPlanner contributors
|
||||
|
||||
# frozen_string_literal: true
|
||||
|
||||
class AdminMailer < ApplicationMailer
|
||||
def attendance_change_email
|
||||
@guest = Guest.find(params[:guest_id])
|
||||
|
||||
mail(
|
||||
to: @guest.wedding.users.pluck(:email),
|
||||
subject: I18n.t(
|
||||
'admin_mailer.attendance_change_email.subject',
|
||||
name: @guest.name,
|
||||
status: I18n.t("active_record.attributes.guest/status.#{@guest.status}")
|
||||
)
|
||||
)
|
||||
end
|
||||
end
|
@ -3,6 +3,16 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class ApplicationMailer < ActionMailer::Base
|
||||
default from: 'from@example.com'
|
||||
class << self
|
||||
private
|
||||
|
||||
def default_from
|
||||
File.read('/run/secrets/smtp_user_name').strip
|
||||
rescue Errno::ENOENT
|
||||
'development@example.com'
|
||||
end
|
||||
end
|
||||
|
||||
default from: default_from
|
||||
layout 'mailer'
|
||||
end
|
||||
|
@ -23,5 +23,6 @@ class Wedding < ApplicationRecord
|
||||
has_many :guests, dependent: :delete_all
|
||||
has_many :groups, dependent: :delete_all
|
||||
has_many :invitations, dependent: :delete_all
|
||||
has_many :users, dependent: :delete_all
|
||||
has_one :website, dependent: :destroy
|
||||
end
|
||||
|
17
app/views/admin_mailer/attendance_change_email.html.erb
Normal file
17
app/views/admin_mailer/attendance_change_email.html.erb
Normal file
@ -0,0 +1,17 @@
|
||||
<%# Copyright (C) 2024-2025 LibreWeddingPlanner contributors %>
|
||||
|
||||
<p><%= I18n.t('admin_mailer.greeting') %>,</p>
|
||||
|
||||
<p>
|
||||
<%= I18n.t('admin_mailer.attendance_change_email.paragraph_1', name: @guest.name) %>
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<strong><%= I18n.t("active_record.attributes.guest.status") %>:</strong> <%= I18n.t("active_record.attributes.guest/status.#{@guest.status}") %>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
<%= I18n.t("admin_mailer.attendance_change_email.notify_on_updates") %>
|
||||
</p>
|
9
app/views/admin_mailer/attendance_change_email.text.erb
Normal file
9
app/views/admin_mailer/attendance_change_email.text.erb
Normal file
@ -0,0 +1,9 @@
|
||||
<%# Copyright (C) 2024-2025 LibreWeddingPlanner contributors %>
|
||||
|
||||
<%= I18n.t('admin_mailer.greeting') %>,
|
||||
|
||||
<%= I18n.t('admin_mailer.attendance_change_email.paragraph_1', name: @guest.name) %>
|
||||
|
||||
- <%= I18n.t("active_record.attributes.guest.status") %>: <%= I18n.t("active_record.attributes.guest/status.#{@guest.status}") %>
|
||||
|
||||
<%= I18n.t("admin_mailer.attendance_change_email.notify_on_updates") %>
|
@ -79,7 +79,8 @@ Rails.application.configure do
|
||||
port: File.read("/run/secrets/smtp_port").strip.to_i,
|
||||
user_name: File.read("/run/secrets/smtp_user_name").strip,
|
||||
password: File.read("/run/secrets/smtp_password").strip,
|
||||
authentication: File.read("/run/secrets/smtp_authentication").strip.to_sym
|
||||
authentication: File.read("/run/secrets/smtp_authentication").strip.to_sym,
|
||||
tls: true
|
||||
}
|
||||
rescue Errno::ENOENT
|
||||
{}
|
||||
|
@ -1,31 +1,19 @@
|
||||
# Files in the config/locales directory are used for internationalization and
|
||||
# are automatically loaded by Rails. If you want to use locales other than
|
||||
# English, add the necessary files in this directory.
|
||||
#
|
||||
# To use the locales, use `I18n.t`:
|
||||
#
|
||||
# I18n.t "hello"
|
||||
#
|
||||
# In views, this is aliased to just `t`:
|
||||
#
|
||||
# <%= t("hello") %>
|
||||
#
|
||||
# To use a different locale, set it with `I18n.locale`:
|
||||
#
|
||||
# I18n.locale = :es
|
||||
#
|
||||
# This would use the information in config/locales/es.yml.
|
||||
#
|
||||
# To learn more about the API, please read the Rails Internationalization guide
|
||||
# at https://guides.rubyonrails.org/i18n.html.
|
||||
#
|
||||
# Be aware that YAML interprets the following case-insensitive strings as
|
||||
# booleans: `true`, `false`, `on`, `off`, `yes`, `no`. Therefore, these strings
|
||||
# must be quoted to be interpreted as strings. For example:
|
||||
#
|
||||
# en:
|
||||
# "yes": yup
|
||||
# enabled: "ON"
|
||||
|
||||
en:
|
||||
hello: "Hello world"
|
||||
active_record:
|
||||
attributes:
|
||||
guest:
|
||||
status: Status
|
||||
guest/status:
|
||||
considered: Considered
|
||||
invited: Invited
|
||||
confirmed: Confirmed
|
||||
declined: Declined
|
||||
tentative: Tentative
|
||||
|
||||
admin_mailer:
|
||||
greeting: "Dear user"
|
||||
attendance_change_email:
|
||||
subject: "%{name} has changed their attendance status: %{status}"
|
||||
paragraph_1: "The guest %{name} has changed their attendance for the wedding."
|
||||
notify_on_updates: "You will be notified of any further changes to their attendance status."
|
||||
|
Loading…
x
Reference in New Issue
Block a user