コード例 #1
0
        public static async Task <string> CreateSingleHtmlDocument(PrintRequestingUser printingUser, IEnumerable <PrintReferral> referrals, IEnumerable <PrintSummary> summaryItems, bool includeSummary, bool displayWatermark, string title)
        {
            var html = new StringBuilder();

            if (includeSummary)
            {
                html.Append(await CreateReferalHtmlSummary(summaryItems, printingUser, displayWatermark));
                html.Append(PageBreak);
            }
            foreach (var referral in referrals)
            {
                html.Append(await CreateReferralHtmlPage(referral));
                html.Append(PageBreak);
            }

            return(await CreateDocument(html.ToString(), title));
        }
コード例 #2
0
        public static async Task <string> CreateReferalHtmlSummary(IEnumerable <PrintSummary> summaryItems, PrintRequestingUser requestingUser, bool displayWatermark)
        {
            var handlebars = CreateHandleBars();

            var summaryBreakCount = 0;
            var printedCount      = 0;
            var html  = new StringBuilder();
            var items = new StringBuilder();

            foreach (var summary in summaryItems)
            {
                summaryBreakCount += 1;
                printedCount      += 1;
                var partialViewType        = summary.Type;
                var partialViewDisplayName = partialViewType.GetType()
                                             .GetMember(partialViewType.ToString())
                                             .First()
                                             .GetCustomAttribute <DisplayAttribute>()
                                             .GetName();
                handlebars.RegisterTemplate("titlePartial", partialViewDisplayName);

                var useSummaryVersion = partialViewType == PrintReferralType.Hotel || partialViewType == PrintReferralType.Billeting;

                handlebars.RegisterTemplate("itemsPartial", await GetItemsPartialView(partialViewType, useSummaryVersion));
                handlebars.RegisterTemplate("itemsDetailTitle", "Details");
                handlebars.RegisterTemplate("notesPartial", await GetNotesPartialView(partialViewType));

                var template = handlebars.Compile(await LoadTemplate(ReferalMainViews.SummaryItem.ToString()));

                var purchaserName      = summary.PurchaserName;
                var volunteerFirstName = requestingUser.FirstName;
                var volunteerLastName  = requestingUser.LastName;
                var itemResult         = template(summary);
                var essNumber          = summary.EssNumber;
                items.Append(itemResult);

                if (summaryBreakCount == 3 || printedCount == summaryItems.Count())
                {
                    summaryBreakCount = 0;
                    handlebars.RegisterTemplate("summaryItemsPartial", items.ToString());

                    var mainTemplate = handlebars.Compile(await LoadTemplate(ReferalMainViews.Summary.ToString()));
                    var data         = new { volunteerFirstName, volunteerLastName, purchaserName, displayWatermark, essNumber };
                    html.Append(mainTemplate(data));
                    html.Append(PageBreak);
                    items.Clear();
                }
            }
            return(html.ToString());
        }