public Task <Result> SendInvoice(Booking booking, string email, bool sendCopyToAdmins, SlimAgentContext agent) { // TODO: hardcoded to be removed with UEDA-20 var addresses = new List <string> { email }; if (sendCopyToAdmins) { addresses.AddRange(_options.CcNotificationAddresses); } return(_documentsService.GetActualInvoice(booking) .Bind(async invoice => { var(registrationInfo, data) = invoice; var invoiceData = new InvoiceData { Number = registrationInfo.Number, BuyerDetails = data.BuyerDetails, InvoiceDate = DateTimeFormatters.ToDateString(registrationInfo.Date), InvoiceItems = data.InvoiceItems .Select(i => new InvoiceData.InvoiceItem { Number = i.Number, Price = FormatPrice(i.Price), Total = FormatPrice(i.Total), AccommodationName = i.AccommodationName, RoomDescription = i.RoomDescription, RoomType = EnumFormatters.FromDescription <RoomTypes>(i.RoomType), DeadlineDate = DateTimeFormatters.ToDateString(i.DeadlineDate), MainPassengerName = PersonNameFormatters.ToMaskedName(i.MainPassengerFirstName, i.MainPassengerLastName) }) .ToList(), TotalPrice = FormatPrice(data.TotalPrice), CurrencyCode = EnumFormatters.FromDescription(data.TotalPrice.Currency), ReferenceCode = data.ReferenceCode, SupplierReferenceCode = data.SupplierReferenceCode, SellerDetails = data.SellerDetails, PayDueDate = DateTimeFormatters.ToDateString(data.PayDueDate), CheckInDate = DateTimeFormatters.ToDateString(data.CheckInDate), CheckOutDate = DateTimeFormatters.ToDateString(data.CheckOutDate), PaymentStatus = EnumFormatters.FromDescription(data.PaymentStatus), DeadlineDate = DateTimeFormatters.ToDateString(data.DeadlineDate) }; return await _notificationsService.Send(agent: agent, messageData: invoiceData, notificationType: NotificationTypes.BookingInvoice, emails: addresses); })); }
public Task <Result> SendInvoice(int bookingId, string email, int agentId) { // TODO: hardcoded to be removed with UEDA-20 var addresses = new List <string> { email }; addresses.AddRange(_options.CcNotificationAddresses); return(_bookingDocumentsService.GetActualInvoice(bookingId, agentId) .Bind(invoice => { var(registrationInfo, data) = invoice; var invoiceData = new InvoiceData { Number = registrationInfo.Number, BuyerDetails = data.BuyerDetails, InvoiceDate = DateTimeFormatters.ToDateString(registrationInfo.Date), InvoiceItems = data.InvoiceItems .Select(i => new InvoiceData.InvoiceItem { Number = i.Number, Price = FormatPrice(i.Price), Total = FormatPrice(i.Total), AccommodationName = i.AccommodationName, RoomDescription = i.RoomDescription, RoomType = EnumFormatters.FromDescription(i.RoomType), DeadlineDate = DateTimeFormatters.ToDateString(i.DeadlineDate), MainPassengerName = PersonNameFormatters.ToMaskedName(i.MainPassengerFirstName, i.MainPassengerLastName) }) .ToList(), TotalPrice = FormatPrice(data.TotalPrice), CurrencyCode = EnumFormatters.FromDescription(data.TotalPrice.Currency), ReferenceCode = data.ReferenceCode, SellerDetails = data.SellerDetails, PayDueDate = DateTimeFormatters.ToDateString(data.PayDueDate), CheckInDate = DateTimeFormatters.ToDateString(data.CheckInDate), CheckOutDate = DateTimeFormatters.ToDateString(data.CheckOutDate), PaymentStatus = EnumFormatters.FromDescription(data.PaymentStatus) }; return _mailSender.Send(_options.InvoiceTemplateId, addresses, invoiceData); })); }
public static string GetLeadingPassengerFormattedName(this Booking booking) { var leadingPassengersList = booking.Rooms .SelectMany(r => { if (r.Passengers == null) { return(new List <Passenger>(0)); } return(r.Passengers.Where(p => p.IsLeader)); }) .ToList(); if (leadingPassengersList.Any()) { var leadingPassenger = leadingPassengersList.First(); return(PersonNameFormatters.ToMaskedName(leadingPassenger.FirstName, leadingPassenger.LastName, EnumFormatters.FromDescription(leadingPassenger.Title))); } return(PersonNameFormatters.ToMaskedName("*", string.Empty)); }