public async Task <CommandResult> Handle(BuySnackCommand request, CancellationToken cancellationToken) { var snackMachine = await _snackMachineRepository .GetAsync(request.SnackMachineId); if (snackMachine == null) { return(CommandResult.GetFailed("Snack Machine instance is not found.")); } var moneyInTran = new Money(request.OneCentCount, request.TenCentCount, request.QuarterCount, request.OneDollarCount, request.FiveDollarCount); snackMachine.InsertMoney(moneyInTran); if (snackMachine.CanBuySnak(request.SlotPosition)) { snackMachine.BuySnack(request.SlotPosition); await _snackMachineRepository.UnitOfWork.SaveEntitiesAsync(); } else { return(CommandResult.GetFailed("Cannot buy snack.")); } return(CommandResult.GetSuccess()); }
public async Task <CommandResult> Handle(AddSnackMachineSlotCommand request, CancellationToken cancellationToken) { var snackMachine = await _snackMachineRepository .GetAsync(request.SnackMachineId); if (snackMachine == null) { return(CommandResult.GetFailed("Snack Machine instance is not found.")); } if (snackMachine.CanAddSlot()) { snackMachine.AddSlot(request.Position, request.ItemsQuantity, request.ItemPrice, request.SnackTypeId); await _snackMachineRepository.UnitOfWork.SaveEntitiesAsync(); return(CommandResult.GetSuccess()); } else { return(CommandResult.GetFailed("No available place for slot")); } }