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);
        }
Example #3
0
        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);
        }