public ActionResult SendEmail(EmailViewModel vm)
 {
     try
     {
         OrdersTransfereeItineraryViewModel viewModel = BuildItineraryByOrderId(vm.id);
         viewModel.Id    = vm.id;
         viewModel.IsPdf = true;
         var to = ParseAddress(vm.Email);
         if (to == null)
         {
             return(null);
         }
         Transferee ee = GetTransfereeByOrderId(vm.id);
         if (ee == null)
         {
             return(new HttpStatusCodeResult(HttpStatusCode.NotFound, "Not found"));
         }
         viewModel.TransfereeName = ee.FullName;
         string       filename = "Itinerary" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf";
         var          pdf      = new Rotativa.ViewAsPdf("~/Views/PDF/PDFItinerary.cshtml", viewModel);
         byte[]       pdfBytes = pdf.BuildFile(ControllerContext);
         MemoryStream stream   = new MemoryStream(pdfBytes);
         EmailHelper  EH       = new EmailHelper();
         EH.SendEmail_FS(to, vm.Subject, vm.Message, SendGrid.MimeType.Html, filename, pdfBytes);
         viewModel.IsPdf = false;
         return(PartialView("~/views/orders/partials/_Itinerary.cshtml", viewModel));
     }
     catch (Exception ex)
     {
         ModelState.Clear();
         return(null);
     }
 }
Example #2
0
        private string GeneratePDF(SolicitudViewModel solicitud)
        {
            var date     = DateTime.Now.ToString("yyyyMMddHHmmss");
            var id       = solicitud.Id;
            var fileName = $"{id}_{date}";

            var actionPDF = new Rotativa.ViewAsPdf("PDFView", solicitud)
            {
                PageSize        = Rotativa.Options.Size.A4,
                PageOrientation = Rotativa.Options.Orientation.Portrait,
                PageMargins     = new Margins(12, 25, 12, 25)
            };

            byte[] pdf = actionPDF.BuildFile(ControllerContext);
            using (FileStream stream = new FileStream(Server.MapPath($"~/PDFs/{fileName}.pdf"), FileMode.Create, FileAccess.Write, FileShare.Read))
            {
                stream.Write(pdf, 0, pdf.Length);
            }

            return($"{fileName}.pdf");
        }
        public ActionResult SendEmail(EmailViewModel vm)
        {
            try
            {
                var to = ParseAddress(vm.Email);
                if (to == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Missing 'to' field!"));
                }

                var userId = User.Identity.GetUserId();
                var order  = _unitOfWork.Orders.GetOrderFor(userId, vm.id, User.GetUserRole());

                if (order == null || order.Transferee == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.NotFound, "Not found"));
                }

                OrdersTransfereeItineraryViewModel viewModel = BuildItineraryFromOrder(order);
                viewModel.Id    = vm.id;
                viewModel.IsPdf = true;

                viewModel.TransfereeName = order.Transferee.FullName;
                string       filename = "Itinerary" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf";
                var          pdf      = new Rotativa.ViewAsPdf("~/Views/PDF/PDFItinerary.cshtml", viewModel);
                byte[]       pdfBytes = pdf.BuildFile(ControllerContext);
                MemoryStream stream   = new MemoryStream(pdfBytes);
                EmailHelper  EH       = new EmailHelper();
                EH.SendEmail_FS(to, vm.Subject, vm.Message, SendGrid.MimeType.Html, filename, pdfBytes);
                viewModel.IsPdf = false;
                return(PartialView("~/views/PDF/PDFItinerary.cshtml", viewModel));
            }
            catch (Exception ex)
            {
                ModelState.Clear();
                return(null);
            }
        }