public async Task <ActionResult> GetPlayer(string gamertag)
        {
            // Call data store
            var player = await _store.GetPlayerDetailsByGamertagAsync(gamertag);

            if (player == null)
            {
                return(NotFound());
            }

            // Return result
            return(Ok(PlayerGetResponseModel.FromPlayer(player)));
        }
Beispiel #2
0
        public async Task <IActionResult> PutCurrentPlayer([FromBody] PlayerPutRequestModel player)
        {
            string userId = User.GetId();

            // prevent modifying gamertag
            var existingPlayerForGamertag = await _store.GetPlayerDetailsByGamertagAsync(player.Gamertag);

            if (existingPlayerForGamertag != null && existingPlayerForGamertag.UserId != userId)
            {
                // Can't use a gamertag from another user
                return(this.ValidationFailed(new ErrorDetail("gamertag", "Gamertag already in use")));
            }
            bool newPlayer    = false;
            var  playerEntity = await _store.GetPlayerDetailsByUserIdAsync(userId);

            if (playerEntity == null)
            {
                newPlayer    = true;
                playerEntity = new Player
                {
                    UserId    = userId,
                    Gamertag  = player.Gamertag,
                    Country   = player.Country,
                    CustomTag = player.CustomTag
                };
            }
            else
            {
                if (playerEntity.Gamertag != player.Gamertag)
                {
                    // can't change gamertag
                    return(this.ValidationFailed(new ErrorDetail("gamertag", "Can't change gamertag")));
                }
                playerEntity.Country   = player.Country;
                playerEntity.CustomTag = player.CustomTag;
            }
            // Update player
            await _store.SavePlayerAsync(playerEntity);

            // is this a new player registration?
            if (newPlayer)
            {
                _appMonitor.LogEvent("Register");
            }

            // Return result
            return(NoContent());
        }
Beispiel #3
0
        public async Task <ActionResult> TestGamerTag([FromRoute] string gamertag)
        {
            var player = await _store.GetPlayerDetailsByGamertagAsync(gamertag);

            return(Ok(
                       new TestGamerTagResponseModel
            {
                Available = player == null
            }));
        }
        public async Task <ActionResult> TestGamerTag([FromRoute] string gamertag)
        {
            var player = await _store.GetPlayerDetailsByGamertagAsync(gamertag);

            if (player == null)
            {
                return(NotFound());
            }
            return(Ok());
        }
        public async Task <ActionResult> GetCurrentPlayer()
        {
            string gamertag = User.GetGamerTag();

            if (string.IsNullOrWhiteSpace(gamertag))
            {
                return(NotFound());
            }

            // Call data store
            var player = await _store.GetPlayerDetailsByGamertagAsync(gamertag);

            if (player == null)
            {
                return(Ok(new PlayerGetResponseModel()));
            }

            // Return result
            return(Ok(PlayerGetResponseModel.FromPlayer(player)));
        }