Example #1
0
        public static IEnumerable <string> ConvertToNames(this DateTime[] periods, TimelogsPeriod period, DateTime current)
        {
            if (period == TimelogsPeriod.Daily)
            {
                return(periods.Select(p => p.ToString("dd/MM/yy")));
            }

            if (period == TimelogsPeriod.Weekly)
            {
                if (periods.Last() > current.Date)
                {
                    throw new ArgumentException("Current date should be greate or equal to the ending period.", "current");
                }
                var weeks = new List <string>();
                for (var i = 0; i <= periods.Length - 2; i++)
                {
                    var w1 = periods[i];
                    var w2 = periods[i + 1].AddSeconds(-1);
                    AddWeekName(weeks, w1, w2);
                }
                AddWeekName(weeks, periods.Last(), current.Date);
                return(weeks);
            }

            if (period == TimelogsPeriod.Monthly)
            {
                return(periods.Select(GetMonthName));
            }
            throw new NotSupportedException();
        }
Example #2
0
        public static DateTime[] GetPeriods(DateTime current, TimelogsPeriod period, int numberOfPeriods = 9)
        {
            if (numberOfPeriods == 0)
            {
                return new DateTime[] { }
            }
            ;

            if (period == TimelogsPeriod.Daily)
            {
                var datePoints = new List <DateTime>();

                for (var i = numberOfPeriods - 1; i >= 1; i--)
                {
                    datePoints.Add(current.AddDays(-i).Date);
                }
                datePoints.Add(current);
                return(datePoints.ToArray());
            }

            if (period == TimelogsPeriod.Weekly)
            {
                var datePoints       = new List <DateTime>();
                var weekStartingDate = GetWeekStart(current);
                for (var i = numberOfPeriods - 1; i >= 1; i--)
                {
                    datePoints.Add(weekStartingDate.AddDays(-7 * i));
                }
                datePoints.Add(weekStartingDate);
                return(datePoints.ToArray());
            }
            if (period == TimelogsPeriod.Monthly)
            {
                var datePoints        = new List <DateTime>();
                var monthStartingDate = new DateTime(current.Year, current.Month, 1);
                for (var i = numberOfPeriods - 1; i >= 0; i--)
                {
                    datePoints.Add(monthStartingDate.AddMonths(-i));
                }
                return(datePoints.ToArray());
            }
            return(new DateTime[] { });
        }