public OutGetBattleFieldsVM GetPlayerBattleFields(int playerId)
        {
            OutGetBattleFieldsVM outGetBattleFieldsVM = new OutGetBattleFieldsVM();

            try
            {
                BattleshipApi.Player.DML.Player player = IBoPlayer.FindPlayerById(playerId);

                if (player == null || player.ID <= 0)
                {
                    outGetBattleFieldsVM.Message    = "Player not found";
                    outGetBattleFieldsVM.HttpStatus = StatusCodes.Status400BadRequest;
                }
                else
                {
                    outGetBattleFieldsVM.BattleFields = IBoBattleField.Get(player.ID);
                }
            }
            catch (Exception ex)
            {
                outGetBattleFieldsVM.HttpStatus   = StatusCodes.Status400BadRequest;
                outGetBattleFieldsVM.Message      = $"Error while getting battle fields! {ex.Message}";
                outGetBattleFieldsVM.BattleFields = null;
            }

            return(outGetBattleFieldsVM);
        }
        public OutAttackPlayerVM AttackPositions(InAttackPositionsVm pModel)
        {
            OutAttackPlayerVM outAttackPlayerVM = new OutAttackPlayerVM();

            if (pModel.attackPositions.Any())
            {
                BattleshipApi.Player.DML.Player player = IBoPlayer.FindPlayerByUserName(User.Claims.GetJWTUserName());

                if (player == null || player.ID <= 0)
                {
                    outAttackPlayerVM.Message    = "Player not found";
                    outAttackPlayerVM.HttpStatus = StatusCodes.Status400BadRequest;
                }
                else
                {
                    Match currentMatch = IBoMatch.CurrentMatch(player.ID);

                    if (currentMatch == null || currentMatch.ID <= 0)
                    {
                        outAttackPlayerVM.Message    = "Match not found";
                        outAttackPlayerVM.HttpStatus = StatusCodes.Status400BadRequest;
                    }
                    else
                    {
                        outAttackPlayerVM.HitTarget = IBoBattleField.AttackPositions(pModel.attackPositions.Select(c => new BattleshipApi.BattleField.DML.BattleField()
                        {
                            Attacked       = 0,
                            MatchID        = currentMatch.ID,
                            Player         = player.ID,
                            PositionObject = new BattleshipApi.BattleField.DML.BattleFieldPosition()
                            {
                                X = c.PosX,
                                Y = c.PosY
                            }
                        }).ToList(), pModel.specialPower, out bool enemyDefeated) == 1;
                        outAttackPlayerVM.EnemyDefeated     = enemyDefeated;
                        outAttackPlayerVM.PositionsAttacked = IBoMatchAttacks.PositionsAttacked(currentMatch.ID, currentMatch.CurrentPlayer == currentMatch.Player1 ? currentMatch.Player2 : currentMatch.Player1);
                    }
                }
            }
            else
            {
                outAttackPlayerVM.Message    = "No attack positions";
                outAttackPlayerVM.HttpStatus = StatusCodes.Status400BadRequest;
            }

            return(outAttackPlayerVM);
        }
        public OutShowPositionsVM ShowPositions(List <InShowPositionsVM> pShowPositions, int pSpecialPower)
        {
            OutShowPositionsVM outDefendPlayer = new OutShowPositionsVM();

            if (pShowPositions.Any())
            {
                BattleshipApi.Player.DML.Player player = IBoPlayer.FindPlayerByUserName(User.Claims.GetJWTUserName());

                if (player == null || player.ID <= 0)
                {
                    outDefendPlayer.Message    = "Player not found";
                    outDefendPlayer.HttpStatus = StatusCodes.Status400BadRequest;
                }
                else
                {
                    Match currentMatch = IBoMatch.CurrentMatch(player.ID);

                    if (currentMatch == null || currentMatch.ID <= 0)
                    {
                        outDefendPlayer.Message    = "Match not found";
                        outDefendPlayer.HttpStatus = StatusCodes.Status400BadRequest;
                    }
                    else
                    {
                        outDefendPlayer.Positions = IBoBattleField.ShowPositions(pShowPositions.Select(c => new BattleshipApi.BattleField.DML.BattleField()
                        {
                            MatchID        = currentMatch.ID,
                            Player         = player.ID,
                            PositionObject = new BattleshipApi.BattleField.DML.BattleFieldPosition()
                            {
                                X = c.PosX,
                                Y = c.PosY
                            }
                        }).ToList(), pSpecialPower);
                    }
                }
            }
            else
            {
                outDefendPlayer.Message    = "No positions to show";
                outDefendPlayer.HttpStatus = StatusCodes.Status400BadRequest;
            }

            return(outDefendPlayer);
        }