private void SendPurchaseEmail(MyAccountOrderSummaryViewModel viewModel) { ConvertSummaryToPDF(viewModel); }
public string ConvertSummaryToPDF(MyAccountOrderSummaryViewModel viewModel) { var pdfFullName = string.Format("{0}TTTOrder({1}).pdf", Properties.Settings.Default.OrderPDFPath, viewModel.SalesOrderID); Document document = new Document(new RectangleReadOnly(842, 595), 88f, 88f, 10f, 10f); PdfWriter.GetInstance(document, new FileStream(pdfFullName, FileMode.Create)); document.Open(); var summaryContent = RenderRazorViewToString("OrderSummary", viewModel); summaryContent = summaryContent.Replace("<hr class=\"divline\" />", "......................................................................................................................................................................................................."); summaryContent = summaryContent.Replace("<hr noshade=\"noshade\" class=\"divline\" />", "........................................................."); summaryContent = summaryContent.Replace("<hr class=\"divline short\" />", "..............................................................................................................................."); List<IElement> htmlarraylist = HTMLWorker.ParseToList(new StringReader(summaryContent),null); for (int k = 0; k < htmlarraylist.Count; k++) { document.Add((IElement)htmlarraylist[k]); } document.Close(); return pdfFullName; }
public virtual ActionResult OrderSummary(int id) { var access = Util.SessionAccess; var viewModel = new MyAccountOrderSummaryViewModel() { SalesOrderID = id }; using (var context = new TTTEntities()) { var salesOrder = context.trnsalesorders.Single(a => a.ID == id); if (salesOrder == null) throw new ApplicationException("No Order found."); viewModel.BillingAddress = context.lnksoaddresses .Include(a => a.refcountry) .SingleOrDefault(a => a.IsBilling && a.Active && a.SalesOrderID == salesOrder.ID); viewModel.ShippingAddress = context.lnksoaddresses .Include(a => a.refcountry) .SingleOrDefault(a => a.IsShipping && a.Active && a.SalesOrderID == salesOrder.ID); viewModel.Items = (from a in context.lnksalesorders join b in context.lnkmodelsizes on a.ModelSizeID equals b.ID into bTemp from bb in bTemp.DefaultIfEmpty() join c in context.lnkmodelcolourdescs on new { ColourDescID = bb.ColourDescID, ModelID = bb.ModelID } equals new { ColourDescID = c.ColourDescID, ModelID = c.ModelID } into cTemp from cc in cTemp.DefaultIfEmpty() join d in context.refmodels on cc.ModelID equals d.ID into dTemp from dd in dTemp.DefaultIfEmpty() join e in context.refbrands on dd.BrandID equals e.ID into eTemp from ee in eTemp.DefaultIfEmpty() join f in context.refcategories on ee.CategoryID equals f.ID into fTemp from ff in fTemp.DefaultIfEmpty() join h in context.refcolourdescs on cc.ColourDescID equals h.ID into hTemp from hh in hTemp.DefaultIfEmpty() join i in context.refcolours on hh.ColourID equals i.ID into iTemp from ii in iTemp.DefaultIfEmpty() join g in context.lnkcustomizemodelimages on a.SKU equals g.SKU into gTemp from gg in gTemp.DefaultIfEmpty() join j in context.refcustomizemodels on gg.CustomizeModelID equals j.ID into jTemp from jj in jTemp.DefaultIfEmpty() where a.SalesOrderID == salesOrder.ID && a.Active select new MyAccountOrderSummaryItem { Color = a.ModelSizeID.HasValue ? hh.Name : gg.Colour, Name = a.ModelSizeID.HasValue ? dd.Name : jj.Name, Price = a.ModelSizeID.HasValue ? dd.Price : jj.Price, Quantity = a.Quantity, Size = a.ModelSizeID.HasValue ? bb.Size : a.Size, SKU = a.SKU }).ToList(); viewModel.Subtotal = viewModel.Items.Sum(a => a.Price * a.Quantity); viewModel.ShippingPrice = Properties.Settings.Default.ShippingFee; viewModel.OrderTotalPrice = viewModel.Subtotal + viewModel.ShippingPrice; if (salesOrder.VoucheID.HasValue) { var currentVoucher = context.tblvouchers.Where(a => a.ID == salesOrder.VoucheID.Value).Single(); viewModel.VoucherCode = currentVoucher.Code; viewModel.RebateCashValue = currentVoucher.Value; viewModel.OrderTotalPrice -= currentVoucher.Value; } if (!string.IsNullOrEmpty(salesOrder.PaymentGatewayTransID)) { var salesOrderIDString = salesOrder.ID.ToString(); var logPayment = context.logpayments .FirstOrDefault(a => a.TransId == salesOrder.PaymentGatewayTransID && a.RefNo == salesOrderIDString); viewModel.PaymentDT = logPayment == null ? "" : logPayment.CreateDT.ToString("dd MMM yyyy, hh.mmsstt"); viewModel.PaymentStatus = "Paid"; } } return View(viewModel); }