private string GenerateEmailContent(ConfirmationPaymentViewModel confirmationPaymentViewModel) { StringBuilder sb = new StringBuilder(); foreach (var payment in confirmationPaymentViewModel.Payments) { var paymentsInfoHtml = string.Format( GlobalConstants.PaymentConfitmationHtmlInfo, payment.DateOfPayment.ToString("dd/MM/yyyy"), payment.Amount, payment.PaymentTypeName); sb.AppendLine(paymentsInfoHtml); } var path = GlobalConstants.PaymentReceiptEmailHtmlPath; var doc = new HtmlDocument(); doc.Load(path); var content = doc.Text; content = content.Replace(GlobalConstants.PaymentInfoPlaceholder, sb.ToString()); return(content); }
public async Task <IActionResult> Confirm(string id) { var reservation = await this.reservationsService.GetReservationByIdAsync(id); var status = this.reservationStatusesService.GetReserVationStatusByName("Confirmed"); await this.reservationsService.ConfirmByIdAsync(reservation.Id, status.Id); var paymentIds = this.reservationPaymentsService.GetAllPaymentsByReservationId(reservation.Id); List <DetailsPaymentViewModel> payments = new List <DetailsPaymentViewModel>(); foreach (var paymentId in paymentIds) { var payment = await this.paymentsService.GetViewModelByIdAsync <DetailsPaymentViewModel>(paymentId); payments.Add(payment); } var confirmationPayment = new ConfirmationPaymentViewModel { Payments = payments, }; var emailContent = this.GenerateEmailContent(confirmationPayment); var emailAttachment = new EmailAttachment { Content = Encoding.UTF8.GetBytes(emailContent), FileName = "Confirmation.doc", MimeType = "application/msword", }; var user = await this.userManager.FindByIdAsync(reservation.UserId); var attachments = new List <EmailAttachment> { emailAttachment }; await this.emailSender.SendEmailAsync( GlobalConstants.SystemEmail, GlobalConstants.SystemName, user.Email, "Payment Confirmation", $"This email is to confirmation your reservation No{reservation.Id}. Please find attaced file with details for your payment", attachments); return(this.Redirect($"/Administration/Reservations/ConfirmPayment")); }