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); })); }