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