private void AddTeamPenalties(IList<Jam> jams, Dictionary<string, Player> players, Dictionary<int, PlayerPenaltiesModel> playerPenalties) { //PenaltyProcessor processor = new PenaltyProcessor(jams, players); PenaltyGateway penaltyGateway = new PenaltyGateway(_connection, _transaction); bool isSuccess = true; foreach(KeyValuePair<int, PlayerPenaltiesModel> kvp in playerPenalties) { int penaltyCount = 0; foreach(PenaltyModel penalty in kvp.Value.Penalties) { Jam jam = jams.FirstOrDefault(j => j.IsFirstHalf == penalty.IsFirstHalf && j.JamNumber == penalty.JamNumber); if(jam == null) { Console.WriteLine(string.Format("Unknown jam number {0} on penalty for player {1}.", penalty.JamNumber, kvp.Value.PlayerNumber)); isSuccess = false; } penaltyCount++; Penalty pen = new Penalty { JamID = jam.ID, PlayerID = kvp.Key, PenaltyCode = penalty.PenaltyCode, PenaltyNumber = penaltyCount, MatchingKey = penalty.SpecificKey }; if(pen.MatchingKey != null) { Console.WriteLine(string.Format("Special case penalty {0}{1} encountered in {2}", penalty.PenaltyCode, penalty.SpecificKey, penalty.JamNumber)); } penaltyGateway.AddBasicPenalty(pen); } } if(!isSuccess) { throw new InvalidOperationException("Bad penalty data"); } }
private void TranslatePenaltyDictionary(Dictionary<int, PlayerPenaltiesModel> playerPenaltiesModelMap, out Dictionary<int, List<Penalty>> jamPenaltyMap, out Dictionary<int, List<Penalty>> playerPenaltyMap) { jamPenaltyMap = new Dictionary<int, List<Penalty>>(50); playerPenaltyMap = new Dictionary<int, List<Penalty>>(28); foreach (KeyValuePair<int, PlayerPenaltiesModel> playerPenalty in playerPenaltiesModelMap) { int penaltyCount = 1; foreach (PenaltyModel penaltyModel in playerPenalty.Value.Penalties) { Jam jam = _jams.First(j => j.IsFirstHalf == penaltyModel.IsFirstHalf && j.JamNumber == penaltyModel.JamNumber); if (!jamPenaltyMap.ContainsKey(jam.ID)) { jamPenaltyMap[jam.ID] = new List<Penalty>(); } if (!playerPenaltyMap.ContainsKey(playerPenalty.Key)) { playerPenaltyMap[playerPenalty.Key] = new List<Penalty>(); } Penalty penalty = new Penalty { PlayerID = playerPenalty.Key, PenaltyCode = penaltyModel.PenaltyCode, PenaltyNumber = penaltyCount, JamID = jam.ID, MatchingKey = penaltyModel.SpecificKey }; penaltyCount++; jamPenaltyMap[jam.ID].Add(penalty); playerPenaltyMap[playerPenalty.Key].Add(penalty); } } }
internal Penalty ReadPenaltyData(SqlDataReader reader, out int groupID) { Penalty penalty = new Penalty(); groupID = reader.GetInt32(reader.GetOrdinal("GroupID")); penalty.PlayerID = reader.GetInt32(reader.GetOrdinal("PlayerID")); penalty.JamID = reader.GetInt32(reader.GetOrdinal("JamID")); penalty.PenaltyCode = reader.GetString(reader.GetOrdinal("Code")); return penalty; }