diff --git a/app/models/reservation.rb b/app/models/reservation.rb
index 9b9d0ff4f..37a00563d 100644
--- a/app/models/reservation.rb
+++ b/app/models/reservation.rb
@@ -131,15 +131,27 @@ class Reservation < ApplicationRecord
end
def notify_member_create_reservation
- NotificationCenter.call type: 'notify_member_create_reservation',
- receiver: user,
- attached_object: self
+ if reservable_type == 'Event' && reservable.pre_registration?
+ NotificationCenter.call type: 'notify_member_pre_booked_reservation',
+ receiver: user,
+ attached_object: self
+ else
+ NotificationCenter.call type: 'notify_member_create_reservation',
+ receiver: user,
+ attached_object: self
+ end
end
def notify_admin_member_create_reservation
- NotificationCenter.call type: 'notify_admin_member_create_reservation',
- receiver: User.admins_and_managers,
- attached_object: self
+ if reservable_type == 'Event' && reservable.pre_registration?
+ NotificationCenter.call type: 'notify_admin_member_pre_booked_reservation',
+ receiver: User.admins_and_managers,
+ attached_object: self
+ else
+ NotificationCenter.call type: 'notify_admin_member_create_reservation',
+ receiver: User.admins_and_managers,
+ attached_object: self
+ end
end
def notify_member_limitation_reached
diff --git a/app/views/api/notifications/_notify_admin_member_pre_booked_reservation.json.jbuilder b/app/views/api/notifications/_notify_admin_member_pre_booked_reservation.json.jbuilder
new file mode 100644
index 000000000..5488d620f
--- /dev/null
+++ b/app/views/api/notifications/_notify_admin_member_pre_booked_reservation.json.jbuilder
@@ -0,0 +1,5 @@
+json.title notification.notification_type
+json.description t('.a_RESERVABLE_reservation_was_made_by_USER_html',
+ RESERVABLE: notification.attached_object.reservable.name,
+ USER: notification.attached_object.user&.profile&.full_name || t('api.notifications.deleted_user'))
+
diff --git a/app/views/api/notifications/_notify_member_pre_booked_reservation.json.jbuilder b/app/views/api/notifications/_notify_member_pre_booked_reservation.json.jbuilder
new file mode 100644
index 000000000..7e212d607
--- /dev/null
+++ b/app/views/api/notifications/_notify_member_pre_booked_reservation.json.jbuilder
@@ -0,0 +1,3 @@
+json.title notification.notification_type
+json.description t('.your_reservation_RESERVABLE_was_successfully_saved_html',
+ RESERVABLE: notification.attached_object.reservable.name)
diff --git a/app/views/notifications_mailer/notify_admin_member_pre_booked_reservation.html.erb b/app/views/notifications_mailer/notify_admin_member_pre_booked_reservation.html.erb
new file mode 100644
index 000000000..46dc4812c
--- /dev/null
+++ b/app/views/notifications_mailer/notify_admin_member_pre_booked_reservation.html.erb
@@ -0,0 +1,19 @@
+<%= render 'notifications_mailer/shared/hello', recipient: @recipient %>
+
+
+ <%= t('.body.member_reserved_html',
+ NAME: @attached_object.user&.profile&.full_name || t('api.notifications.deleted_user'),
+ RESERVABLE: @attached_object.reservable.name) %>
+
+
<%= t('.body.reserved_slots') %>
+
+<% @attached_object.slots.each do |slot| %>
+ <% if @attached_object.reservable_type == 'Event' %>
+ <% (slot.start_at.to_date..slot.end_at.to_date).each do |d| %>
+ - <%= "#{I18n.l d, format: :long} #{I18n.l slot.start_at, format: :hour_minute} - #{I18n.l slot.end_at, format: :hour_minute}" %>
+ <% end %>
+ <% else %>
+ - <%= "#{I18n.l slot.start_at, format: :long} - #{I18n.l slot.end_at, format: :hour_minute}" %>
+ <% end %>
+<% end %>
+
diff --git a/app/views/notifications_mailer/notify_member_pre_booked_reservation.html.erb b/app/views/notifications_mailer/notify_member_pre_booked_reservation.html.erb
new file mode 100644
index 000000000..ff507953e
--- /dev/null
+++ b/app/views/notifications_mailer/notify_member_pre_booked_reservation.html.erb
@@ -0,0 +1,16 @@
+<%= render 'notifications_mailer/shared/hello', recipient: @recipient %>
+
+
<%= t('.body.reservation_saved_html', RESERVATION: @attached_object.reservable.name) %>
+
+
<%= t('.body.your_reserved_slots') %>
+
+<% @attached_object.slots.each do |slot| %>
+ <% if @attached_object.reservable_type == 'Event' %>
+ <% (slot.start_at.to_date..slot.end_at.to_date).each do |d| %>
+ - <%= "#{I18n.l d, format: :long} #{I18n.l slot.start_at, format: :hour_minute} - #{I18n.l slot.end_at, format: :hour_minute}" %>
+ <% end %>
+ <% else %>
+ - <%= "#{I18n.l slot.start_at, format: :long} - #{I18n.l slot.end_at, format: :hour_minute}" %>
+ <% end %>
+<% end %>
+
diff --git a/config/locales/app.public.en.yml b/config/locales/app.public.en.yml
index 5213b4a30..a7ea3ec94 100644
--- a/config/locales/app.public.en.yml
+++ b/config/locales/app.public.en.yml
@@ -332,9 +332,10 @@ en:
thank_you_your_payment_has_been_successfully_registered: "Thank you. Your payment has been successfully registered!"
thank_you_your_pre_registration_has_been_successfully_saved: "Thank you. Your pre-registration has been successfully saved!"
you_can_find_your_reservation_s_details_on_your_: "You can find your reservation's details on your"
+ informed_by_email_your_pre_registration: "You will be kept informed by email of the progress made regarding your pre-registration."
dashboard: "dashboard"
you_booked_DATE: "You booked ({DATE}):"
- you_pre_booked_DATE: "You pre-booked ({DATE}):"
+ you_pre_booked_DATE: "Your pre-registration ({DATE}):"
canceled_reservation_SEATS: "Reservation canceled ({SEATS} seats)"
book: "Book"
confirm_and_pay: "Confirm and pay"
@@ -364,7 +365,7 @@ en:
share_on_twitter: "Share on Twitter"
last_name_and_first_name: "Last name and first name"
pre_book: "Pre-book"
- pre_registration_end_date: "Pre-registration end date"
+ pre_registration_end_date: "Deadline for pre-registration"
pre_registration: "Pre-registration"
#public calendar
calendar:
diff --git a/config/locales/app.public.fr.yml b/config/locales/app.public.fr.yml
index fa31475d7..303b3ca8b 100644
--- a/config/locales/app.public.fr.yml
+++ b/config/locales/app.public.fr.yml
@@ -330,11 +330,12 @@ fr:
ticket: "{NUMBER, plural, =0{place} one{place} other{places}}"
make_a_gift_of_this_reservation: "Offrir cette réservation"
thank_you_your_payment_has_been_successfully_registered: "Merci. Votre paiement a bien été pris en compte !"
- thank_you_your_pre_registration_has_been_successfully_saved: "Merci. Votre pré-inscription a bien été pris en compte !"
+ thank_you_your_pre_registration_has_been_successfully_saved: "Merci. Votre demande a bien été pris en compte !"
you_can_find_your_reservation_s_details_on_your_: "Vous pouvez retrouver le détail de votre réservation sur votre"
+ informed_by_email_your_pre_registration: "vous serez tenu informé par email de la suite donnée à votre pré-inscription"
dashboard: "tableau de bord"
you_booked_DATE: "Vous avez réservé ({DATE}) :"
- you_pre_booked_DATE: "Vous avez pré-réservé ({DATE}) :"
+ you_pre_booked_DATE: "Votre pré-inscription ({DATE}) :"
canceled_reservation_SEATS: "Réservation annulée ({SEATS} places)"
book: "Réserver"
confirm_and_pay: "Valider et payer"
@@ -363,8 +364,8 @@ fr:
share_on_facebook: "Partager sur Facebook"
share_on_twitter: "Partager sur Twitter"
last_name_and_first_name: "Nom et prénom"
- pre_book: "Pré-réserver"
- pre_registration_end_date: "Date de fin de pré-réservation"
+ pre_book: "Pré-inscrire"
+ pre_registration_end_date: "Date limite de pré-inscription"
pre_registration: "Pré-réservation"
#public calendar
calendar:
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 6d389fcda..428cb324f 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -286,6 +286,8 @@ en:
an_abuse_was_reported_on_TYPE_ID_NAME_html: "An abuse was reported on
%{TYPE} %{ID}: %{NAME}."
notify_admin_member_create_reservation:
a_RESERVABLE_reservation_was_made_by_USER_html: "A
%{RESERVABLE} reservation was made by
%{USER}."
+ notify_admin_member_pre_booked_reservation:
+ a_RESERVABLE_reservation_was_made_by_USER_html: "A
%{RESERVABLE} pre-registration was made by
%{USER}."
notify_admin_profile_complete:
account_imported_from_PROVIDER_UID_has_completed_its_information_html: "Account imported from
%{PROVIDER} (%{UID}) has completed its information."
notify_admin_slot_is_canceled:
@@ -320,6 +322,8 @@ en:
a_new_user_account_has_been_imported_from_PROVIDER_UID_html: "A new user account has been imported from:
%{PROVIDER} (%{UID})."
notify_member_create_reservation:
your_reservation_RESERVABLE_was_successfully_saved_html: "Your reservation
%{RESERVABLE} was successfully saved."
+ notify_member_pre_booked_reservation:
+ your_reservation_RESERVABLE_was_successfully_saved_html: "Your pre-registration
%{RESERVABLE} was successfully saved."
notify_member_reservation_reminder:
reminder_you_have_a_reservation_RESERVABLE_to_be_held_on_DATE_html: "Reminder: You have a reservation
%{RESERVABLE} to be held on
%{DATE}"
notify_member_slot_is_canceled:
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 2ed92fc91..f1446c56d 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -286,6 +286,8 @@ fr:
an_abuse_was_reported_on_TYPE_ID_NAME_html: "Un abus a été signalé sur
%{TYPE} %{ID} : %{NAME}."
notify_admin_member_create_reservation:
a_RESERVABLE_reservation_was_made_by_USER_html: "Une réservation
%{RESERVABLE} a été effectuée par
%{USER}."
+ notify_admin_member_pre_booked_reservation:
+ a_RESERVABLE_reservation_was_made_by_USER_html: "Une pre-inscription
%{RESERVABLE} a été effectuée par
%{USER}."
notify_admin_profile_complete:
account_imported_from_PROVIDER_UID_has_completed_its_information_html: "Le compte importé depuis
%{PROVIDER} (%{UID}) a complété ses informations."
notify_admin_slot_is_canceled:
@@ -320,6 +322,8 @@ fr:
a_new_user_account_has_been_imported_from_PROVIDER_UID_html: "Un nouveau compte utilisateur vient d'être importé depuis :
%{PROVIDER} (%{UID})."
notify_member_create_reservation:
your_reservation_RESERVABLE_was_successfully_saved_html: "Votre réservation
%{RESERVABLE} a bien été enregistrée."
+ notify_member_pre_booked_reservation:
+ your_reservation_RESERVABLE_was_successfully_saved_html: "Votre pré-inscription
%{RESERVABLE} a bien été pris en compte."
notify_member_reservation_reminder:
reminder_you_have_a_reservation_RESERVABLE_to_be_held_on_DATE_html: "Rappel : Vous avez une réservation
%{RESERVABLE} qui aura lieu le
%{DATE}"
notify_member_slot_is_canceled:
diff --git a/config/locales/mails.en.yml b/config/locales/mails.en.yml
index 63a6c2969..3cefad918 100644
--- a/config/locales/mails.en.yml
+++ b/config/locales/mails.en.yml
@@ -78,6 +78,11 @@ en:
body:
reservation_saved_html: "You reservation
%{RESERVATION} has been successfully saved"
your_reserved_slots: "Your reserved slots are:"
+ notify_member_pre_booked_reservation:
+ subject: "Your pre-registration has been successfully saved"
+ body:
+ reservation_saved_html: "You pre-registration
%{RESERVATION} has been successfully saved"
+ your_reserved_slots: "Your pre-booked slots are:"
notify_member_subscribed_plan_is_changed:
subject: "Your subscription has been updated"
body:
@@ -87,6 +92,11 @@ en:
body:
member_reserved_html: "User %{NAME} has reserved
%{RESERVABLE}."
reserved_slots: "Reserved slots are:"
+ notify_admin_member_pre_booked_reservation:
+ subject: "New pre-registration"
+ body:
+ member_reserved_html: "User %{NAME} has pre-reserved
%{RESERVABLE}."
+ reserved_slots: "Pre-reserved slots are:"
notify_member_slot_is_modified:
subject: "Your reservation slot has been successfully changed"
body:
diff --git a/config/locales/mails.fr.yml b/config/locales/mails.fr.yml
index 1c7470606..b874511c3 100644
--- a/config/locales/mails.fr.yml
+++ b/config/locales/mails.fr.yml
@@ -78,6 +78,11 @@ fr:
body:
reservation_saved_html: "Votre réservation
%{RESERVATION} a bien été enregistrée."
your_reserved_slots: "Les créneaux que vous avez réservés sont :"
+ notify_member_pre_booked_reservation:
+ subject: "Votre pré-inscription a bien été pris en compte"
+ body:
+ reservation_saved_html: "Votre réservation
%{RESERVATION} a bien été pris en compte."
+ your_reserved_slots: "Les créneaux que vous avez pré-inscrit sont :"
notify_member_subscribed_plan_is_changed:
subject: "Votre abonnement a été mis à jour"
body:
@@ -87,6 +92,11 @@ fr:
body:
member_reserved_html: "Le membre %{NAME} a réservé
%{RESERVABLE}."
reserved_slots: "Les créneaux réservés sont :"
+ notify_admin_member_pre_booked_reservation:
+ subject: "Nouvelle pre-inscription"
+ body:
+ member_reserved_html: "Le membre %{NAME} a pre-inscrit
%{RESERVABLE}."
+ reserved_slots: "Les créneaux pre-inscrit sont :"
notify_member_slot_is_modified:
subject: "Votre créneau de réservation a bien été modifié"
body:
diff --git a/db/seeds/notification_types.rb b/db/seeds/notification_types.rb
index 01e3ac99d..9cce6a6a5 100644
--- a/db/seeds/notification_types.rb
+++ b/db/seeds/notification_types.rb
@@ -90,7 +90,9 @@ NOTIFICATIONS_TYPES = [
{ name: 'notify_admin_user_child_supporting_document_files_created', category: 'supporting_documents', is_configurable: true },
{ name: 'notify_member_reservation_validated', category: 'agenda', is_configurable: false },
- { name: 'notify_admin_reservation_validated', category: 'agenda', is_configurable: true }
+ { name: 'notify_admin_reservation_validated', category: 'agenda', is_configurable: true },
+ { name: 'notify_member_pre_booked_reservation', category: 'agenda', is_configurable: false },
+ { name: 'notify_admin_member_pre_booked_reservation', category: 'agenda', is_configurable: true }
].freeze
NOTIFICATIONS_TYPES.each do |notification_type|