public ActionResult Sent(Guid?id) { Campaign campaign = Db.Campaigns .Include(x => x.Approved) .Include(x => x.ProDatas) .Include(x => x.Trackings) .FirstOrDefault(x => x.Id == id); if (campaign == null) { TempData["Error"] = "Campaign not found."; return(RedirectToAction("Index", "Campaigns")); } if (campaign.Approved == null) { TempData["Error"] = "Campaign is not passed through Testing and Approved phase."; return(RedirectToAction("Index", "Campaigns")); } Session["id"] = id; Session["OrderNumber"] = campaign.OrderNumber; var trackingVms = new List <CampaignTrackingVm>(); foreach (var campaignTracking in campaign.Trackings.OrderByDescending(x => x.CreatedAt)) { var model = CampaignTrackingVm.FromCampaignTracking(campaign, campaignTracking); trackingVms.Add(model); } trackingVms = trackingVms.ToList(); return(View(trackingVms)); }
// NOT USED public ActionResult Index(CampaignSearchVm sc) { ViewBag.CurrentSort = sc.SortOrder; ViewBag.CampaignNameSortParm = sc.SortOrder == "CampaignName" ? "CampaignName_desc" : "CampaignName"; ViewBag.BroadcastDateSortParm = sc.SortOrder == "BroadcastDate" ? "BroadcastDate_desc" : "BroadcastDate"; ViewBag.CreatedBySortParm = sc.SortOrder == "CreatedBy" ? "CreatedBy_desc" : "CreatedBy"; ViewBag.StatusSortParm = sc.SortOrder == "Status" ? "Status_desc" : "Status"; ViewBag.OrderNumberSortParm = sc.SortOrder == "OrderNumber" ? "OrderNumber_desc" : "OrderNumber"; var campagins = Db.Campaigns .Include(x => x.Testing) .Include(x => x.Approved) .Include(x => x.ProDatas) .Include(x => x.Trackings) .Include(x => x.Segments) .OrderByDescending(x => x.CreatedAt) .Where(x => x.Approved != null && (x.Status == (int)CampaignStatus.Monitoring || x.Segments.Any(s => s.SegmentStatus == (int)SegmentStatus.Monitoring))); campagins = FilterSortCampaigns(campagins, sc); ViewBag.BasicOrderNumber = OrderNumberList; ViewBag.BasicStatus = StatusList; ViewBag.AdvancedStatus = StatusList; ViewBag.AdvancedUser = UsersList; ViewBag.AdvancedWhiteLabel = CustomersWithWLList; var trackingVms = new List <CampaignTrackingVm>(); foreach (var campaign in campagins) { foreach (var campaignTracking in campaign.Trackings) { var model = CampaignTrackingVm.FromCampaignTracking(campaign, campaignTracking); trackingVms.Add(model); } } ViewBag.Status = StatusList; ViewBag.SearchStatus = StatusList; // Paging int pageNumber = (sc.Page ?? 1); return(View(trackingVms.ToPagedList(pageNumber, PageSize))); }
public ActionResult Report(Guid?id) { Campaign campaign = Db.Campaigns .Include(x => x.Approved) .Include(x => x.ProDatas) .Include(x => x.Trackings) .FirstOrDefault(x => x.Id == id); if (campaign == null) { TempData["Error"] = "Campaign not found."; return(RedirectToAction("Index", "Campaigns")); } if (campaign.Approved == null) { TempData["Error"] = "Campaign is not passed through Testing and Approved phase."; return(RedirectToAction("Index", "Campaigns")); } Session["id"] = id; Session["OrderNumber"] = campaign.OrderNumber; var trackingVms = new List <CampaignTrackingVm>(); foreach (var campaignTracking in campaign.Trackings) { var model = CampaignTrackingVm.FromCampaignTracking(campaign, campaignTracking); trackingVms.Add(model); } trackingVms = trackingVms.OrderBy(x => x.OrderNumber).ToList(); ViewBag.Templates = new SelectList(ReportTemplates, "Value", "Text"); ViewBag.Formats = new SelectList(DownloadFormats, "Value", "Text"); ViewBag.Templates1 = new SelectList(ReportTemplates, "Value", "Text"); ViewBag.Formats1 = new SelectList(DownloadFormats, "Value", "Text"); return(View(trackingVms)); }
public void Generate(CampaignTrackingVm model, string outputFilePath, string companyLogo, string screenshotFilePath) { string ImagesPath = HttpContext.Current.Server.MapPath($"~/images"); string LogoFilePath = string.IsNullOrEmpty(companyLogo) ? $"{ImagesPath}\\logoResized.png" : $"{ImagesPath}\\{companyLogo}"; StringBuilder html = new StringBuilder(); //html.Append(System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath("~/Templates/ReportTemplate.html"))); html.AppendFormat(@"<!DOCTYPE html><html><head> <link rel='stylesheet' href='{0}'> <style> .body { font-family: 'Calibri, Helvetica Neue, Helvetica, Arial, sans-serif'; } .top { height: 60px !important } .header { font-size: x-large; font-weight:bolder; color: #FFF; background-color: #57C1E8; } .grey_bg { background-color: #808080; } .blue_bg { background-color: #57C1E8; } .header1 { font-size: larger; font-weight: bolder; } .blue_color { color: #2F5497; } .grey_color { color: #808080; } .white_color { color: #FFF; } .black { color: #000; } .img { width: 500px !important; height: 65px !important; } table > tbody > tr > td { padding: 0px !important; height: 40px !important } table, tr, td, th, tbody, thead, tfoot { page-break-inside: avoid !important; } table { table-layout: fixed; padding: 5px; border-collapse:collapse; width: 100%; border-spacing: 0px } .round { border-radius: 15px; color: #FFF; padding-left: 25px !important; padding-top: 10px !important; width: 50px; height: 50px; } .new-page { page-break-before: always; } .center { display: block; margin: 0 auto; } </style> </head> <body>", BootstrapPath); html.AppendFormat(@" <table class='table'> <tr> <td colspan='8' class='top header'>Campaign Results</td> <td colspan='2' class='top header'>Report Date</td> <td colspan='2' class='top header'>{0}</td> </tr> <tr> <td colspan='8' rowspan='2'> <img class='img' src='{1}' /> </td> <td colspan='2' class='header'>Sent</td> <td colspan='2' class='header'>{2}</td> </tr> <tr> <td colspan='2' class='header grey_bg'>Opened %</td> <td colspan='2' class='header grey_bg'>{3}</td> </tr> <tr> <td colspan='2' class='header1 blue_color'>Send Time:</td> <td colspan='6'>{4}</td> <td colspan='2' class='header'>Clicked%</td> <td colspan='2' class='header'>{5}</td> </tr>", DateTime.Now.ToString(StringConstants.DateFormatSlashes), LogoFilePath, model.Quantity, model.OpenedPercentage, model.StartDate, model.ClickedPercentage); html.AppendFormat(@"<tr> <td colspan='2' class='header1 blue_color'>Subject Line:</td> <td colspan='6'>{0}</td> <td colspan='2' class='header grey_bg'>HTML CTR %</td> <td colspan='2' class='header grey_bg'>{1}</td> </tr> <tr> <td colspan='2' class='header1 blue_color'>From:</td> <td colspan='5'>{2}</td> <td colspan='5' rowspan='7' style='vertical-align:bottom'> <img align='right' src='D:/GitHub/ADSDataDirect/ADSDataDirect.Web/images/chart.png' /> </td> </tr> <tr> <td colspan='2' class='header1 blue_color'>User:</td> <td colspan='5'>{3}</td> </tr> <tr> <td colspan='2' class='header1 blue_color'>Order Number:</td> <td colspan='5'>{4}</td> </tr> <tr> <td colspan='2' class='header1 blue_color'>Campaign Name:</td> <td colspan='5'>{5}</td> </tr> <tr> <td colspan='2' class='header1 blue_color'>Data Files:</td> <td colspan='5'>N/A</td> </tr>", model.SubjectLine, model.ClickToOpenPercentage, model.FromLine, model.WhiteLabel, model.IoNumber, model.CampaignName); html.AppendFormat(@"<tr> <td colspan='2' class='header1 white_color grey_bg'>Retargeting Impressions</td> <td colspan='5' class='header1 white_color grey_bg'>{0}</td> </tr> <tr> <td colspan='2' class='header1 white_color grey_bg'>Retargeting Clicks</td> <td colspan='5' class='header1 white_color grey_bg'>{1}</td> </tr> <tr> <td colspan='4' class='header1 blue_color'>Key statistics for this compaign:</td> <td colspan='8'></td> </tr> <tr style='margin-top:15px'> <td colspan='1' class='header1 blue_bg round'>Sent</td> <td colspan='1'></td> <td colspan='2' class='header1'>{2}</td> <td colspan='7'></td> </tr> <tr style='margin-top:15px'> <td colspan='1' class='header1 grey_bg round'>Opened</td> <td colspan='1'></td> <td colspan='2' class='header1'>{3}</td> <td colspan='3'></td> <td colspan='1'>Desktop</td> <td colspan='1' class='header1'>{4}</td> <td colspan='1'></td> <td colspan='1'>Mobile</td> <td colspan='1' class='header1'>{5}</td> </tr> <tr> <td colspan='1' class='header1 blue_bg round'>Clicked</td> <td colspan='1'></td> <td colspan='2' class='header1'>{6}</td> <td colspan='3'></td> <td colspan='1'>Click %</td> <td colspan='1' class='header1'>{7}</td> <td colspan='1'></td> <td colspan='1'>HTML CTR%</td> <td colspan='1' class='header1'>{8}</td> </tr> <tr style='margin-top:15px'> <td colspan='1' class='header1 grey_bg round'>Bounce</td> <td colspan='1'></td> <td colspan='10' class='header1'>{9}</td> </tr> <tr style='margin-top:15px'> <td colspan='1' class='header1 blue_bg round'>Opt Outs</td> <td colspan='1'></td> <td colspan='10' class='header1'>{10}</td> </tr> </table> <table class='new-page table'> <tr> <td colspan='11' class='top header'>Links</td> <td colspan='1' class='top header'>Quantity</td> </tr>", model.RetargetingImpressions, model.RetargetingClicks, model.Quantity, model.Opened, model.Desktop, model.Mobile, model.Clicked, model.ClickedPercentage, model.ClickToOpenPercentage, model.Bounce, model.Opt ); foreach (var item in model.PerLink) { html.AppendFormat(@" <tr> <td colspan='11'>{0}</td> <td colspan='1'>{1}</td> </tr>", item.Link, item.ClickCount); } html.AppendFormat(@" </table> <table class='new-page table'> <tr> <td colspan='12' class='top header'>Creative Design</td> </tr> <tr> <td colspan='12'></td> </tr> <tr> <td colspan='12'> <img class='center' src='{0}' /> </td> </tr> </table> </body> </html>", screenshotFilePath); string htmlString = html.ToString(); HtmlToPdf(htmlString, outputFilePath, true); }