Пример #1
0
        public void AllTimeSliceEqualsShouldReturnTrueWhenComparedToStatisticWithSameTimeRange()
        {
            var first  = new AllTimeSlice(DateTime.MinValue, DateTime.MaxValue);
            var second = new Statistic(first);

            first.Equals(second).Should().BeTrue();
        }
Пример #2
0
        public void AllTimeSliceEqualsShouldReturnTrueWhenStartAndEndDateAreEqual()
        {
            var first  = new AllTimeSlice(DateTime.MinValue, DateTime.MaxValue);
            var second = new AllTimeSlice(DateTime.MinValue, DateTime.MaxValue);

            first.Equals(second).Should().BeTrue();
        }
Пример #3
0
        public void AllTimeSliceEqualsShouldReturnFalseWhenStartAndEndDateAreNotEqual()
        {
            var first  = new AllTimeSlice(DateTime.MinValue, DateTime.MaxValue);
            var second = new AllTimeSlice(DateTime.MinValue, DateTime.Now);
            var third  = new AllTimeSlice(DateTime.Now, DateTime.MaxValue);

            first.Equals(second).Should().BeFalse();
            first.Equals(third).Should().BeFalse();
        }
Пример #4
0
        /// <summary>
        /// Creates the time slices which are affected by the given <paramref name="date"/>
        /// </summary>
        /// <param name="date">The date.</param>
        /// <returns></returns>
        public ITimeSlice CreateTimeSlices(DateTime date)
        {
            var minOrderDate = _queryDispatcher.Execute(new TransactionMinimumOrderDateQuery());
            var maxOrderDate = _queryDispatcher.Execute(new TransactionMaximumOrderDateQuery());

            if (minOrderDate == DateTime.MinValue || maxOrderDate == DateTime.MaxValue)
            {
                return(new AllTimeSlice(DateTime.MinValue, DateTime.MaxValue));
            }

            var allSlice = new AllTimeSlice(_dateCalculationService.GetStartDateOfYear(minOrderDate), _dateCalculationService.GetEndDateOfYear(maxOrderDate));

            CreateYears(allSlice, date);

            return(allSlice);
        }
Пример #5
0
        /// <summary>
        /// Creates the years.
        /// </summary>
        /// <param name="slice">The slice.</param>
        /// <param name="date">The minimum date. Any date earlier that this will not be incorporated if not affected.</param>
        private void CreateYears(AllTimeSlice slice, DateTime date)
        {
            foreach (var year in _dateCalculationService.GetInvolvedYears(slice.Start, slice.End))
            {
                //Skip earlier years
                if (year < date.Year)
                {
                    continue;
                }

                var startOfYear = _dateCalculationService.GetStartAndEndDateOfYear(year, out DateTime endOfYear);

                var yearSlice = new YearTimeSlice(startOfYear, endOfYear, year);
                CreateQuarters(yearSlice, date);
                slice.AddSlice(yearSlice);
            }
        }