ActivEarth.Server.Service.Competition.ChallengeManager.GenerateNewChallenges C# (CSharp) Метод

GenerateNewChallenges() публичный статический Метод

Creates new challenges such that the correct number of each type of challenge (daily, weekly, monthly) are active.
public static GenerateNewChallenges ( ) : void
Результат void
        public static void GenerateNewChallenges()
        {
            int numberOfDailyChallenges = 3;
            int numberOfWeeklyChallenges = 3;
            int numberOfMonthlyChallenges = 3;

            List<Challenge> dailyChallenges = ChallengeDAO.GetActiveDailyChallenges();
            List<Challenge> weeklyChallenges = ChallengeDAO.GetActiveWeeklyChallenges();
            List<Challenge> monthlyChallenges = ChallengeDAO.GetActiveMonthlyChallenges();

            if (dailyChallenges.Count < numberOfDailyChallenges)
            {
                List<Challenge> newDailyChallenges =
                    ChallengeDAO.GenerateRandomChallenges(ChallengeType.Daily,
                    numberOfDailyChallenges - dailyChallenges.Count);

                foreach (Challenge newDailyChallenge in newDailyChallenges)
                {
                    newDailyChallenge.Duration = new TimeSpan(1, 0, 0, 0);
                    newDailyChallenge.EndTime = DateTime.Today.Add(newDailyChallenge.Duration);
                    newDailyChallenge.IsActive = true;

                    ChallengeDAO.CreateNewChallenge(newDailyChallenge);
                }
            }

            if (weeklyChallenges.Count < numberOfWeeklyChallenges)
            {
                List<Challenge> newWeeklyChallenges =
                    ChallengeDAO.GenerateRandomChallenges(ChallengeType.Weekly,
                    numberOfWeeklyChallenges - weeklyChallenges.Count);

                foreach (Challenge newWeeklyChallenge in newWeeklyChallenges)
                {
                    newWeeklyChallenge.Duration = new TimeSpan(7, 0, 0, 0);
                    newWeeklyChallenge.EndTime = DateTime.Today.Add(newWeeklyChallenge.Duration).AddDays(-(int)DateTime.Today.DayOfWeek);
                    newWeeklyChallenge.IsActive = true;

                    ChallengeDAO.CreateNewChallenge(newWeeklyChallenge);
                }
            }

            if (monthlyChallenges.Count < numberOfMonthlyChallenges)
            {
                List<Challenge> newMonthlyChallenges =
                    ChallengeDAO.GenerateRandomChallenges(ChallengeType.Monthly,
                    numberOfMonthlyChallenges - monthlyChallenges.Count);

                foreach (Challenge newMonthlyChallenge in newMonthlyChallenges)
                {
                    newMonthlyChallenge.Duration = new TimeSpan(DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month), 0, 0, 0);
                    newMonthlyChallenge.EndTime = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).Add(newMonthlyChallenge.Duration);
                    newMonthlyChallenge.IsActive = true;

                    ChallengeDAO.CreateNewChallenge(newMonthlyChallenge);
                }
            }
        }