Beispiel #1
0
        public async Task <ActionResult> GetGamertagFromPlayerId([FromRoute] string playerid)
        {
            // Call data store
            var player = await _store.GetPlayerDetailsByUserIdAsync(playerid);

            // Return result
            return(Ok(new { gamertag = player?.Gamertag }));
        }
Beispiel #2
0
        public async Task <ActionResult> GetCurrentPlayer()
        {
            string userId = User.GetId();

            // Call data store
            var player = await _store.GetPlayerDetailsByUserIdAsync(userId);

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

            // Return result
            return(Ok(PlayerGetResponseModel.FromPlayer(player)));
        }
        public async Task <ActionResult> 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(BadRequest());
            }

            var playerEntity = await _store.GetPlayerDetailsByUserIdAsync(userId);

            if (playerEntity == null)
            {
                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(BadRequest());
                }
                playerEntity.Country   = player.Country;
                playerEntity.CustomTag = player.CustomTag;
            }

            // Update player
            await _store.SavePlayerAsync(playerEntity);

            // Return result
            return(NoContent());
        }