public Round StartRoundOrGetExisting(int userId)
        {
            GameEntity  gameEntity  = StartNewGameOrGetExisting(userId);
            RoundEntity roundEntity = _roundRepository.GetCurrentOpenRound(gameEntity.Id);

            if (null != roundEntity)
            {
                // Unfinished round
                return(RoundEntityFactory.Create(roundEntity, ROUNDS_PER_GAME, RoundsPlayedInGame(gameEntity.Id)));
            }
            roundEntity = RoundEntityFactory.Create(gameEntity.Id);

            // Determine the correct one
            var randomImages = _imageRepository.GetRandomImages(IMAGES_PER_ROUND, _userRepository.Get(userId).FullName);
            int indexOfCorrectImageInList = (new Random()).Next(IMAGES_PER_ROUND);
            var correctImage = randomImages.ElementAt(indexOfCorrectImageInList);

            Round round = RoundFactory.Create(new List <Image>(), RoundsPlayedInGame(gameEntity.Id), ROUNDS_PER_GAME, correctImage.Name);

            roundEntity.CorrectImageId = correctImage.Id;
            _roundRepository.Create(roundEntity);

            foreach (ImageEntity imageEntity in randomImages)
            {
                ImageInRoundEntity imageInRoundEntity = ImageInRoundEntityFactory.Create(imageEntity.Id, roundEntity.Id);
                _imageInRoundRepository.Create(imageInRoundEntity);
                round.Images.Add(ImageFactory.Create(imageEntity.Url, imageEntity.Id));
            }

            return(round);
        }
Esempio n. 2
0
        public void GenerateRound()
        {
            var roundNumbers = new List <int>();
            var rnd          = new Random();

            var i = 0;

            while (i < 7)
            {
                var check = rnd.Next(1, 37);
                if (!roundNumbers.Contains(check))
                {
                    roundNumbers.Add(check);
                    i++;
                }
            }

            var numbers = string.Join(";", roundNumbers.OrderBy(x => x));

            var model = _roundRepository.GetAll().FirstOrDefault(r => string.IsNullOrEmpty(r.WinningComination));

            model.WinningComination = numbers;
            model.DateResults       = DateTime.Now;
            model.PayIn             = CalculateProfit(model.Id);
            model.PayOut            = CalculateLoss(model.Id);

            _roundRepository.Update(model);

            _roundRepository.Create(new Round
            {
                CreatedRound = DateTime.Now
            });
        }
Esempio n. 3
0
        public async Task <ResponseGameViewModel> CreateNewRound(int gameId)
        {
            var deckFromCache = _deckProvider.Get();
            var game          = await _gameRepository.Get(gameId);

            var round = new Round {
                GameId = gameId
            };
            await _roundRepository.Create(round);

            var userGames  = (await _userGamesRepository.Get(game));
            var users      = (await _userRepository.Get(userGames)).Where(x => x.UserRole != UserRole.Dealer);
            var userRounds = new List <UserRound>();

            CheckDeck(deckFromCache);

            for (int i = 0; i < users.Count(); i++)
            {
                userRounds.Add(new UserRound {
                    RoundId = round.Id, UserId = users.ElementAt(i).Id
                });
            }

            await _userRoundRepository.CreateRange(userRounds);

            return(await GameResponse(gameId));
        }
Esempio n. 4
0
        public ActionResult Update(Round round)
        {
            ApiResult <Round> apiResult;

            if (ModelState.IsValid)
            {
                if (round.Id > 0)
                {
                    apiResult = TryExecute(() =>
                    {
                        _roundRepository.Update(round);
                        _unitOfWork.Commit();
                        return(round);
                    }, "Interview Round updated sucessfully");
                }
                else
                {
                    apiResult = TryExecute(() =>
                    {
                        _roundRepository.Create(round);
                        _unitOfWork.Commit();
                        return(round);
                    }, "Interview Round created sucessfully");
                }
            }
            else
            {
                apiResult = ApiResultFromModelErrors <Round>();
            }

            return(Json(apiResult, JsonRequestBehavior.AllowGet));
        }
Esempio n. 5
0
        public ActionResult Create(Round round)
        {
            if (ModelState.IsValid)
            {
                _roundRepository.Create(round);
                _unitOfWork.Commit();
                return(RedirectToAction("Index"));
            }

            return(View(round));
        }
Esempio n. 6
0
        public void StartFirstRound(int gameId, IEnumerable <int> playersId)
        {
            int   number = _roundRepository.GetCountRoundsByGame(gameId);
            Round round  = new Round
            {
                GameId      = gameId,
                NumberRound = number + 1,
                IsCompleted = false
            };

            round.Id = _roundRepository.Create(round);
            foreach (int id in playersId)
            {
                RoundPlayer roundPlayer = new RoundPlayer
                {
                    RoundId  = round.Id,
                    PlayerId = id
                };
                _roundPlayerRepository.Create(roundPlayer);
            }
        }
Esempio n. 7
0
        public async Task <GetRoundGameView> GetRound(int gameId)
        {
            Game game = await _gameRepository.Get(gameId);

            if (game == null)
            {
                var stringBuilder = new StringBuilder();

                stringBuilder.AppendLine(string.Format("GameId: {0}", gameId));
                stringBuilder.AppendLine(string.Format("Message: {0}", SolutionConstants.BUSINESS_LOGIC_GET_ITEM_EXCEPTION_MESSAGE));

                string message = stringBuilder.ToString();

                throw new BusinessLogicGetItemException(message);
            }

            var responseView = new GetRoundGameView();

            if (!game.IsFinished)
            {
                Round round = await _roundRepository.GetLastRound(gameId);

                var newRound = new Round();

                newRound.GameId = gameId;

                newRound.NumberOfRound = round != null ? (round.NumberOfRound + GameConstants.NEXT_ROUND) : GameConstants.FIRST_ROUND;

                await SetFinishedGameIfEndedRounds(newRound.NumberOfRound, game);

                await _roundRepository.Create(newRound);

                responseView.RoundId       = newRound.Id;
                responseView.NumberOfRound = newRound.NumberOfRound;
            }

            return(responseView);
        }
        public Round Create(Round round)
        {
            var validatedRound = _roundVali.ValidateRound(round);

            return(_roundRepo.Create(validatedRound));
        }