private async Task SendReservationEmail(int bookingDtoType, string bookingDtoName, int reservationDtoAssistants, List<InvitedGuest> reservationDtoGuestList, string reservationDtoEmail, DateTime reservationDtoDate, Booking reservation) { var url = Configuration["EmailServiceUrl"]; var emailAndTokenTo = reservationDtoGuestList.Any() ? reservationDtoGuestList.ToDictionary(guest => guest.GuestToken, guest => guest.Email) : new Dictionary<string, string>(); var orderLines = reservation.Order.SelectMany(o => o.OrderLine).ToList().Select(o => o.IdDishNavigation.Name).ToList(); var acceptUrl = string.Format(Configuration["AcceptBooking"], reservation.ReservationToken); var cancelUrl = string.Format(Configuration["CancelBooking"], reservation.ReservationToken); var dataToSend = new EmailDto { BookingDate = reservationDtoDate, Assistants = reservationDtoAssistants > 0 ? reservationDtoAssistants : reservationDtoGuestList.Count, EmailAndTokenTo = emailAndTokenTo, EmailFrom = reservationDtoEmail, EmailType = bookingDtoType == 0 ? EmailTypeEnum.CreateBooking : EmailTypeEnum.Order, BookingToken = reservation.ReservationToken, ButtonActionList = bookingDtoType == 0 ? new Dictionary<string, string>() : new Dictionary<string, string> { { acceptUrl, "Accept" }, { cancelUrl, "Cancel" } }, DetailMenu = orderLines, Host = new Dictionary<string, string> { { reservation.Email, reservation.Name } }, }; await SendHostEmail(dataToSend); foreach (var guest in reservationDtoGuestList) { await SendInvitedGuestEmail(dataToSend, guest); } var mailService = new RestManagementService(); await mailService.CallPostMethod(url, dataToSend); }
private async Task SendHostEmail(EmailDto dataToSend) { var url = Configuration["EmailServiceUrl"]; var host = dataToSend.Host.FirstOrDefault(); dataToSend.EmailAndTokenTo.Add(host.Value, host.Key); dataToSend.EmailType = EmailTypeEnum.InvitedHost; dataToSend.ButtonActionList = new Dictionary<string, string>(); var mailService = new RestManagementService(); await mailService.CallPostMethod(url, dataToSend); }
private async Task SendInvitedGuestEmail(EmailDto dataToSend, InvitedGuest guest) { var url = Configuration["EmailServiceUrl"]; var acceptUrl = string.Format(Configuration["AcceptBooking"], guest.GuestToken); var cancelUrl = string.Format(Configuration["CancelBooking"], guest.GuestToken); dataToSend.EmailType = EmailTypeEnum.InvitedGuest; dataToSend.ButtonActionList = new Dictionary<string, string> { { acceptUrl, "Accept" }, { cancelUrl, "Cancel" } }; var mailService = new RestManagementService(); await mailService.CallPostMethod(url, dataToSend); }