public async Task <GameState> UpdateStateAsync(int?playerId, GameStateVm vm)
        {
            var state = await GetStateByIdAsync(playerId, vm.GameId);

            if (state == null)
            {
                return(null);
            }
            if (state.Timestamp > vm.Timestamp || state.FrameCount > vm.FrameCount)
            {
                return(state);
            }

            state.Timestamp   = DateTime.UtcNow;
            state.Direction   = vm.Direction;
            state.MapId       = vm.MapId;
            state.MapX        = vm.MapX;
            state.MapY        = vm.MapY;
            state.MapXPrecise = vm.MapXPrecise;
            state.MapYPrecise = vm.MapYPrecise;
            state.FrameCount  = vm.FrameCount;
            state.StepCount   = vm.StepCount;
            state.BattleCount = vm.BattleCount;
            _dbcontext.Update(state);
            _dbcontext.SaveChanges();

            return(state);
        }
 public async Task <GameStateVm> UpdateState([FromBody] GameStateVm vm)
 {
     if (vm == null)
     {
         return(new GameStateVm("No state supplied"));
     }
     return(await _gameRepository.UpdateStateVmAsync(PlayerId, vm));
 }
        public async Task <GameStateVm> UpdateStateVmAsync(int?playerId, GameStateVm vm)
        {
            var state = await UpdateStateAsync(playerId, vm);

            if (state == null)
            {
                return(new GameStateVm($"Can't update state with game id #{vm.GameId}"));
            }
            return(new GameStateVm(state));
        }