Пример #1
0
        public FindRoomsByCriteriaResult FindRoomsByCriteria(FindRoomsByCriteriaRequest request)
        {
            var result = new FindRoomsByCriteriaResult();

            try
            {
                // arrange search criteria
                double betSize = request.Criterias.Contains(FindRoomsByCriteriaRequest.BET_SIZE) ? request.BetSize : -1;

                GamePreferences preferences =
                    new NoLimitHoldem()
                {
                    MaxNumberOfPlayers = request.Criterias.Contains(FindRoomsByCriteriaRequest.MAX_NUMBER_OF_PLAYERS) ? request.MaxNumberOfPlayers : -1,
                    AntesValue         = request.Criterias.Contains(FindRoomsByCriteriaRequest.ANTES_VALUE) ? request.Antes : -1,
                    BuyInCost          = request.Criterias.Contains(FindRoomsByCriteriaRequest.BUY_IN_COST) ? request.BuyInCost : -1,
                    Name               = request.Criterias.Contains(FindRoomsByCriteriaRequest.NAME) ? request.Name : "",
                    MinimumBet         = request.Criterias.Contains(FindRoomsByCriteriaRequest.MIN_BET) ? request.MinimumBet : -1,
                    MinNumberOfPlayers = request.Criterias.Contains(FindRoomsByCriteriaRequest.MIN_NUMBER_OF_PLAYERS) ? request.MinNumberOfPlayers : -1,
                };

                Player player = null;
                if (request.Criterias.Contains(FindRoomsByCriteriaRequest.PLAYER))
                {
                    player = _cache.RefreshAndGet(
                        Players,
                        request.Player,
                        new PlayerNotFoundException(string.Format("player id: {0} not found, please re-enter the room.", request.Player))
                        );
                }

                int level = request.Criterias.Contains(FindRoomsByCriteriaRequest.LEVEL) ? request.Level : -1;

                // call search
                var domainRooms = GameCenter.FindRoomsByCriteria(level, player, preferences, betSize);

                // assemble result
                result.Rooms   = DomainRoomsToRoomsResults(domainRooms);
                result.Success = true;
            }
            catch (PokerException e)
            {
                result.Success      = false;
                result.ErrorMessage = e.Message;
                Logger.Error(e, this);
            }

            return(result);
        }
Пример #2
0
        public HttpResponseMessage FindRoomsByCriteria(FindRoomsByCriteriaRequest request)
        {
            var result = new FindRoomsByCriteriaResult();

            try
            {
                result = service.FindRoomsByCriteria(request);
            }
            catch (Exception e)
            {
                result.ErrorMessage = e.Message;
                result.Success      = false;
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, result));
            }

            return(Request.CreateResponse(HttpStatusCode.OK, result));
        }