public Task <Unit> Handle(InsertCoins request, CancellationToken cancellationToken)
        {
            var machine = _vendingMachineProvider.GetVendingMachine();

            var coins = request.Coins.Select(c => (Coin)c);

            machine.InsertCoins(coins);

            return(Task.FromResult(Unit.Value));
        }
Exemple #2
0
        public async Task <Unit> Handle(CancelOrder request, CancellationToken cancellationToken)
        {
            var machine = _vendingMachineProvider.GetVendingMachine();

            var insertedCoins = machine.CancelOrder();

            await _mediator.Publish(new OrderCancelled(insertedCoins));

            return(Unit.Value);
        }
        protected override GetSelectedProductPriceResult Handle(GetSelectedProductPrice request)
        {
            var machine = _vendingMachineProvider.GetVendingMachine();

            var amount = (decimal)machine.GetAmountToBePaid() / 100;

            return(new GetSelectedProductPriceResult(
                       string.Format("{0:N2} Euro", amount)
                       ));
        }
Exemple #4
0
        public async Task <Unit> Handle(ProcessOrder request, CancellationToken cancellationToken)
        {
            var machine = _vendingMachineProvider.GetVendingMachine();

            var coinsToReturn = machine.ProcessOrder(request.NoChange);

            await _mediator.Publish(
                new OrderProcessed(machine.GetSelectedProduct(),
                                   coinsToReturn
                                   ));

            return(Unit.Value);
        }
        protected override IEnumerable <GetProductItemResult> Handle(GetProducts request)
        {
            var machine = _vendingMachineProvider.GetVendingMachine();

            var products = machine.GetProductsWithPrices()
                           .Select(kvp => new GetProductItemResult(
                                       kvp.Key.ToString(),
                                       string.Format("{0:N2} Euro", (decimal)kvp.Value / 100)
                                       ));

            var amount = (decimal)machine.GetAmountToBePaid() / 100;

            return(products);
        }
Exemple #6
0
        public async Task <Unit> Handle(SelectProduct request, CancellationToken cancellationToken)
        {
            var machine = _vendingMachineProvider.GetVendingMachine();

            machine.SelectProduct(Enum.Parse <Product>(request.ProductName));

            var priceInEuro = (decimal)machine.GetAmountToBePaid() / 100;

            await _mediator.Publish(
                new ProductSelected(
                    machine.GetSelectedProduct().ToString(),
                    string.Format("{0:N2} Euro", priceInEuro)
                    )
                );

            return(Unit.Value);
        }