Example #1
0
        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++;
            }
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
 private void AddContentToPdf(AgencyOwnerFixedPriceProposalDetailsOutput proposal, Document pdfDoc)
 {
     AddProposalDetailToPdf(proposal, pdfDoc);
     AddAgreementToPdf(proposal, pdfDoc);
     AddContractToPdf(proposal, pdfDoc);
     AddStoryToPdf(proposal, pdfDoc);
 }
Example #7
0
        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);
        }
Example #8
0
        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);
        }
Example #9
0
        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);
        }
Example #10
0
        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);
        }
Example #11
0
        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++;
            }
        }
Example #12
0
        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"
            });
        }