private void CreateStoryTable(AgencyOwnerFixedPriceProposalDetailsOutput proposal, PdfPTable pdfTable) { var font = GetCommonFont(); PdfPRow headerRow = new PdfPRow(new[] { AddHeaderToDetailTable(font, "TITLE", Element.ALIGN_LEFT), AddHeaderToDetailTable(font, "STORY POINTS", Element.ALIGN_RIGHT) }); pdfTable.Rows.Add(headerRow); int i = 0; var backgroundColor = new BaseColor(246, 249, 252); foreach (var proposedStory in proposal.ProposedStories) { PdfPRow dataRow = new PdfPRow(new[] { AddCellToDetailTable(font, proposedStory.Title, Element.ALIGN_LEFT, i % 2 != 0 ? backgroundColor : BaseColor.White), AddCellToDetailTable(font, (proposedStory.StoryPoints ?? 0).ToString(), Element.ALIGN_RIGHT, i % 2 != 0 ? backgroundColor : BaseColor.White) }); pdfTable.Rows.Add(dataRow); i++; } }
private static void AddLogoToPdf(AgencyOwnerFixedPriceProposalDetailsOutput proposal, PdfPTable layoutTable) { PdfPCell orgImageCell = new PdfPCell { Border = Rectangle.NO_BORDER, HorizontalAlignment = Element.ALIGN_LEFT, VerticalAlignment = Element.ALIGN_TOP, MinimumHeight = 80 }; if (!string.IsNullOrEmpty(proposal.AccountManagerOrganizationImageUrl?.Trim())) { Image orgImage = Image.GetInstance(proposal.AccountManagerOrganizationImageUrl); orgImage.ScaleToFit(70, 70); orgImage.Alignment = Element.ALIGN_LEFT | Element.ALIGN_TOP; orgImageCell.AddElement(orgImage); } layoutTable.AddCell(orgImageCell); var fontHeader = GetCommonFont(22); AddCellToTable(layoutTable, fontHeader, "Proposal", Element.ALIGN_RIGHT, 1, 2); AddCellToTable(layoutTable, fontHeader, "", Element.ALIGN_RIGHT, 1, 3); }
private void AddStoryToPdf(AgencyOwnerFixedPriceProposalDetailsOutput proposal, Document pdfDoc) { Paragraph storyHeader = new Paragraph(new Phrase("Stories", GetCommonFont(13))) { SpacingBefore = 10f, SpacingAfter = 15f }; pdfDoc.Add(storyHeader); var storyTable = new PdfPTable(2) { WidthPercentage = 100, HorizontalAlignment = Element.ALIGN_LEFT, HeaderRows = 1 }; if (proposal.ProposedStories.Any()) { storyTable.SetWidths(new float[] { 4, 1 }); CreateStoryTable(proposal, storyTable); } pdfDoc.Add(storyTable); }
private void AddContractToPdf(AgencyOwnerFixedPriceProposalDetailsOutput proposal, Document pdfDoc) { Paragraph contractHeader = new Paragraph(new Phrase("Contracts", GetCommonFont(13))) { SpacingAfter = 15f }; pdfDoc.Add(contractHeader); var pdfTable = new PdfPTable(3) { WidthPercentage = 100, HorizontalAlignment = Element.ALIGN_LEFT, HeaderRows = 1 }; if (proposal.ProposedContracts.Any()) { pdfTable.SetWidths(new float[] { 3, 1, 1 }); CreateContractorTable(proposal, pdfTable); } pdfDoc.Add(pdfTable); }
public static PdfPTable CreateRightTable(AgencyOwnerFixedPriceProposalDetailsOutput proposal) { var pdfTable = new PdfPTable(2) { WidthPercentage = 49, HorizontalAlignment = Element.ALIGN_RIGHT }; pdfTable.SetWidths(new[] { 3f, 1f }); Font fontHeader = GetGreyFont(); Font fontNormal = GetCommonFont(); CreateDetailInPdf(pdfTable, "", proposal.ProjectName, fontHeader, fontNormal, 1, 2); CreateDetailInPdf(pdfTable, "STATUS", proposal.Status.ToString(), fontHeader, fontNormal); CreateDetailInPdf(pdfTable, "PROPOSAL TYPE", proposal.ProposalType.ToString(), fontHeader, fontNormal); CreateDetailInPdf(pdfTable, "PROPOSAL PRICE", "$" + proposal.TotalPriceQuoted.ToString("N2"), fontHeader, fontNormal); CreateDetailInPdf(pdfTable, "TOTAL HOURS", proposal.TotalHours.ToString(), fontHeader, fontNormal); CreateDetailInPdf(pdfTable, "CUSTOMER RATE BASIS", "$" + proposal.CustomerRateBasis.ToString(), fontHeader, fontNormal); CreateDetailInPdf(pdfTable, "STORY POINT BASIS", proposal.StoryPointBasis.ToString(), fontHeader, fontNormal); CreateDetailInPdf(pdfTable, "WEEKLY MAX HOUR BASIS", proposal.WeeklyMaxHourBasis.ToString(), fontHeader, fontNormal); return(pdfTable); }
private void AddContentToPdf(AgencyOwnerFixedPriceProposalDetailsOutput proposal, Document pdfDoc) { AddProposalDetailToPdf(proposal, pdfDoc); AddAgreementToPdf(proposal, pdfDoc); AddContractToPdf(proposal, pdfDoc); AddStoryToPdf(proposal, pdfDoc); }
private static void AddProposalDetailToPdf(AgencyOwnerFixedPriceProposalDetailsOutput proposal, Document pdfDoc) { PdfPTable proposalDetailTable = new PdfPTable(2) { WidthPercentage = 100 }; proposalDetailTable.SetWidths(new float[] { 1, 3 }); AddLeftRightContentToPdf(proposal, proposalDetailTable); pdfDoc.Add(proposalDetailTable); }
private static void AddAgreementToPdf(AgencyOwnerFixedPriceProposalDetailsOutput proposal, Document pdfDoc) { Paragraph agreementHeader = new Paragraph(new Phrase("Agreement Terms", GetCommonFont(13))) { SpacingAfter = 10f, Alignment = Element.ALIGN_LEFT }; Paragraph agreementContent = new Paragraph(new Phrase(proposal.AgreementText?.Trim() ?? " ", GetGreyFont())) { SpacingAfter = 15f, Alignment = Element.ALIGN_JUSTIFIED }; pdfDoc.Add(agreementHeader); pdfDoc.Add(agreementContent); }
public static PdfPTable CreateLeftTable(AgencyOwnerFixedPriceProposalDetailsOutput proposal) { var pdfTable = new PdfPTable(1) { WidthPercentage = 100 }; CreateEntityInPdf(pdfTable, "Account Manager", proposal.AccountManagerName, proposal.AccountManagerOrganizationName); CreateEntityInPdf(pdfTable, "Project Manager", proposal.ProjectManagerName, proposal.ProjectManagerOrganizationName); CreateEntityInPdf(pdfTable, "Customer", proposal.CustomerName, proposal.CustomerOrganizationName); return(pdfTable); }
private static void AddLeftRightContentToPdf(AgencyOwnerFixedPriceProposalDetailsOutput proposal, PdfPTable layoutTable) { AddLogoToPdf(proposal, layoutTable); PdfPCell leftDetails = new PdfPCell { Border = Rectangle.NO_BORDER }; leftDetails.AddElement(CreateLeftTable(proposal)); layoutTable.AddCell(leftDetails); PdfPCell rightDetails = new PdfPCell { Border = Rectangle.NO_BORDER }; rightDetails.AddElement(CreateRightTable(proposal)); layoutTable.AddCell(rightDetails); }
private void CreateContractorTable(AgencyOwnerFixedPriceProposalDetailsOutput proposal, PdfPTable pdfTable) { var fontTableHeader = GetCommonFont(); PdfPRow headerRow = new PdfPRow(new[] { AddHeaderToDetailTable(fontTableHeader, "CONTRACTOR"), AddHeaderToDetailTable(fontTableHeader, "CUSTOMER RATE"), AddHeaderToDetailTable(fontTableHeader, "CU MAX WEEKLY") }); pdfTable.Rows.Add(headerRow); int i = 0; var backgroundColor = new BaseColor(246, 249, 252); foreach (var proposedContract in proposal.ProposedContracts) { CreateContractorRow(proposedContract, pdfTable, fontTableHeader, i % 2 != 0 ? backgroundColor : BaseColor.White); i++; } }
private FileStreamResult CreatePdf(AgencyOwnerFixedPriceProposalDetailsOutput proposal) { MemoryStream stream = new MemoryStream(); Document pdfDoc = new Document(PageSize.A4, 30f, 30f, 20f, 20f); PdfWriter writer = PdfWriter.GetInstance(pdfDoc, stream); pdfDoc.Open(); AddContentToPdf(proposal, pdfDoc); pdfDoc.Close(); writer.Close(); stream.Position = 0; return(new FileStreamResult(stream, "application/pdf") { FileDownloadName = proposal.Id + ".pdf" }); }