Esempio n. 1
0
        private ExcelReportGrid ProgrammeRepetitionsGrid(List <PassModel> passes, int maxColumnsCount)
        {
            var data = new Dictionary <string, object[]>();

            for (int passIndex = 0; passIndex < passes.Count; passIndex++)
            {
                foreach (var item in passes[passIndex].ProgrammeRepetitions)
                {
                    var key = item.Minutes.ToString(CultureInfo.InvariantCulture);
                    if (!data.ContainsKey(key))
                    {
                        data.Add(key, new object[passes.Count * 2]);
                    }
                    data[key][(passIndex * 2)]     = item.Factor;
                    data[key][(passIndex * 2) + 1] = item.PeakFactor;
                }
            }

            var grid = new ExcelReportGrid();

            grid.MaxColumnCount = maxColumnsCount;
            grid.HeaderRows.AddRange(GetGenericHeaderRowsForRunReport(passes, "Programme Repetitions", "Minutes (Non-Peak Factor / Peak Factor)", new string[] { "NPF", "PF" }));
            grid.BodyRows.AddRange(GetBodyRows(data));
            return(grid);
        }
Esempio n. 2
0
        private ExcelReportGrid GeneralGrid(List <PassModel> passes, int maxColumnsCount)
        {
            var data = new Dictionary <string, object[]>();

            for (int passIndex = 0; passIndex < passes.Count; passIndex++)
            {
                foreach (var item in passes[passIndex].General)
                {
                    if (!data.ContainsKey(item.Description))
                    {
                        data.Add(item.Description, new object[passes.Count]);
                    }
                    data[item.Description][passIndex] = item.Value;
                    if (item.RuleId == (int)RuleID.UseSponsorExclusivity ||
                        item.RuleId == (int)RuleID.UseCampaignMaxSpotRatings)
                    {
                        data[item.Description][passIndex] = item.Value == "0" ? "NO" : "YES";
                    }
                }
            }

            var grid = new ExcelReportGrid();

            grid.MaxColumnCount = maxColumnsCount;
            grid.HeaderRows.AddRange(GetGenericHeaderRowsForRunReport(passes, "General"));
            grid.BodyRows.AddRange(GetBodyRows(data));
            return(grid);
        }
Esempio n. 3
0
        private ExcelReportGrid SlottingLimitsGrid(List <PassModel> passes, IEnumerable <Demographic> demographics, int maxColumnsCount)
        {
            var data = new Dictionary <string, object[]>();

            for (int passIndex = 0; passIndex < passes.Count; passIndex++)
            {
                foreach (var item in passes[passIndex].SlottingLimits)
                {
                    var demograpgic     = demographics.First(d => d.ExternalRef == item.Demographs);
                    var demographicName = demograpgic != null? demograpgic.Name: item.Demographs;
                    if (!data.ContainsKey(demographicName))
                    {
                        data.Add(demographicName, new object[passes.Count * 3]);
                    }
                    data[demographicName][(passIndex * 3)]     = item.MinimumEfficiency;
                    data[demographicName][(passIndex * 3) + 1] = item.MaximumEfficiency;
                    data[demographicName][(passIndex * 3) + 2] = item.BandingTolerance;
                }
            }

            var grid = new ExcelReportGrid();

            grid.MaxColumnCount = maxColumnsCount;
            grid.HeaderRows.AddRange(GetGenericHeaderRowsForRunReport(passes, "Slotting Limits", "Demographs (Min Efficiency / Max Rank / Banding Tolerance)", new string[] { "ME", "MR", "BT" }));
            grid.BodyRows.AddRange(GetBodyRows(data));
            return(grid);
        }
Esempio n. 4
0
        public void HeaderRowsAreInitWhenGridIsCreated()
        {
            var grid = new ExcelReportGrid();

            Assert.IsNotNull(grid.HeaderRows);
            Assert.AreEqual(0, grid.HeaderRows.Count);
        }
Esempio n. 5
0
        private ExcelReportGrid SalesAreaPassPrioritiesGrid(List <PassModel> passes, int maxColumnsCount)
        {
            string daysOfWeek = "Days Of The Week";
            string startDate  = "Start Date";
            string endDate    = "End Date";

            var data = new Dictionary <string, object[]>();

            data.Add(daysOfWeek, new object[passes.Count]);
            data.Add(startDate, new object[passes.Count]);
            data.Add(endDate, new object[passes.Count]);

            for (int passIndex = 0; passIndex < passes.Count; passIndex++)
            {
                data[daysOfWeek][passIndex] = GetDaysCode(passes[passIndex].PassSalesAreaPriorities.DaysOfWeek);
                data[startDate][passIndex]  = GetDateTimeValue(passes[passIndex].PassSalesAreaPriorities.StartDate, passes[passIndex].PassSalesAreaPriorities.StartTime);
                data[endDate][passIndex]    = GetDateTimeValue(passes[passIndex].PassSalesAreaPriorities.EndDate, passes[passIndex].PassSalesAreaPriorities.EndTime);
                foreach (var item in passes[passIndex].PassSalesAreaPriorities.SalesAreaPriorities)
                {
                    if (!data.ContainsKey(item.SalesArea))
                    {
                        data.Add(item.SalesArea, new object[passes.Count]);
                    }
                    data[item.SalesArea][passIndex] = item.Priority;
                }
            }

            var grid = new ExcelReportGrid();

            grid.MaxColumnCount = maxColumnsCount;
            grid.HeaderRows.AddRange(GetGenericHeaderRowsForRunReport(passes, "Sales Area Pass Priorities"));
            grid.BodyRows.AddRange(GetBodyRows(data));
            return(grid);
        }
Esempio n. 6
0
        private ExcelReportGrid MinRatingPointsGrid(List <PassModel> passes, int maxColumnsCount)
        {
            var data = new Dictionary <string, object[]>();

            for (int passIndex = 0; passIndex < passes.Count; passIndex++)
            {
                foreach (var item in passes[passIndex].RatingPoints)
                {
                    var key = item.SalesAreas?.Count() > 0
                        ? string.Join(", ", item.SalesAreas)
                        : "All Sales Areas";
                    if (!data.ContainsKey(key))
                    {
                        data.Add(key, new object[passes.Count * 3]);
                    }
                    data[key][(passIndex * 3)]     = item.OffPeakValue;
                    data[key][(passIndex * 3) + 1] = item.PeakValue;
                    data[key][(passIndex * 3) + 2] = item.MidnightToDawnValue;
                }
            }

            var grid = new ExcelReportGrid();

            grid.MaxColumnCount = maxColumnsCount;
            grid.HeaderRows.AddRange(GetGenericHeaderRowsForRunReport(passes, "Min Rating Points", "Sales Areas", new string[] { "OP", "P", "M2D" }));
            grid.BodyRows.AddRange(GetBodyRows(data));
            return(grid);
        }
Esempio n. 7
0
        private ExcelReportGrid ScenarioDetailsGrid(RunModel run, ScenarioModel scenario, int maxColumnsCount, DateTime reportDate)
        {
            var grid = new ExcelReportGrid();

            grid.MaxColumnCount = maxColumnsCount;
            var row1 = new ExcelReportRow();

            row1.Cells.Add(new ExcelReportCell()
            {
                Value = "Report Date", Alignment = ExcelHorizontalAlignment.Left, StyleName = GamePlanReportStyles.HeaderStyle.Name
            });
            row1.Cells.Add(new ExcelReportCell()
            {
                Value = string.Format(CultureInfo.InvariantCulture, "{0:dd MMMM yyyy} - {0:HH:mm:ss}", reportDate), Alignment = ExcelHorizontalAlignment.Left, StyleName = GamePlanReportStyles.HeaderStyle.Name
            });
            grid.HeaderRows.Add(row1);

            var row2 = new ExcelReportRow();

            row2.Cells.Add(new ExcelReportCell()
            {
                Value = "Run Name", Alignment = ExcelHorizontalAlignment.Left, StyleName = GamePlanReportStyles.LightHeaderStyle.Name
            });
            row2.Cells.Add(new ExcelReportCell()
            {
                Value = run.Description, Alignment = ExcelHorizontalAlignment.Left, StyleName = GamePlanReportStyles.LightHeaderStyle.Name
            });
            grid.BodyRows.Add(row2);

            var row3 = new ExcelReportRow();

            row3.Cells.Add(new ExcelReportCell()
            {
                Value = "Run Id", Alignment = ExcelHorizontalAlignment.Left, StyleName = GamePlanReportStyles.LightHeaderStyle.Name
            });
            row3.Cells.Add(new ExcelReportCell()
            {
                Value = run.Id, Alignment = ExcelHorizontalAlignment.Left, StyleName = GamePlanReportStyles.LightHeaderStyle.Name
            });
            grid.BodyRows.Add(row3);

            var row4 = new ExcelReportRow();

            row4.Cells.Add(new ExcelReportCell()
            {
                Value = "Scenario Name", Alignment = ExcelHorizontalAlignment.Left, StyleName = GamePlanReportStyles.LightHeaderStyle.Name
            });
            row4.Cells.Add(new ExcelReportCell()
            {
                Value = scenario.Name, Alignment = ExcelHorizontalAlignment.Left, StyleName = GamePlanReportStyles.LightHeaderStyle.Name
            });
            grid.BodyRows.Add(row4);

            return(grid);
        }
Esempio n. 8
0
 private void WriteGrid(ISheetBuilder sb, ExcelReportGrid grid)
 {
     grid.HeaderRows.ForEach(row => WriteRow(sb, grid, row));
     if (grid.HasData)
     {
         grid.BodyRows.ForEach(row => WriteRow(sb, grid, row));
     }
     else
     {
         WriteNoDataRow(sb, grid.MaxColumnCount);
     }
 }
Esempio n. 9
0
        public void HasDataReturnFalseWhenNoneOfTheCellsOfTheGridHasAnyValue()
        {
            var grid = new ExcelReportGrid();
            var row1 = new ExcelReportRow();
            var row2 = new ExcelReportRow();

            row1.Cells.Add(new ExcelReportCell());
            row2.Cells.Add(new ExcelReportCell());
            grid.BodyRows.Add(row1);
            grid.BodyRows.Add(row2);
            Assert.IsFalse(grid.HasData);
        }
Esempio n. 10
0
        private void AssertGridData(string[] expectedData, ExcelReportGrid grid)
        {
            var index = 0;

            grid.HeaderRows.ForEach(r =>
            {
                Assert.AreEqual(expectedData[index++], GetRowValue(r));
            });

            grid.BodyRows.ForEach(r =>
            {
                Assert.AreEqual(expectedData[index++], GetRowValue(r));
            });
        }
Esempio n. 11
0
        public void HasDataReturnFalseWhenOnlyFirstColumnHasValue()
        {
            var grid = new ExcelReportGrid();
            var row1 = new ExcelReportRow();
            var row2 = new ExcelReportRow();

            row1.Cells.Add(new ExcelReportCell()
            {
                Value = 10
            });
            row2.Cells.Add(new ExcelReportCell());
            grid.BodyRows.Add(row1);
            grid.BodyRows.Add(row2);
            Assert.IsFalse(grid.HasData);
        }
Esempio n. 12
0
        public void HasDataReturnTrueWhenAtleastOneOfTheCellsNotInTheFirstColumnHasValue()
        {
            var grid = new ExcelReportGrid();
            var row1 = new ExcelReportRow();
            var row2 = new ExcelReportRow();

            row1.Cells.Add(new ExcelReportCell());
            row1.Cells.Add(new ExcelReportCell()
            {
                Value = 10
            });
            row2.Cells.Add(new ExcelReportCell());
            grid.BodyRows.Add(row1);
            grid.BodyRows.Add(row2);
            Assert.IsTrue(grid.HasData);
        }
Esempio n. 13
0
 private void WriteRow(ISheetBuilder sb, ExcelReportGrid grid, ExcelReportRow row)
 {
     sb.Block(bb =>
     {
         for (var i = 0; i < row.Cells.Count; i++)
         {
             var cell    = row.Cells[i];
             var colSpan = 1;
             if (i > 0)
             {
                 colSpan = (grid.MaxColumnCount - 1) / (row.Cells.Count - 1);
             }
             writeCell(bb, cell, colSpan);
         }
     });
 }
Esempio n. 14
0
        private void AssertGridStyle(ExcelReportGrid grid, ExcelHorizontalAlignment secondColumnAlignmnet, string firstColumnStyleName, string otherColumnStyleName, bool alternateColor)
        {
            var rowIndex = 0;

            grid.HeaderRows.ForEach(r =>
            {
                var cellIndex = 0;
                r.Cells.ForEach(cell => AssertHeaderCellStyle(cell, secondColumnAlignmnet, rowIndex, cellIndex++));
                rowIndex++;
            });

            rowIndex = 0;
            grid.BodyRows.ForEach(r =>
            {
                var cellIndex = 0;
                r.Cells.ForEach(cell => AssertBodyCellStyle(cell, firstColumnStyleName, otherColumnStyleName, secondColumnAlignmnet, rowIndex, cellIndex++, alternateColor));
                rowIndex++;
            });
        }
Esempio n. 15
0
        private ExcelReportGrid ToleranceGrid(List <PassModel> passes, int maxColumnsCount)
        {
            var data = new Dictionary <string, object[]>();

            for (int passIndex = 0; passIndex < passes.Count; passIndex++)
            {
                foreach (var item in passes[passIndex].Tolerances)
                {
                    if (!data.ContainsKey(item.Description))
                    {
                        data.Add(item.Description, new object[passes.Count * 4]);
                    }

                    data[item.Description][passIndex * 4]       = item.Under;
                    data[item.Description][(passIndex * 4) + 1] = item.Over;
                    switch (item.ForceUnderOver)
                    {
                    case ForceOverUnder.Over:
                        data[item.Description][(passIndex * 4) + 2] = "Over";
                        break;

                    case ForceOverUnder.Under:
                        data[item.Description][(passIndex * 4) + 2] = "Under";
                        break;

                    default:
                        data[item.Description][(passIndex * 4) + 2] = "None";
                        break;
                    }
                    data[item.Description][(passIndex * 4) + 3] = item.Ignore ? "YES" : "";
                }
            }

            var grid = new ExcelReportGrid();

            grid.MaxColumnCount = maxColumnsCount;
            grid.HeaderRows.AddRange(GetGenericHeaderRowsForRunReport(passes, "Tolerance", "Under/Over/Force/Ignore", new[] { "U", "O", "F", "I" }));
            grid.BodyRows.AddRange(GetBodyRows(data));
            return(grid);
        }
Esempio n. 16
0
        private ExcelReportGrid WeightingGrid(List <PassModel> passes, int maxColumnsCount)
        {
            var data = new Dictionary <string, object[]>();

            for (int passIndex = 0; passIndex < passes.Count; passIndex++)
            {
                foreach (var item in passes[passIndex].Weightings)
                {
                    if (!data.ContainsKey(item.Description))
                    {
                        data.Add(item.Description, new object[passes.Count]);
                    }
                    data[item.Description][passIndex] = item.Value;
                }
            }

            var grid = new ExcelReportGrid();

            grid.MaxColumnCount = maxColumnsCount;
            grid.HeaderRows.AddRange(GetGenericHeaderRowsForRunReport(passes, "Weightings"));
            grid.BodyRows.AddRange(GetBodyRows(data));
            return(grid);
        }
Esempio n. 17
0
        private ExcelReportGrid RulesGrid(List <PassModel> passes, int maxColumnsCount)
        {
            var data = new Dictionary <string, object[]>();

            for (int passIndex = 0; passIndex < passes.Count; passIndex++)
            {
                foreach (var item in passes[passIndex].Rules)
                {
                    if (!data.ContainsKey(item.Description))
                    {
                        data.Add(item.Description, new object[passes.Count * 2]);
                    }
                    data[item.Description][passIndex * 2]       = item.Value;
                    data[item.Description][(passIndex * 2) + 1] = item.PeakValue;
                }
            }

            var grid = new ExcelReportGrid();

            grid.MaxColumnCount = maxColumnsCount;
            grid.HeaderRows.AddRange(GetGenericHeaderRowsForRunReport(passes, "Rules", "Daypart (Non-Peak / Peak)", new[] { "NP", "P" }));
            grid.BodyRows.AddRange(GetBodyRows(data));
            return(grid);
        }
Esempio n. 18
0
        private ExcelReportGrid BreakExclusionsGrid(List <PassModel> passes, int maxColumnsCount)
        {
            var data = new Dictionary <string, object[]>();

            for (int passIndex = 0; passIndex < passes.Count; passIndex++)
            {
                foreach (var item in passes[passIndex].BreakExclusions)
                {
                    string breakExclusionsCode = GetBreakExclusionsCode(item);
                    if (!data.ContainsKey(breakExclusionsCode))
                    {
                        data.Add(breakExclusionsCode, new object[passes.Count]);
                    }
                    data[breakExclusionsCode][passIndex] = "YES";
                }
            }

            var grid = new ExcelReportGrid();

            grid.MaxColumnCount = maxColumnsCount;
            grid.HeaderRows.AddRange(GetGenericHeaderRowsForRunReport(passes, "Break Exclusions"));
            grid.BodyRows.AddRange(GetBodyRows(data, GamePlanReportStyles.CourierNewFontCellStyle.Name));
            return(grid);
        }