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());
        }
Example #2
0
        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"));
            }
        }