private Color GetColorForNoiseLevel(NoiseLevelEnum noiseLevelEnum)
        {
            switch (noiseLevelEnum)
            {
            case NoiseLevelEnum.Critical:
            {
                return(Color.FromRgb(255, 0, 0));
            }

            case NoiseLevelEnum.DangerOfWorkRelatedInjury:
            {
                return(Color.FromRgb(255, 0, 0));
            }

            case NoiseLevelEnum.Warning:
            {
                return(Color.FromRgb(255, 255, 0));
            }

            case NoiseLevelEnum.MaximumAllowedDosage:
            {
                return(Color.FromRgb(255, 255, 0));
            }

            default:
            {
                return(Color.FromRgb(160, 255, 0));
            }
            }
        }
        private MigraDoc.DocumentObjectModel.Color GetColorForNoiseLevelPdfSharp(NoiseLevelEnum noiseLevelEnum)
        {
            switch (noiseLevelEnum)
            {
            case NoiseLevelEnum.Critical:
            {
                return(MigraDoc.DocumentObjectModel.Color.FromRgbColor(200, Colors.Red));
            }

            case NoiseLevelEnum.DangerOfWorkRelatedInjury:
            {
                return(MigraDoc.DocumentObjectModel.Color.FromRgbColor(200, Colors.Red));
            }

            case NoiseLevelEnum.Warning:
            {
                return(MigraDoc.DocumentObjectModel.Color.FromRgbColor(200, Colors.Yellow));
            }

            case NoiseLevelEnum.MaximumAllowedDosage:
            {
                return(MigraDoc.DocumentObjectModel.Color.FromRgbColor(200, Colors.Yellow));
            }

            default:
            {
                return(MigraDoc.DocumentObjectModel.Color.FromRgbColor(200, Colors.YellowGreen));
            }
            }
        }
        public void CalculateNoiseLevelEnum_PercentgeIsAbove200_ReturnEnumValueWorkRelatedInjury()
        {
            // Arrange
            INoiseLevelService noiseLevelService = new NoiseLevelService();
            const int percentageDailyDosage = 208;

            // Act
            NoiseLevelEnum noiseLevelEnum = noiseLevelService.CalculateNoiseLevelEnum(percentageDailyDosage);

            // Assert
            Assert.IsTrue(noiseLevelEnum == NoiseLevelEnum.DangerOfWorkRelatedInjury);
        }
        public void CalculateNoiseLevelEnum_PercentageIsExactly100_ReturnsEnumValueMaximumAllowedDosage()
        {
            // Arrange
            INoiseLevelService noiseLevelService = new NoiseLevelService();
            const int percentageDailyDosage = 100;

            // Act
            NoiseLevelEnum noiseLevelEnum = noiseLevelService.CalculateNoiseLevelEnum(percentageDailyDosage);

            // Assert
            Assert.IsTrue(noiseLevelEnum == NoiseLevelEnum.MaximumAllowedDosage);
        }
        public void CalculateNoiseLevelEnum_PercentageIsMoreThan100_ReturnsEnumValueCritical()
        {
            // Arrange
            INoiseLevelService noiseLevelService = new NoiseLevelService();
            const int percentageDailyDosage = 101;

            // Act
            NoiseLevelEnum noiseLevelEnum = noiseLevelService.CalculateNoiseLevelEnum(percentageDailyDosage);

            // Assert
            Assert.IsTrue(noiseLevelEnum == NoiseLevelEnum.Critical);
        }
        public void CalculateNoiseLevelEnum_PercentageIs80_ReturnsEnumValueWarning()
        {
            // Arrange
            INoiseLevelService noiseLevelService = new NoiseLevelService();
            const int percentageDailyDosage = 80;

            // Act
            NoiseLevelEnum noiseLevelEnum = noiseLevelService.CalculateNoiseLevelEnum(percentageDailyDosage);

            // Assert
            Assert.IsTrue(noiseLevelEnum == NoiseLevelEnum.Warning);
        }
Beispiel #7
0
        public string GetNoiseLevelStatusText(NoiseLevelEnum noiseLevelEnum)
        {
            switch (noiseLevelEnum)
            {
            case NoiseLevelEnum.Normal:
                return(DomainResources.NoiseLevelStatusTextNormal);

            case NoiseLevelEnum.Warning:
                return(DomainResources.NoiseLevelStatusTextWarning);

            case NoiseLevelEnum.MaximumAllowedDosage:
                return(DomainResources.NoiseLevelStatusTextMaximumAllowedDosage);

            case NoiseLevelEnum.Critical:
                return(DomainResources.NoiseLevelStatusTextCritical);

            case NoiseLevelEnum.DangerOfWorkRelatedInjury:
                return(DomainResources.NoiseLevelStatusTextDangerOfWorkRelatedInjury);
            }

            return(string.Empty);
        }
        public Stream GenerateSelectedTasksPDF(IEnumerable <SelectedTask> selectedTasks, ReportInfo reportInfo)
        {
            int            countSelectedTasks = selectedTasks.Count();
            int            totalNoiseDosage   = selectedTasks.Sum(x => x.Percentage);
            NoiseLevelEnum noiseLevelEnum     = _noiseLevelService.CalculateNoiseLevelEnum(totalNoiseDosage);
            Color          noiseLevelColor    = GetColorForNoiseLevel(noiseLevelEnum);
            DataTable      dataTable          = GenerateDataTable(selectedTasks);


            // Starting instantiate the document.
            // Remember to set the Docuement Format. In this case, we specify width and height.
            PdfDocument myPdfDocument = new PdfDocument(PdfDocumentFormat.A4_Horizontal);

            // Now we create a Table with lines likt the number of selected tasks, 6 columns and 4 points of Padding.
            PdfTable myPdfTable = myPdfDocument.NewTable(new Font("Verdana", 12), countSelectedTasks, 6, 4);

            // Importing datas from the datatables... (also column names for the headers!)
            myPdfTable.ImportDataTable(dataTable);

            // Now we set our Graphic Design: Colors and Borders...
            myPdfTable.HeadersRow.SetColors(Color.FromRgb(255, 255, 255), Color.FromRgb(0, 0, 255));
            myPdfTable.SetColors(Color.FromRgb(0, 0, 0), Color.FromRgb(255, 255, 255), Color.FromRgb(0, 255, 255));
            myPdfTable.SetBorders(Color.FromRgb(0, 0, 0), 1, BorderType.CompleteGrid);

            // With just one method we can set the proportional width of the columns.
            // It's a "percentage like" assignment, but the sum can be different from 100.
            myPdfTable.SetColumnsWidth(new int[] { 90, 25, 45, 20, 20, 10 });

            // Now we set some alignment... for the whole table and then, for a column.
            myPdfTable.SetContentAlignment(ContentAlignment.MiddleCenter);
            foreach (PdfColumn pdfColumn in myPdfTable.Columns)
            {
                pdfColumn.SetContentAlignment(ContentAlignment.MiddleLeft);
            }

            // Here we start the loop to generate the table...
            while (!myPdfTable.AllTablePagesCreated)
            {
                // we create a new page to put the generation of the new TablePage:
                PdfPage newPdfPage = myPdfDocument.NewPage();

                // LAKHA
                PdfArea      pdfArea   = new PdfArea(myPdfDocument, 48, 95, 750, 670);
                PdfTablePage taskTable = myPdfTable.CreateTablePage(pdfArea);

                // we also put a Label
                PdfTextArea reportTitle = new PdfTextArea(new Font("Verdana", 26, FontStyle.Bold), Color.FromRgb(0, 0, 0)
                                                          , new PdfArea(myPdfDocument, 48, 20, 595, 60), ContentAlignment.TopLeft, ReportResource.ReportTitle);

                // LAKHA - Status
                PdfTextArea statusText = new PdfTextArea(new Font("Verdana", 14, FontStyle.Bold), Color.FromRgb(0, 0, 0)
                                                         , new PdfArea(myPdfDocument, 48, taskTable.CellArea(taskTable.LastRow, 6 - 1).BottomRightCornerY + 10, 595, 60), ContentAlignment.TopLeft,
                                                         _noiseLevelService.GetNoiseLevelStatusText(noiseLevelEnum));

                // LAKHA - Total prosent
                PdfRectangle summaryBackground = new PdfArea(myPdfDocument, 635, taskTable.CellArea(taskTable.LastRow, 6 - 1).BottomRightCornerY + 10, 165, 45).ToRectangle(noiseLevelColor, noiseLevelColor);
                PdfTextArea  summary           = new PdfTextArea(new Font("Verdana", 26, FontStyle.Bold), Color.FromRgb(0, 0, 0)
                                                                 , new PdfArea(myPdfDocument, 640, taskTable.CellArea(taskTable.LastRow, 6 - 1).BottomRightCornerY + 20, 595, 60), ContentAlignment.TopLeft,
                                                                 string.Format(ReportResource.TotalPercentageFormatString, totalNoiseDosage));

                // nice thing: we can put all the objects in the following lines, so we can have
                // a great control of layer sequence...
                newPdfPage.Add(taskTable);
                newPdfPage.Add(reportTitle);
                newPdfPage.Add(statusText);
                newPdfPage.Add(summaryBackground);
                newPdfPage.Add(summary);

                // Info from report input window
                PdfTextArea reportPlant = new PdfTextArea(new Font("Verdana", 12, FontStyle.Bold), Color.FromRgb(0, 0, 0)
                                                          , new PdfArea(myPdfDocument, 48, 50, 595, 60), ContentAlignment.TopLeft, string.Format(ReportResource.PlantFormatString, reportInfo.Plant));
                PdfTextArea reportCreatedBy = new PdfTextArea(new Font("Verdana", 12, FontStyle.Bold), Color.FromRgb(0, 0, 0)
                                                              , new PdfArea(myPdfDocument, 650, 50, 595, 60), ContentAlignment.TopLeft, string.Format(ReportResource.UserFormatString, reportInfo.CreatedBy));

                PdfTextArea reportProfession = new PdfTextArea(new Font("Verdana", 12, FontStyle.Bold), Color.FromRgb(0, 0, 0)
                                                               , new PdfArea(myPdfDocument, 48, 65, 595, 60), ContentAlignment.TopLeft, string.Format(ReportResource.ProfessionFormatString, reportInfo.Group));
                PdfTextArea reportDate = new PdfTextArea(new Font("Verdana", 12, FontStyle.Bold), Color.FromRgb(0, 0, 0)
                                                         , new PdfArea(myPdfDocument, 650, 65, 595, 60), ContentAlignment.TopLeft, string.Format(ReportResource.DateFormatString, (reportInfo.Date.HasValue) ? reportInfo.Date.Value.ToString("dd.MM.yyyy") : string.Empty));

                PdfTextArea reportComment = new PdfTextArea(new Font("Verdana", 12, FontStyle.Bold), Color.FromRgb(0, 0, 0)
                                                            , new PdfArea(myPdfDocument, 48, 80, 700, 60), ContentAlignment.TopLeft, string.Format(ReportResource.CommentFormatString, reportInfo.Comment));

                newPdfPage.Add(reportPlant);
                newPdfPage.Add(reportCreatedBy);
                newPdfPage.Add(reportProfession);
                newPdfPage.Add(reportDate);
                newPdfPage.Add(reportComment);


                // LAKHA - Add footnotes...
                const int widthOfFootnote = 750;
                Font      footnoteFont    = new Font("Verdana", 9, FontStyle.Regular);
                double    posY            = statusText.PdfArea.BottomRightCornerY + 3;

                foreach (string footNoteText in reportInfo.Footnotes)
                {
                    int heightOfFootnote = 10;

                    if (footNoteText.Length > 380)
                    {
                        heightOfFootnote = heightOfFootnote * 3;
                    }
                    else if (footNoteText.Length > 160)
                    {
                        heightOfFootnote = heightOfFootnote * 2;
                    }

                    PdfArea     pdfAreaForText = new PdfArea(myPdfDocument, 48, posY, widthOfFootnote, heightOfFootnote);
                    PdfTextArea footNote       = new PdfTextArea(footnoteFont, Color.FromRgb(0, 0, 0), pdfAreaForText, ContentAlignment.TopLeft, string.Format("* {0}", footNoteText));
                    newPdfPage.Add(footNote);

                    posY = footNote.PdfArea.BottomRightCornerY + 2;
                }

                // we save each generated page before start rendering the next.
                newPdfPage.SaveToDocument();
            }


            // Finally we save the docuement...
            Stream memoryStream = new MemoryStream();

            myPdfDocument.SaveToStream(memoryStream);
            memoryStream.Seek(0, SeekOrigin.Begin);

            return(memoryStream);
        }