private async Task AddMatchPlayers(TeamMatchPlayerEntryType[] players, MatchEntity match, bool thuisSpeler) { if (players == null) { return; } foreach (var frenoyVerslagSpeler in players) { if (string.IsNullOrWhiteSpace(frenoyVerslagSpeler.UniqueIndex)) { // Even more forfeited stuff continue; } MatchPlayerEntity matchPlayerEntity = new MatchPlayerEntity { MatchId = match.Id, Ranking = frenoyVerslagSpeler.Ranking, Home = thuisSpeler, Name = GetSpelerNaam(frenoyVerslagSpeler), Position = int.Parse(frenoyVerslagSpeler.Position), UniqueIndex = int.Parse(frenoyVerslagSpeler.UniqueIndex), Status = PlayerMatchStatus.Major }; if (frenoyVerslagSpeler.VictoryCount != null) { matchPlayerEntity.Won = int.Parse(frenoyVerslagSpeler.VictoryCount); } else { Debug.Assert(frenoyVerslagSpeler.IsForfeited, "Either a VictoryCount or IsForfeited"); } PlayerEntity dbPlayer = null; if (match.IsHomeMatch.HasValue && ((match.IsHomeMatch.Value && thuisSpeler) || (!match.IsHomeMatch.Value && !thuisSpeler))) { if (_isVttl) { dbPlayer = await _db.Players.SingleOrDefaultAsync(x => x.ComputerNummerVttl.HasValue && x.ComputerNummerVttl.Value.ToString() == frenoyVerslagSpeler.UniqueIndex); } else { dbPlayer = await _db.Players.SingleOrDefaultAsync(x => x.LidNummerSporta.HasValue && x.LidNummerSporta.Value.ToString() == frenoyVerslagSpeler.UniqueIndex); } } if (dbPlayer != null) { matchPlayerEntity.PlayerId = dbPlayer.Id; if (!string.IsNullOrWhiteSpace(dbPlayer.NaamKort)) { matchPlayerEntity.Name = dbPlayer.NaamKort; } } match.Players.Add(matchPlayerEntity); } }
/// <summary> /// Set all players for the match to Captain/Major /// </summary> /// <param name="blockAlso">Also block the match to the newStatus level</param> public async Task <Match> EditMatchPlayers(int matchId, int[] playerIds, string newStatus, bool blockAlso, string comment) { Debug.Assert(newStatus == PlayerMatchStatus.Captain || newStatus == PlayerMatchStatus.Major); using (var db = new TtcDbContext()) { var match = await db.Matches.SingleAsync(x => x.Id == matchId); if (match.IsSyncedWithFrenoy) { return(await GetMatch(matchId)); } match.FormationComment = comment; match.Block = blockAlso ? newStatus : null; var existingPlayers = await db.MatchPlayers .Where(x => x.MatchId == matchId) .Where(x => x.Status == newStatus) .ToArrayAsync(); db.MatchPlayers.RemoveRange(existingPlayers); for (int i = 0; i < playerIds.Length; i++) { var player = await db.Players.FindAsync(playerIds[i]); var newMatchPlayer = new MatchPlayerEntity { Id = i * -1, MatchId = matchId, PlayerId = player.Id, Name = player.NaamKort, Status = newStatus, Ranking = match.Competition == Competition.Vttl ? player.KlassementVttl : player.KlassementSporta, Home = match.IsHomeMatch.Value, Position = i }; db.MatchPlayers.Add(newMatchPlayer); } await db.SaveChangesAsync(); } var newMatch = await GetMatch(matchId); return(newMatch); }
public async Task <T> Save <T>(IMatchPlayerCreateDomainModel model) where T : IMatchPlayerDomainModel, new() { var entity = new MatchPlayerEntity(); if (model.Id != 0) { entity = await _matchPlayerRepository.GetByIdAsync(model.Id); } Mapper.Map(model, entity); if (entity.Id != 0) { _matchPlayerRepository.Edit(entity); } else { _matchPlayerRepository.Add(entity); } _unitOfWork.CommitChanges(); var response = await Get <T>(entity.Id); return(response); }