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)); }
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()); }