public IHttpActionResult PostMatch([FromBody]CreateMatchViewModel data)
        {
            if (!ModelState.IsValid)
                return BadRequest();

            if (data.P1Name == data.P2Name)
                return BadRequest("Two different players are required for this game");

            //this condition verify if is required the creation of some player
            var p1Created = _gameOfDronesRepository.AddPlayer(data.P1Name);
            var p2Created = _gameOfDronesRepository.AddPlayer(data.P2Name);

            if (p1Created || p2Created)
                _gameOfDronesRepository.SaveChanges();

            var currentRule = _gameOfDronesRepository.GetCurrentRule();

            var match = new Match
            {
                Rule = currentRule,
            };

            //initialize default player stats. this data will be filled after the game ends
            var player1Stats = new PlayerStats
            {
                Player = _gameOfDronesRepository.GetPlayerByName(data.P1Name),
                MatchResult = MatchResult.Invalid,
            };
            var player2Stats = new PlayerStats
            {
                Player = _gameOfDronesRepository.GetPlayerByName(data.P2Name),
                MatchResult = MatchResult.Invalid,
            };

            match.AddPlayerStats(player1Stats);
            match.AddPlayerStats(player2Stats);

            _gameOfDronesRepository.AddMatch(match);
            _gameOfDronesRepository.SaveChanges();

            return Ok(match);
        }
Exemple #2
0
 public void AddPlayerStats(PlayerStats playerStats)
 {
     if(PlayersStatses == null)
         PlayersStatses = new LinkedList<PlayerStats>();
     PlayersStatses.Add(playerStats);
 }