public Task <Result> NotifyDeadlineApproaching(int bookingId, string email)
        {
            return(_bookingRecordManager.Get(bookingId)
                   .Bind(async booking =>
            {
                var roomDescriptions = booking.Rooms
                                       .Select(r => r.ContractDescription);

                var passengers = booking.Rooms
                                 .SelectMany(r => r.Passengers)
                                 .Select(p => $"{p.FirstName} {p.LastName}");

                var deadlineData = new BookingDeadlineData
                {
                    BookingId = booking.Id,
                    RoomDescriptions = string.Join(", ", roomDescriptions),
                    Passengers = string.Join(", ", passengers),
                    ReferenceCode = booking.ReferenceCode,
                    CheckInDate = DateTimeFormatters.ToDateString(booking.CheckInDate),
                    CheckOutDate = DateTimeFormatters.ToDateString(booking.CheckOutDate),
                    Deadline = DateTimeFormatters.ToDateString(booking.DeadlineDate)
                };

                return await _notificationService.Send(agent: new SlimAgentContext(agentId: booking.AgentId, agencyId: booking.AgencyId),
                                                       messageData: deadlineData,
                                                       notificationType: NotificationTypes.DeadlineApproaching,
                                                       email: email);
            }));
        }
        public Task <Result> NotifyDeadlineApproaching(int bookingId, string email)
        {
            return(_bookingRecordsManager.Get(bookingId)
                   .Bind(booking =>
            {
                var roomDescriptions = booking.Rooms
                                       .Select(r => r.ContractDescription);

                var passengers = booking.Rooms
                                 .SelectMany(r => r.Passengers)
                                 .Select(p => $"{p.FirstName} {p.LastName}");

                var deadlineData = new BookingDeadlineData
                {
                    BookingId = booking.Id,
                    RoomDescriptions = string.Join(", ", roomDescriptions),
                    Passengers = string.Join(", ", passengers),
                    ReferenceCode = booking.ReferenceCode,
                    CheckInDate = DateTimeFormatters.ToDateString(booking.CheckInDate),
                    CheckOutDate = DateTimeFormatters.ToDateString(booking.CheckOutDate),
                    Deadline = DateTimeFormatters.ToDateString(booking.DeadlineDate)
                };

                return SendEmail(email, _options.DeadlineNotificationTemplateId, deadlineData);
            }));
        }