public void HandleRequestAsync(RequestModel requestModel, IOutputBoundary <ResponseModel> outputBoundary)
        {
            _ = requestModel?.PlayerId ?? throw new ArgumentNullException(nameof(requestModel.PlayerId));

            var avitar = AvitarRepository.ReadAsync(requestModel.PlayerId);

            var currentPlayer = new BlackJackPlayer(avitar, HandIdProvider, requestModel.HandCount);

            var keyAndGame = GameRepository.FindByStatusFirstOrDefault(GameStatus.Waiting, requestModel.MaxPlayers);

            string        gameIdentifier;
            BlackJackGame game;

            if (string.IsNullOrEmpty(keyAndGame.Key))
            {
                gameIdentifier = GameIdProviders.GenerateGameId();
                game           = new BlackJackGame(CardProvider, DealerProvider.Dealer, requestModel.MaxPlayers);
            }
            else
            {
                gameIdentifier = keyAndGame.Key;
                game           = keyAndGame.Value;
            }

            game.AddPlayer(currentPlayer);

            GameRepository.UpdateAsync(gameIdentifier, game);

            outputBoundary.HandleResponse(new ResponseModel()
            {
                GameIdentifier = gameIdentifier
            });
        }
Esempio n. 2
0
 public GetBasketDetailsInteractor(
     IBasketReadOnlyRepository basketReadOnlyRepository,
     IOutputBoundary <BasketOutput> outputBoundary,
     IOutputConverter outputConverter)
 {
     this.basketReadOnlyRepository = basketReadOnlyRepository;
     this.outputBoundary           = outputBoundary;
     this.outputConverter          = outputConverter;
 }
 public GetAccountDetailsInteractor(
     ICustomerReadOnlyRepository customerReadOnlyRepository,
     IOutputBoundary <AccountResponse> outputBoundary,
     IResponseConverter responseConverter)
 {
     this.customerReadOnlyRepository = customerReadOnlyRepository;
     this.outputBoundary             = outputBoundary;
     this.responseConverter          = responseConverter;
 }
 public Interactor(
     ICajuService cajuService,
     IOutputBoundary <RunOutput> outputBoundary,
     IOutputConverter outputConverter)
 {
     this.cajuService     = cajuService;
     this.outputBoundary  = outputBoundary;
     this.outputConverter = outputConverter;
 }
Esempio n. 5
0
 public RandomArticleInteractor(
     IArticleGateway articleGateway,
     ITemplateGenerator templateGenerator,
     IOutputBoundary outputBoundary)
 {
     this.ArticleGateway = articleGateway;
     this.TemplateGenerator = templateGenerator;
     this.OutputBoundary = outputBoundary;
 }
Esempio n. 6
0
 public Interactor(
     IOrderReadOnlyRepository orderReadOnlyRepository,
     IOutputBoundary <TrackingOutput> outputBoundary,
     IOutputConverter outputConverter)
 {
     this.orderReadOnlyRepository = orderReadOnlyRepository;
     this.outputBoundary          = outputBoundary;
     this.outputConverter         = outputConverter;
 }
Esempio n. 7
0
 public ListBooksInteractor(
     IBookReadOnlyRepository bookReadOnlyRepository,
     IOutputBoundary <ListBooksOutput> outputBoundary,
     IOutputConverter outputConverter)
 {
     this.bookReadOnlyRepository = bookReadOnlyRepository;
     this.outputBoundary         = outputBoundary;
     this.outputConverter        = outputConverter;
 }
Esempio n. 8
0
 public RegisterInteractor(
     ICustomerWriteOnlyRepository customerWriteOnlyRepository,
     IOutputBoundary <RegisterResponse> outputBoundary,
     IResponseConverter responseConverter)
 {
     this.customerWriteOnlyRepository = customerWriteOnlyRepository;
     this.outputBoundary    = outputBoundary;
     this.responseConverter = responseConverter;
 }
 public GetAccountDetailsInteractor(
     IAccountReadOnlyRepository accountReadOnlyRepository,
     IOutputBoundary <AccountOutput> outputBoundary,
     IOutputConverter outputConverter)
 {
     this.accountReadOnlyRepository = accountReadOnlyRepository;
     this.outputBoundary            = outputBoundary;
     this.outputConverter           = outputConverter;
 }
Esempio n. 10
0
 public DeleteInteractor(
     IBasketReadOnlyRepository basketReadOnlyRepository,
     IBasketWriteOnlyRepository basketWriteOnlyRepository,
     IOutputBoundary <DeleteOutput> outputBoundary,
     IOutputConverter outputConverter)
 {
     this.basketReadOnlyRepository  = basketReadOnlyRepository;
     this.basketWriteOnlyRepository = basketWriteOnlyRepository;
     this.outputBoundary            = outputBoundary;
     this.outputConverter           = outputConverter;
 }
Esempio n. 11
0
 public GetCustomerDetailsInteractor(
     ICustomerReadOnlyRepository customerReadOnlyRepository,
     IAccountReadOnlyRepository accountReadOnlyRepository,
     IOutputBoundary <CustomerOutput> outputBoundary,
     IOutputConverter outputConverter)
 {
     this.customerReadOnlyRepository = customerReadOnlyRepository;
     this.accountReadOnlyRepository  = accountReadOnlyRepository;
     this.outputBoundary             = outputBoundary;
     this.outputConverter            = outputConverter;
 }
Esempio n. 12
0
 public AddBasketInteractor(
     ICustomerReadOnlyRepository customerReadOnlyRepository,
     IBasketWriteOnlyRepository basketWriteOnlyRepository,
     IOutputBoundary <AddBasketOutput> outputBoundary,
     IOutputConverter outputConverter)
 {
     this.customerReadOnlyRepository = customerReadOnlyRepository;
     this.basketWriteOnlyRepository  = basketWriteOnlyRepository;
     this.outputBoundary             = outputBoundary;
     this.outputConverter            = outputConverter;
 }
 public CreateBookInteractor(
     IBookReadOnlyRepository bookReadOnlyRepository,
     IBookWriteOnlyRepository bookWriteOnlyRepository,
     IOutputBoundary <BookOutput> outputBoundary,
     IOutputConverter outputConverter)
 {
     this.bookReadOnlyRepository  = bookReadOnlyRepository;
     this.bookWriteOnlyRepository = bookWriteOnlyRepository;
     this.outputBoundary          = outputBoundary;
     this.outputConverter         = outputConverter;
 }
Esempio n. 14
0
 public Interactor(
     IPublisher bus,
     IOutputBoundary <OrderOutput> outputBoundary,
     IOutputConverter outputConverter,
     ITrackingService trackingService)
 {
     this.bus             = bus;
     this.outputBoundary  = outputBoundary;
     this.outputConverter = outputConverter;
     this.trackingService = trackingService;
 }
Esempio n. 15
0
 public CheckoutInteractor(
     ICustomerReadOnlyRepository customerReadOnlyRepository,
     IBasketReadOnlyRepository basketReadOnlyRepository,
     IOutputBoundary <CheckoutOutput> outputBoundary,
     IOutputConverter outputConverter)
 {
     this.customerReadOnlyRepository = customerReadOnlyRepository;
     this.basketReadOnlyRepository   = basketReadOnlyRepository;
     this.outputBoundary             = outputBoundary;
     this.outputConverter            = outputConverter;
 }
Esempio n. 16
0
 public WithdrawInteractor(
     ICustomerReadOnlyRepository customerReadOnlyRepository,
     ICustomerWriteOnlyRepository customerWriteOnlyRepository,
     IOutputBoundary <WithdrawResponse> outputBoundary,
     IResponseConverter responseConverter)
 {
     this.customerReadOnlyRepository  = customerReadOnlyRepository;
     this.customerWriteOnlyRepository = customerWriteOnlyRepository;
     this.outputBoundary    = outputBoundary;
     this.responseConverter = responseConverter;
 }
Esempio n. 17
0
 public RegisterInteractor(
     ICustomerWriteOnlyRepository customerWriteOnlyRepository,
     IAccountWriteOnlyRepository accountWriteOnlyRepository,
     IOutputBoundary <RegisterOutput> outputBoundary,
     IOutputConverter outputConverter)
 {
     this.customerWriteOnlyRepository = customerWriteOnlyRepository;
     this.accountWriteOnlyRepository  = accountWriteOnlyRepository;
     this.outputBoundary  = outputBoundary;
     this.outputConverter = outputConverter;
 }
Esempio n. 18
0
 public CloseInteractor(
     IAccountReadOnlyRepository accountReadOnlyRepository,
     IAccountWriteOnlyRepository accountWriteOnlyRepository,
     IOutputBoundary <CloseOutput> outputBoundary,
     IOutputConverter outputConverter)
 {
     this.accountReadOnlyRepository  = accountReadOnlyRepository;
     this.accountWriteOnlyRepository = accountWriteOnlyRepository;
     this.outputBoundary             = outputBoundary;
     this.outputConverter            = outputConverter;
 }
Esempio n. 19
0
 public DepositInteractor(
     IAccountReadOnlyRepository accountReadOnlyRepository,
     IPublisher bus,
     IOutputBoundary <DepositOutput> outputBoundary,
     IOutputConverter responseConverter)
 {
     this.accountReadOnlyRepository = accountReadOnlyRepository;
     this.bus               = bus;
     this.outputBoundary    = outputBoundary;
     this.responseConverter = responseConverter;
 }
Esempio n. 20
0
 public RegisterInteractor(
     ICustomerWriteOnlyRepository customerWriteOnlyRepository,
     IBasketWriteOnlyRepository basketWriteOnlyRepository,
     IOutputBoundary <RegisterOutput> outputBoundary,
     IOutputConverter outputConverter)
 {
     this.customerWriteOnlyRepository = customerWriteOnlyRepository;
     this.basketWriteOnlyRepository   = basketWriteOnlyRepository;
     this.outputBoundary  = outputBoundary;
     this.outputConverter = outputConverter;
 }
Esempio n. 21
0
        public void HandleRequest(RequestModel requestModel, IOutputBoundary <ResponseModel> outputBoundary)
        {
            var game = gameRepository.GetGame(requestModel.GameIdentifier);

            game.HandleLetter(requestModel.Letter);
            gameRepository.SaveGame(requestModel.GameIdentifier, game);
            outputBoundary.HandleResponse(new ResponseModel()
            {
                Phrase            = game.Phrase.Current,
                CurrentPlayerName = game.CurrentPlayer.Name
            });
        }
        public void HandleRequest(RequestModel requestModel, IOutputBoundary <ResponseModel> outputBoundary)
        {
            var completePhrase = phraseRepository.GetPhrase();
            var game           = new Game(requestModel.PlayerNames, completePhrase);
            var gameIdentifier = gameRepository.CreateNewGame(game);

            outputBoundary.HandleResponse(new ResponseModel()
            {
                GameIdentifier    = gameIdentifier,
                Phrase            = game.Phrase.Current,
                CurrentPlayerName = game.CurrentPlayer.Name
            });
        }
Esempio n. 23
0
 public GetCustomerDetailsInteractor(
     ICustomerReadOnlyRepository customerReadOnlyRepository,
     IOrderReadOnlyRepository orderReadOnlyRepository,
     IBasketReadOnlyRepository basketReadOnlyRepository,
     IOutputBoundary <CustomerOutput> outputBoundary,
     IOutputConverter outputConverter)
 {
     this.customerReadOnlyRepository = customerReadOnlyRepository;
     this.orderReadOnlyRepository    = orderReadOnlyRepository;
     this.basketReadOnlyRepository   = basketReadOnlyRepository;
     this.outputBoundary             = outputBoundary;
     this.outputConverter            = outputConverter;
 }
Esempio n. 24
0
 public RegisterInteractor(
     ICustomerReadOnlyRepository customerReadOnlyRepository,
     IAccountReadOnlyRepository accountReadOnlyRepository,
     IPublisher bus,
     IOutputBoundary <RegisterOutput> outputBoundary,
     IOutputConverter responseConverter)
 {
     this.customerReadOnlyRepository = customerReadOnlyRepository;
     this.accountReadOnlyRepository  = accountReadOnlyRepository;
     this.bus               = bus;
     this.outputBoundary    = outputBoundary;
     this.responseConverter = responseConverter;
 }
Esempio n. 25
0
        public void HandleRequestAsync(RequestModel requestModel, IOutputBoundary <ResponseModel> outputBoundary)
        {
            var game = GameRepository.ReadAsync(requestModel.GameIdentifier);

            game.PlayerHits(requestModel.PlayerIdentifier, requestModel.HandIdentifier);

            GameRepository.UpdateAsync(requestModel.GameIdentifier, game);
            var gameDto = MapperBlackJackGameDto.Map(game, requestModel.PlayerIdentifier);

            outputBoundary.HandleResponse(new ResponseModel()
            {
                Game = gameDto
            });
        }
Esempio n. 26
0
 public RemoveBookInteractor(
     IBookReadOnlyRepository bookReadOnlyRepository,
     IBookWriteOnlyRepository bookWriteOnlyRepository,
     IBasketReadOnlyRepository basketReadOnlyRepository,
     IBasketWriteOnlyRepository basketWriteOnlyRepository,
     IOutputBoundary <RemoveBookOutput> outputBoundary,
     IOutputConverter outputConverter)
 {
     this.bookReadOnlyRepository    = bookReadOnlyRepository;
     this.bookWriteOnlyRepository   = bookWriteOnlyRepository;
     this.basketReadOnlyRepository  = basketReadOnlyRepository;
     this.basketWriteOnlyRepository = basketWriteOnlyRepository;
     this.outputBoundary            = outputBoundary;
     this.outputConverter           = outputConverter;
 }
Esempio n. 27
0
        public void HandleRequest(RequestModel requestModel, IOutputBoundary <ResponseModel> outputBoundary)
        {
            var game = gameRepository.GetGame(requestModel.GameIdentifier);

            game.HandleGuess(requestModel.Guess);
            gameRepository.SaveGame(requestModel.GameIdentifier, game);
            var reward = game.IsOver ? game.CurrentPlayer.Money : 0;

            outputBoundary.HandleResponse(new ResponseModel()
            {
                Phrase            = game.Phrase.Current,
                CurrentPlayerName = game.CurrentPlayer.Name,
                Reward            = reward
            });
        }
Esempio n. 28
0
        public void HandleRequestAsync(RequestModel requestModel, IOutputBoundary <ResponseModel> outputBoundary)
        {
            _ = requestModel.PlayerName ?? throw new ArgumentNullException(nameof(requestModel.PlayerName));
            var identifier = IdentifierProvider.GenerateAvitar();
            var player     = new AvitarDto()
            {
                id = identifier, userName = requestModel.PlayerName
            };

            AvitarRepository.CreateAsync(player);

            outputBoundary.HandleResponse(new ResponseModel()
            {
                AvitarIdentifier = identifier
            });
        }
Esempio n. 29
0
        public void HandleRequest(RequestModel requestModel, IOutputBoundary <ResponseModel> outputBoundary)
        {
            var game   = gameRepository.GetGame(requestModel.GameIdentifier);
            var circle = circleRepository.GetCircle();
            var space  = circle.GetSpace(randomProvider.GetRandom(0, circle.CountSpaces()));

            game.HandleSpace(space);
            gameRepository.SaveGame(requestModel.GameIdentifier, game);
            var resultDescription = game.RequestLetter ? game.LetterDollarAmount.Value.ToString() : space.Type.ToString();

            outputBoundary.HandleResponse(new ResponseModel()
            {
                ResultDescription = resultDescription,
                RequestLetter     = game.RequestLetter,
                CurrentPlayerName = game.CurrentPlayer.Name
            });
        }
 public SearchBlogPostsInteractor(ISearchBlogPostsGateway gateway, IOutputBoundary <SearchBlogPostsResponse> outputboundary)
 {
     _gateway       = gateway;
     OutputBoundary = outputboundary;
 }