Beispiel #1
0
        public void RangeIsGeneratedForFinancialYearPartQuery()
        {
            CollectionAssert.AreEquivalent(
                new List <(int Year, TimeIdentifier TimeIdentifier)>
            {
                (2021, FinancialYearPart1)
            },
                TimePeriodUtil.Range(new TimePeriodQuery(2021, FinancialYearPart1, 2021, FinancialYearPart1)).ToList());

            CollectionAssert.AreEquivalent(
                new List <(int Year, TimeIdentifier TimeIdentifier)>
            {
                (2021, FinancialYearPart1),
                (2021, FinancialYearPart2)
            },
                TimePeriodUtil.Range(new TimePeriodQuery(2021, FinancialYearPart1, 2021, FinancialYearPart2)).ToList());

            CollectionAssert.AreEquivalent(
                new List <(int Year, TimeIdentifier TimeIdentifier)>
            {
                (2020, FinancialYearPart1),
                (2020, FinancialYearPart2),
                (2021, FinancialYearPart1)
            },
                TimePeriodUtil.Range(new TimePeriodQuery(2020, FinancialYearPart1, 2021, FinancialYearPart1)).ToList());
        }
Beispiel #2
0
        public void RangeIsGeneratedForTaxQuarterQuery()
        {
            CollectionAssert.AreEquivalent(
                new List <(int Year, TimeIdentifier TimeIdentifier)>
            {
                (2019, TaxYearQ3)
            },
                TimePeriodUtil.Range(new TimePeriodQuery(2019, TaxYearQ3, 2019, TaxYearQ3)).ToList());

            CollectionAssert.AreEquivalent(
                new List <(int Year, TimeIdentifier TimeIdentifier)>
            {
                (2019, TaxYearQ3),
                (2019, TaxYearQ4)
            },
                TimePeriodUtil.Range(new TimePeriodQuery(2019, TaxYearQ3, 2019, TaxYearQ4)).ToList());

            CollectionAssert.AreEquivalent(
                new List <(int Year, TimeIdentifier TimeIdentifier)>
            {
                (2018, TaxYearQ4),
                (2019, TaxYearQ1),
                (2019, TaxYearQ2),
                (2019, TaxYearQ3),
                (2019, TaxYearQ4),
                (2020, TaxYearQ1),
                (2020, TaxYearQ2)
            },
                TimePeriodUtil.Range(new TimePeriodQuery(2018, TaxYearQ4, 2020, TaxYearQ2)).ToList());
        }
Beispiel #3
0
        public void RangeIsGeneratedForTermQuery()
        {
            CollectionAssert.AreEquivalent(
                new List <(int Year, TimeIdentifier TimeIdentifier)>
            {
                (2019, AutumnTerm)
            },
                TimePeriodUtil.Range(new TimePeriodQuery(2019, AutumnTerm, 2019, AutumnTerm)).ToList());

            CollectionAssert.AreEquivalent(
                new List <(int Year, TimeIdentifier TimeIdentifier)>
            {
                (2019, AutumnTerm),
                (2019, AutumnSpringTerm),
                (2019, SpringTerm),
                (2019, SummerTerm)
            },
                TimePeriodUtil.Range(new TimePeriodQuery(2019, AutumnTerm, 2019, SummerTerm)).ToList());

            CollectionAssert.AreEquivalent(
                new List <(int Year, TimeIdentifier TimeIdentifier)>
            {
                (2018, SpringTerm),
                (2018, SummerTerm),
                (2019, AutumnTerm),
                (2019, AutumnSpringTerm),
                (2019, SpringTerm),
                (2019, SummerTerm),
                (2020, AutumnTerm)
            },
                TimePeriodUtil.Range(new TimePeriodQuery(2018, SpringTerm, 2020, AutumnTerm)).ToList());
        }
Beispiel #4
0
        public void RangeFailsIfYearsAreInvalid()
        {
            Assert.Throws <ArgumentOutOfRangeException>(() =>
                                                        TimePeriodUtil.Range(new TimePeriodQuery(12345, CalendarYear, 2019, CalendarYear)));

            Assert.Throws <ArgumentOutOfRangeException>(() =>
                                                        TimePeriodUtil.Range(new TimePeriodQuery(2019, CalendarYear, 12345, CalendarYear)));
        }
Beispiel #5
0
        public void RangeIsGeneratedForReportingYearQuery()
        {
            var expected = new List <(int Year, TimeIdentifier TimeIdentifier)>
            {
                (2018, ReportingYear),
                (2019, ReportingYear)
            };

            CollectionAssert.AreEquivalent(expected,
                                           TimePeriodUtil.Range(new TimePeriodQuery(2018, ReportingYear, 2019, ReportingYear)).ToList());
        }
Beispiel #6
0
        public async Task <ActionResult <List <DataBlockQuerySizeReport> > > QuerySizeReport()
        {
            var publishedReleaseIds = _contentDbContext.Releases
                                      .Include(r => r.Publication)
                                      .ToList()
                                      .Where(r => r.Publication.IsLatestVersionOfRelease(r.Id))
                                      .Select(r => r.Id)
                                      .ToList();

            var publishedDataBlocks = await _contentDbContext.ReleaseContentBlocks
                                      .Include(rcb => rcb.ContentBlock)
                                      .Where(rcb => publishedReleaseIds.Contains(rcb.ReleaseId))
                                      .Select(rcb => rcb.ContentBlock)
                                      .OfType <DataBlock>()
                                      .ToListAsync();

            return(await publishedDataBlocks
                   .ToAsyncEnumerable()
                   .SelectAwait(async dataBlock =>
            {
                var query = dataBlock.Query;

                var countsOfFilterItemsByFilter = await _filterItemRepository
                                                  .CountFilterItemsByFilter(dataBlock.Query.Filters);

                var countOfIndicators = query.Indicators.Count();
                var countOfLocations = query.LocationIds.Count;
                var countOfTimePeriods = TimePeriodUtil.Range(query.TimePeriod).Count();

                var maxTableCellCount = TableBuilderUtils.MaximumTableCellCount(
                    countOfIndicators: countOfIndicators,
                    countOfLocations: countOfLocations,
                    countOfTimePeriods: countOfTimePeriods,
                    countsOfFilterItemsByFilter: countsOfFilterItemsByFilter
                    .Select(pair =>
                {
                    var(_, count) = pair;
                    return count;
                }));

                return new DataBlockQuerySizeReport
                {
                    DataBlockId = dataBlock.Id,
                    DataBlockName = dataBlock.Name,
                    Filters = countsOfFilterItemsByFilter,
                    Indicators = countOfIndicators,
                    Locations = countOfLocations,
                    TimePeriods = countOfTimePeriods,
                    MaxTableCells = maxTableCellCount
                };
            })
                   .OrderByDescending(result => result.MaxTableCells)
                   .ToListAsync());
        }
Beispiel #7
0
        public void RangeFailsWithoutYears()
        {
            Assert.Throws <ArgumentNullException>(() => TimePeriodUtil.Range(
                                                      new TimePeriodQuery
            {
                StartCode = CalendarYear,
                EndYear   = 2019,
                EndCode   = CalendarYear
            }));

            Assert.Throws <ArgumentNullException>(() => TimePeriodUtil.Range(
                                                      new TimePeriodQuery
            {
                StartYear = 2019,
                StartCode = CalendarYear,
                EndCode   = CalendarYear
            }));
        }
Beispiel #8
0
        public override string ToAnnotateFormat(bool StemOnly)
        {
            string stem = @"``" + text + @"``";

            if (StemOnly)
            {
                return(stem);
            }
            TimePoint firstTP = getFirstTimePoint();
            TimePoint lastTP  = getLastTimePoint();

            stem += TimePeriodUtil.TimePointToString(firstTP, false, true);
            if (!lastTP.equals(firstTP))
            {
                stem += TimePeriodUtil.TimePointToString(lastTP, false, true);
            }
            return(stem);
        }
Beispiel #9
0
        public void RangeFailsIfTimeIdentifiersAreNotAlike()
        {
            var calendarQuarterIdentifiers = new[]
            {
                CalendarYearQ1,
                CalendarYearQ2,
                CalendarYearQ3,
                CalendarYearQ4
            };

            var monthIdentifiers = new[]
            {
                January,
                February,
                March,
                April,
                May,
                June,
                July,
                August,
                September,
                October,
                November,
                December
            };

            var weekIdentifiers = new[]
            {
                Week1,
                Week2,
                Week3,
                Week4,
                Week5,
                Week6,
                Week7,
                Week8,
                Week9,
                Week10,
                Week11,
                Week12,
                Week13,
                Week14,
                Week15,
                Week16,
                Week17,
                Week18,
                Week19,
                Week20,
                Week21,
                Week22,
                Week23,
                Week24,
                Week25,
                Week26,
                Week27,
                Week28,
                Week29,
                Week30,
                Week31,
                Week32,
                Week33,
                Week34,
                Week35,
                Week36,
                Week37,
                Week38,
                Week39,
                Week40,
                Week41,
                Week42,
                Week43,
                Week44,
                Week45,
                Week46,
                Week47,
                Week48,
                Week49,
                Week50,
                Week51,
                Week52
            };

            var termIdentifiers = new[]
            {
                AutumnTerm,
                AutumnSpringTerm,
                SpringTerm,
                SummerTerm
            };

            var financialYearPartIdentifiers = new[]
            {
                FinancialYearPart1,
                FinancialYearPart2
            };

            foreach (var identifier in _allTimeIdentifiers.Except(calendarQuarterIdentifiers))
            {
                Assert.Throws <ArgumentException>(() =>
                                                  TimePeriodUtil.Range(new TimePeriodQuery(2018, CalendarYearQ1, 2019, identifier)));
            }

            foreach (var identifier in _allTimeIdentifiers.Except(monthIdentifiers))
            {
                Assert.Throws <ArgumentException>(() =>
                                                  TimePeriodUtil.Range(new TimePeriodQuery(2018, January, 2019, identifier)));
            }

            foreach (var identifier in _allTimeIdentifiers.Except(weekIdentifiers))
            {
                Assert.Throws <ArgumentException>(() =>
                                                  TimePeriodUtil.Range(new TimePeriodQuery(2018, Week1, 2019, identifier)));
            }

            foreach (var identifier in _allTimeIdentifiers.Except(termIdentifiers))
            {
                Assert.Throws <ArgumentException>(() =>
                                                  TimePeriodUtil.Range(new TimePeriodQuery(2018, AutumnTerm, 2019, identifier)));
            }

            foreach (var identifier in _allTimeIdentifiers.Except(financialYearPartIdentifiers))
            {
                Assert.Throws <ArgumentException>(() =>
                                                  TimePeriodUtil.Range(new TimePeriodQuery(2018, FinancialYearPart1, 2019, identifier)));
            }

            Assert.Throws <ArgumentException>(() =>
                                              TimePeriodUtil.Range(new TimePeriodQuery(2018, CalendarYear, 2019, AcademicYear)));

            Assert.Throws <ArgumentException>(() =>
                                              TimePeriodUtil.Range(new TimePeriodQuery(2018, CalendarYear, 2019, TaxYear)));

            Assert.Throws <ArgumentException>(() =>
                                              TimePeriodUtil.Range(new TimePeriodQuery(2018, CalendarYear, 2019, FinancialYear)));

            Assert.Throws <ArgumentException>(() =>
                                              TimePeriodUtil.Range(new TimePeriodQuery(2018, CalendarYear, 2019, ReportingYear)));
        }
Beispiel #10
0
 public void RangeFailsIfStartYearIsAfterEndYear()
 {
     Assert.Throws <ArgumentOutOfRangeException>(() =>
                                                 TimePeriodUtil.Range(new TimePeriodQuery(2019, CalendarYear, 2018, CalendarYear)));
 }
Beispiel #11
0
        public void RangeIsGeneratedForWeekQuery()
        {
            CollectionAssert.AreEquivalent(
                new List <(int Year, TimeIdentifier TimeIdentifier)>
            {
                (2020, Week17)
            },
                TimePeriodUtil.Range(new TimePeriodQuery(2020, Week17, 2020, Week17)).ToList());

            CollectionAssert.AreEquivalent(
                new List <(int Year, TimeIdentifier TimeIdentifier)>
            {
                (2020, Week1),
                (2020, Week2),
                (2020, Week3),
                (2020, Week4),
                (2020, Week5),
                (2020, Week6),
                (2020, Week7),
                (2020, Week8),
                (2020, Week9),
                (2020, Week10),
                (2020, Week11),
                (2020, Week12),
                (2020, Week13),
                (2020, Week14),
                (2020, Week15),
                (2020, Week16),
                (2020, Week17),
                (2020, Week18),
                (2020, Week19),
                (2020, Week20),
                (2020, Week21),
                (2020, Week22),
                (2020, Week23),
                (2020, Week24),
                (2020, Week25),
                (2020, Week26),
                (2020, Week27),
                (2020, Week28),
                (2020, Week29),
                (2020, Week30),
                (2020, Week31),
                (2020, Week32),
                (2020, Week33),
                (2020, Week34),
                (2020, Week35),
                (2020, Week36),
                (2020, Week37),
                (2020, Week38),
                (2020, Week39),
                (2020, Week40),
                (2020, Week41),
                (2020, Week42),
                (2020, Week43),
                (2020, Week44),
                (2020, Week45),
                (2020, Week46),
                (2020, Week47),
                (2020, Week48),
                (2020, Week49),
                (2020, Week50),
                (2020, Week51),
                (2020, Week52)
            },
                TimePeriodUtil.Range(new TimePeriodQuery(2020, Week1, 2020, Week52)).ToList());

            CollectionAssert.AreEquivalent(
                new List <(int Year, TimeIdentifier TimeIdentifier)>
            {
                (2020, Week17),
                (2020, Week18),
                (2020, Week19),
                (2020, Week20)
            },
                TimePeriodUtil.Range(new TimePeriodQuery(2020, Week17, 2020, Week20)).ToList());

            CollectionAssert.AreEquivalent(
                new List <(int Year, TimeIdentifier TimeIdentifier)>
            {
                (2019, Week51),
                (2019, Week52),
                (2020, Week1),
                (2020, Week2)
            },
                TimePeriodUtil.Range(new TimePeriodQuery(2019, Week51, 2020, Week2)).ToList());
        }
Beispiel #12
0
        public void RangeIsGeneratedForMonthQuery()
        {
            CollectionAssert.AreEquivalent(
                new List <(int Year, TimeIdentifier TimeIdentifier)>
            {
                (2019, February)
            },
                TimePeriodUtil.Range(new TimePeriodQuery(2019, February, 2019, February)).ToList());

            CollectionAssert.AreEquivalent(
                new List <(int Year, TimeIdentifier TimeIdentifier)>
            {
                (2019, January),
                (2019, February),
                (2019, March),
                (2019, April),
                (2019, May),
                (2019, June),
                (2019, July),
                (2019, August),
                (2019, September),
                (2019, October),
                (2019, November),
                (2019, December)
            },
                TimePeriodUtil.Range(new TimePeriodQuery(2019, January, 2019, December)).ToList());

            CollectionAssert.AreEquivalent(
                new List <(int Year, TimeIdentifier TimeIdentifier)>
            {
                (2019, March),
                (2019, April),
                (2019, May),
                (2019, June),
                (2019, July),
                (2019, August),
                (2019, September),
                (2019, October)
            },
                TimePeriodUtil.Range(new TimePeriodQuery(2019, March, 2019, October)).ToList());

            CollectionAssert.AreEquivalent(
                new List <(int Year, TimeIdentifier TimeIdentifier)>
            {
                (2018, April),
                (2018, May),
                (2018, June),
                (2018, July),
                (2018, August),
                (2018, September),
                (2018, October),
                (2018, November),
                (2018, December),
                (2019, January),
                (2019, February),
                (2019, March),
                (2019, April),
                (2019, May),
                (2019, June),
                (2019, July),
                (2019, August),
                (2019, September),
                (2019, October),
                (2019, November),
                (2019, December),
                (2020, January),
                (2020, February),
                (2020, March)
            },
                TimePeriodUtil.Range(new TimePeriodQuery(2018, April, 2020, March)).ToList());
        }