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));
        }
Example #4
0
        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);
        }