public void TestGetCoreDataSetTimePeriods()
 {
     var grouping = new GroupingPlusName
     {
         YearRange = 1,
         IndicatorId = IndicatorIds.ObesityYear6,
         AgeId = AgeIds.Years10To11,
         SexId = SexIds.Persons,
         AreaTypeId = AreaTypeIds.CountyAndUnitaryAuthority
     };
     IList<TimePeriod> periods = Reader().GetCoreDataSetTimePeriods(grouping);
     Assert.IsTrue(periods.Any());
     Assert.IsTrue(periods.Count < 20, "distinct might not be included in query if too many results");
     Assert.IsTrue(periods.First().Year < periods.Last().Year);
 }
        public void TestGetLatestAvailableDatapoint()
        {
            var grouping = new GroupingPlusName
            {
                IndicatorId = IndicatorIds.ObesityYear6,
                SexId= SexIds.Persons,
                AgeId = AgeIds.Years10To11,
                DatapointYear = 2001,
                DatapointQuarter = TimePeriod.Undefined,
                DatapointMonth = TimePeriod.Undefined,
                YearRange = 1,
                AreaTypeId = AreaTypeIds.CountyAndUnitaryAuthority
            };

            var timePeriodHelper = new TimePeriodHelper(grouping);
            Assert.IsTrue(timePeriodHelper.GetPeriodIfLaterThanDatapoint().Year > 2001);
        }
        public void TestTimePeriodStrings()
        {
            var grouping = new GroupingPlusName
            {
                YearRange = 1,
                YearTypeId = YearTypeIds.Calendar,
                BaselineMonth = TimePeriod.Undefined,
                BaselineQuarter = TimePeriod.Undefined,
                BaselineYear = 2002,
                DatapointMonth = TimePeriod.Undefined,
                DatapointQuarter = TimePeriod.Undefined,
                DatapointYear = 2005
            };

            var timePeriodHelper = new TimePeriodHelper(grouping);
            Assert.AreEqual("2002", timePeriodHelper.GetBaselineString());
            Assert.AreEqual("2005", timePeriodHelper.GetDatapointString());
        }
        public IList<TimePeriod> GetCoreDataSetTimePeriods(GroupingPlusName groupingPlusNames)
        {
            const string query = "select distinct d.Year, d.Quarter, d.Month from CoreDataSet d, Area a" +
              " where d.AreaCode = a.AreaCode and d.IndicatorId = :indicatorId and d.YearRange = :yearRange" +
              " and d.SexId = :sexId and d.AgeId = :ageId and a.AreaTypeId in (:areaTypeIds)" +
              " order by d.Year, d.Quarter, d.Month";

            IQuery q = CurrentSession.CreateQuery(query);
            q.SetParameter("indicatorId", groupingPlusNames.IndicatorId);
            q.SetParameter("sexId", groupingPlusNames.SexId);
            q.SetParameter("ageId", groupingPlusNames.AgeId);
            q.SetParameter("yearRange", groupingPlusNames.YearRange);
            q.SetParameterList("areaTypeIds", new AreaTypeIdSplitter(new List<int> { groupingPlusNames.AreaTypeId }).Ids);
            var rows = q.List<object[]>();

            List<TimePeriod> periods = new List<TimePeriod>();

            if (rows.LongCount() > 0 && rows[0] != null)
            {
                foreach (object[] row in rows)
                {
                    periods.Add(new TimePeriod
                    {
                        YearRange = groupingPlusNames.YearRange,
                        Year = (int) row[0],
                        Quarter = (int) row[1],
                        Month = (int) row[2]
                    });
                }
            }
            return periods;
        }
 public TimePeriodHelper(GroupingPlusName grouping)
 {
     this.grouping = grouping;
     this.baseline = TimePeriod.GetBaseline(grouping);
     this.datapoint = TimePeriod.GetDataPoint(grouping);
 }