diff --git a/drivers/place/booking_notifier.cr b/drivers/place/booking_notifier.cr index dc560c2c22..10f8609c9a 100644 --- a/drivers/place/booking_notifier.cr +++ b/drivers/place/booking_notifier.cr @@ -175,6 +175,12 @@ class Place::BookingNotifier < PlaceOS::Driver description: "Notification when a booking is created for yourself", fields: common_fields ), + TemplateFields.new( + trigger: {"bookings", "rejected#{@template_suffix}"}, + name: "Booking rejected notification#{@template_fields_suffix}", + description: "Notification when a booking is rejected", + fields: common_fields + ), TemplateFields.new( trigger: {"bookings", "cancelled#{@template_suffix}"}, name: "Booking cancelled#{@template_fields_suffix}", @@ -198,7 +204,7 @@ class Place::BookingNotifier < PlaceOS::Driver end # Ignore when a bookings state is updated - unless {"approved", "cancelled", "metadata_changed"}.includes?(booking_details.action) + unless {"approved", "rejected", "cancelled", "metadata_changed"}.includes?(booking_details.action) logger.debug { "ignoring booking #{booking_details.id}: action '#{booking_details.action}' not in allowed list" } return end @@ -303,6 +309,14 @@ class Place::BookingNotifier < PlaceOS::Driver args: args, attachments: attachments ) + elsif booking_details.action == "rejected" || (booking_details.action == "metadata_changed" && booking_details.extension_data.dig?("details", "status").try(&.as_s) == "rejected") + logger.debug { "sending rejected notification for booking #{booking_details.id} (action: #{booking_details.action})" } + mailer.send_template( + to: send_to, + template: {"bookings", "rejected#{@template_suffix}"}, + args: args, + attachments: attachments + ) elsif booking_details.action == "cancelled" || (booking_details.action == "metadata_changed" && booking_details.extension_data.dig?("details", "status").try(&.as_s) == "cancelled") logger.debug { "sending cancelled notification for booking #{booking_details.id} (action: #{booking_details.action})" } mailer.send_template(