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)); }
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) )); }
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); }
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); }