public static VotingStrategy CreateStrategy(VotingType votingType, VotingModel model) { switch (votingType) { case VotingType.Open: return new OpenVotingStrategy(model.Contest, model.Photo, model.UserId); case VotingType.Closed: return new ClosedVotingStrategy(model.Contest, model.Photo, model.UserId); default: throw new ArgumentException(); } }
private void FillVoters(Contest contest, ICollection<string> votersIds, VotingType votingType) { if (votersIds == null || votingType == VotingType.Open) { contest.Voters.Clear(); } else { var voters = contest.Voters.ToList(); foreach (var voterId in votersIds) { if (contest.Voters.All(v => v.Id != voterId)) { var voter = this.ContestsData.Users.Find(voterId); contest.Voters.Add(voter); } } foreach (var voter in voters) { if (!votersIds.Contains(voter.Id)) { contest.Voters.Remove(voter); } } } }