public async Task <bool> CreateNewGameByPlayerId(DTONewPlayerGame newPlayerGame) { try { var game = await _context.Game.Include("Course.Holes").SingleAsync(g => g.Id == newPlayerGame.GameId); // var courseHole = await _context.Course.Include(h => h.Holes).FirstOrDefaultAsync(c => c.Id == game.Course); var player = await _context.Player.SingleAsync(p => p.Id == newPlayerGame.PlayerId); var playerHoleScoreList = new List <PlayerHoleScore>(); var pscors = _context.Score.Where(x => x.Player.Id == newPlayerGame.PlayerId && x.Game.Id == newPlayerGame.GameId).SingleOrDefault(); if (pscors == null) { foreach (var hole in game.Course.Holes) { var playerScore = new PlayerHoleScore { Player = player, Hole = hole, Points = 0, Score = 0 }; playerHoleScoreList.Add(playerScore); } var score = new Score { Player = player, Game = game, Holes = playerHoleScoreList }; await _context.AddAsync(score); await _context.SaveChangesAsync(); return(true); } else { return(true); } } catch (Exception e) { return(false); } }
public void UpdatePlayerStroke(DTOPlayerStroke value) { try { Player player = dbContext.Player.Where(p => p.Id == value.playerId).First(); Hole hole = dbContext.Hole.Where(h => h.Id == value.holeId).First(); int par = hole.Par; int stroke = hole.Stroke; double handicap = player.HandiCap; double handCOver18 = 0; if (handicap > 18) { handCOver18 = handicap - 18; } PlayerHoleScore playerStroke = dbContext.PlayerHoleScore.Include(z => z.Player).Include(x => x.Hole) .Include(y => y.GameScore).Include("GameScore.Game") .Where(p => p.Player.Id == value.playerId && p.Hole.Id == value.holeId && p.GameScore.Game.Id == value.gameId).Single(); if (playerStroke == null) { int score = 0; if (value.Strokes == par + 1) { score = 1; } if (value.Strokes == par) { score = 2; } if (value.Strokes == par - 1) { score = 3; } if (value.Strokes == par - 2) { score = 4; } if (value.Strokes == par - 3) { score = 5; } if (value.Strokes == par - 4) { score = 6; } if (stroke <= handicap) { if (value.Strokes <= par + 2) { score++; } } if (stroke <= handCOver18) { if (value.Strokes <= par + 3) { score++; } } playerStroke.Score = value.Strokes; playerStroke.Points = score; playerStroke.ScoreUpdated = DateTime.Now; dbContext.Add(playerStroke); dbContext.SaveChanges(); } else { int score = 0; if (value.Strokes == par + 1) { score = 1; } if (value.Strokes == par) { score = 2; } if (value.Strokes == par - 1) { score = 3; } if (value.Strokes == par - 2) { score = 4; } if (value.Strokes == par - 3) { score = 5; } if (value.Strokes == par - 4) { score = 6; } if (stroke <= handicap) { if (value.Strokes <= par + 2) { score++; } } if (stroke <= handCOver18) { if (value.Strokes <= par + 3) { score++; } } playerStroke.Score = value.Strokes; playerStroke.Points = score; playerStroke.ScoreUpdated = DateTime.Now; dbContext.SaveChanges(); } } catch (Exception e) { throw; } }