Epiworx.Business.WeekRepository.WeekAdd C# (CSharp) Method

WeekAdd() public static method

public static WeekAdd ( System.DateTime startDate, DayOfWeek firstDayOfWeek, int numberOfPeriods, int year ) : void
startDate System.DateTime
firstDayOfWeek DayOfWeek
numberOfPeriods int
year int
return void
        public static void WeekAdd(DateTime startDate, DayOfWeek firstDayOfWeek, int numberOfPeriods, int year)
        {
            if (startDate.DayOfWeek != firstDayOfWeek)
            {
                throw new Csla.Rules.ValidationException("The start date's day of the week is not correct");
            }

            foreach (var week in WeekRepository.WeekFetchInfoList(year))
            {
                WeekRepository.WeekDelete(week.WeekId);
            }

            var numberOfWeeks = numberOfPeriods * 4;
            var endDate = startDate.AddDays(numberOfWeeks * 7);
            var weekCounter = 0;
            var periodCounter = 0;

            while (startDate < endDate)
            {
                var week = WeekRepository.WeekNew();

                week.StartDate = startDate;
                week.EndDate = week.StartDate.AddDays(6);
                week.Year = year;
                week.Period = periodCounter + 1;

                WeekRepository.WeekSave(week);

                startDate = startDate.AddDays(7);

                weekCounter++;

                if (weekCounter % 4 == 0)
                {
                    periodCounter++;
                }
            }
        }