public Contest( EntryType participationType = EntryType.Open, EntryType votingType = EntryType.Open, RankingType rewardType = RankingType.Multiple, DeadlineType deadlineType = DeadlineType.Time) { this._winners = new HashSet<ContestEntry>(); this._contestEntries = new HashSet<ContestEntry>(); this._participants = new HashSet<User>(); this._participationStrategy = new ParticipationStrategy(participationType); this._votingStrategy = new VotingStrategy(votingType); this._rewardStrategy = new RewardStrategy(rewardType); this._deadlineStrategy = new DeadlineStrategy(deadlineType); }
private void SeedStrategies(PhotoContestDbContext context) { var dlStrategyByNumber = new DeadlineStrategy { DeadlineStrategyType = DeadlineStrategyType.ByNumberOfParticipants, Name = "By Number Of Participants" }; var dlStrategyByTime = new DeadlineStrategy { DeadlineStrategyType = DeadlineStrategyType.ByTime, Name = "By Time" }; var rwStrategySingle = new RewardStrategy { RewardStrategyType = RewardStrategyType.SingleWinner, Name = "Single Winner" }; var rwStrategyTopN = new RewardStrategy { RewardStrategyType = RewardStrategyType.TopNPrizes, Name = "Top N Prizes" }; var vStrategyOpen = new VotingStrategy { VotingStrategyType = VotingStrategyType.Open, Name = "Open" }; var vStrategyClosed = new VotingStrategy { VotingStrategyType = VotingStrategyType.Closed, Name = "Closed" }; var plStrategyOpen = new ParticipationStrategy { ParticipationStrategyType = ParticipationStrategyType.Open, Name = "Open" }; var plStrategyClosed = new ParticipationStrategy { ParticipationStrategyType = ParticipationStrategyType.Closed, Name = "Closed" }; context.DeadlineStrategies.AddOrUpdate(dl => dl.DeadlineStrategyType, dlStrategyByNumber); context.DeadlineStrategies.AddOrUpdate(dl => dl.DeadlineStrategyType, dlStrategyByTime); context.RewardStrategies.AddOrUpdate(rw => rw.RewardStrategyType, rwStrategySingle); context.RewardStrategies.AddOrUpdate(rw => rw.RewardStrategyType, rwStrategyTopN); context.VotingStrategies.AddOrUpdate(v => v.VotingStrategyType, vStrategyOpen); context.VotingStrategies.AddOrUpdate(v => v.VotingStrategyType, vStrategyClosed); context.VotingStrategies.AddOrUpdate(v => v.VotingStrategyType, vStrategyClosed); context.ParticipationStrategies.AddOrUpdate(pl => pl.ParticipationStrategyType, plStrategyOpen); context.ParticipationStrategies.AddOrUpdate(pl => pl.ParticipationStrategyType, plStrategyClosed); context.SaveChanges(); }