public void GeneratorPieces()
        {
            Game            game = GetGame(activeGameId);
            NavyBattlePiece piece;

            for (int i = 0; i < 100; i++)
            {
                piece        = new NavyBattlePiece(); // není to stále jen ten jeden dílek - je jich 100
                piece.State  = BattlePieceState.Water;
                piece.GameId = activeGameId;
                piece.UserId = activeUserId;
                piece.PosX   = i % 10;
                piece.PosY   = i / 10;
                _db.NavyBattlePieces.Add(piece);
            }
            _db.SaveChanges();

            //tohle nemůže fungovat - musí se na to jinak...
            var shipPieces = _db.NavyBattlePieces.AsEnumerable().Where(sP => sP.PosX == _rnd.Next(1, 10) && sP.PosY == _rnd.Next(1, 10) && sP.GameId == activeGameId).ToList();

            foreach (var shipPiece in shipPieces)
            {
                shipPiece.State = BattlePieceState.Ship;
            }
            _db.SaveChanges();
        }
        public string AddShipColorManagement(int navyBattlePieceId)
        {
            NavyBattlePiece battlePiece = _db.NavyBattlePieces.Where(p => p.Id == navyBattlePieceId).SingleOrDefault(); // nevim jak tohle funguje takže nevim jestli to tu vubec ma bejt

            switch (battlePiece.PieceState)
            {
            case PieceState.Ship:
                return("black");

            case PieceState.Margin:
                return("white");

            default:
                return("");
            }
        }
        public void PlaceShips(int?navyBattlePieceId)
        {
            if (navyBattlePieceId == null)
            {
                return;
            }
            NavyBattlePiece battlePiece = _db.NavyBattlePieces.Where(p => p.Id == navyBattlePieceId).SingleOrDefault();

            Game     currentgame    = GetCurrentGame();
            UserGame activeUserGame = _db.UserGames.Where(m => m.UserId == currentgame.PlayerOnTurnId && m.GameId == currentgame.GameId).AsNoTracking().SingleOrDefault();

            string   activeUserId = GetActiveUserId();
            UserGame ShootersGame = _db.UserGames.Where(u => u.UserId == activeUserId && u.GameId == currentgame.GameId)
                                    .Include(u => u.Game)
                                    .AsNoTracking().SingleOrDefault();

            PieceState newState;

            switch (battlePiece.PieceState)
            {
            case PieceState.Ship:
                newState           = PieceState.Water;
                battlePiece.Hidden = true;
                break;

            case PieceState.Water:
                newState           = PieceState.Ship;
                battlePiece.Hidden = true;
                break;

            default:
                newState = battlePiece.PieceState;
                break;
            }
            battlePiece.PieceState = newState;
            _db.SaveChanges();
        }
        public string Fire(int?navyBattlePieceId)
        {
            //TODO - podmínky pro střelbu
            string result = " ";

            if (navyBattlePieceId == null)
            {
                return(result);
            }
            NavyBattlePiece battlePiece    = _db.NavyBattlePieces.Include(x => x.UserGame).Where(p => p.Id == navyBattlePieceId).SingleOrDefault();
            Game            currentgame    = GetCurrentGame();
            UserGame        activeUserGame = _db.UserGames.Include(x => x.NavyBattlePieces).Where(m => m.UserId == currentgame.PlayerOnTurnId && m.GameId == currentgame.GameId).AsNoTracking().SingleOrDefault();
            string          activeUserId   = GetActiveUserId();
            UserGame        ShootersGame   = _db.UserGames.Where(u => u.UserId == activeUserId && u.GameId == currentgame.GameId)
                                             .Include(u => u.Game)
                                             .AsNoTracking().SingleOrDefault();

            IList <NavyBattlePiece> UnhittedPieces = _db.NavyBattlePieces.Where(u => u.UserGameId == battlePiece.UserGameId && u.PieceState == PieceState.Ship).ToList();
            User hittedPlayer = _db.Users.Where(u => u.Id == battlePiece.UserGame.UserId).FirstOrDefault();

            if (UnhittedPieces.Count() < 1)
            {
                //result = $"Zničil jsi poslední loď {hittedPlayer.UserName} a vyhrál jsi!";
                //hittedPlayer. = PlayerState.Loser;
                //_db.Users.Update(hittedPlayer);
                currentgame.GameState = GameState.End;
                //_db.Games.Update(ShootersGame.Game);
                _db.SaveChanges();
            }

            if (currentgame.GameState == GameState.End)
            {
                return("Konec hry!");
            }
            else
            {
                currentgame.GameState = GameState.Battle;
                _db.SaveChanges();
                if (battlePiece.UserGameId == ShootersGame.Id)
                {
                    return("Nemůžeš střílet do své lodě");
                }
                if (battlePiece.PieceState == PieceState.DeadShip)
                {
                    return("Tato loď je již trefená");
                }
                if (battlePiece.PieceState == PieceState.DeadWater)
                {
                    return("Tuto vodu jsi již trefil");
                }
                //if (activeUserId != currentgame.PlayerOnTurnId)
                //{
                //    return "Nejsi na řadě";
                //}
                else
                {
                    PieceState newState;
                    switch (battlePiece.PieceState)
                    {
                    case PieceState.Ship:
                        newState           = PieceState.DeadShip;
                        battlePiece.Hidden = false;
                        result             = "Trefil jsi loď!";
                        break;

                    case PieceState.Water:
                        newState           = PieceState.DeadWater;
                        battlePiece.Hidden = false;
                        result             = "Trefil jsi vodu";
                        break;

                    default:
                        newState           = battlePiece.PieceState;
                        battlePiece.Hidden = false;
                        break;
                    }
                    battlePiece.PieceState = newState;
                    _db.SaveChanges();
                }
            }

            return(result);
        }