private async Task <Basket> CreateBasketForUser(string userId)
        {
            //improvement to make the ID of the entity to be auto increment
            Basket basket = new Basket()
            {
                UserId = userId
            };
            await _basketRepository.AddAsync(basket);

            return(basket);
        }
Beispiel #2
0
        public async Task <ItemDto> Handle(AddItemCommand command, CancellationToken cancellationToken)
        {
            var itemFromCommand = _mapper.Map <Item>(command);

            // Just for demo to show that Dapr Store working!
            //var oldItem = await _daprClient.GetStateAsync<Item>("default", itemFromCommand.ItemId.ToString(), cancellationToken: cancellationToken);

            var basket = await _basketRepository.GetBasketSingeOrDefault(command.Username, cancellationToken);

            var isBasketNotExits = (basket == null);

            if (isBasketNotExits)
            {
                basket = new Domain.Basket {
                    BasketId = Guid.NewGuid(), Username = command.Username, State = State.Unlocked
                };
                await _basketRepository.AddAsync(basket, cancellationToken);

                await _basketRepository.SaveChangesAsync(cancellationToken);
            }

            var itemFromDb = await _itemRepository.GetSingleOrDefault(itemFromCommand.ItemId, cancellationToken);

            itemFromCommand.BasketId = basket.BasketId;
            itemFromCommand.Basket   = basket;

            if (itemFromDb == null)
            {
                await _itemRepository.AddAsync(itemFromCommand, cancellationToken);

                await _itemRepository.SaveChangesAsync(cancellationToken);
            }

            //await _basketItemNotificationHandler.Handle(new ItemCreatedMessage(), cancellationToken);

            //// Lock
            //await _daprClient.SaveStateAsync(
            //    "default",
            //    State.Locked.ToString(), ConsistencyMode.Strong,new StateOptions(),
            //    cancellationToken: cancellationToken);

            return(_mapper.Map <ItemDto>(itemFromCommand));
        }
Beispiel #3
0
 public async Task AddBasketAsync(Basket basket)
 {
     await _basketRepository.AddAsync(basket);
 }
Beispiel #4
0
        public async Task <Basket> AddAsync(Basket basket)
        {
            var addedBasket = await _basketRepository.AddAsync(basket);

            return(addedBasket);
        }
Beispiel #5
0
        public async Task HandleAsync(ProductChangedEvent _event, ICorrelationContext context)
        {
            await _basketRepository.AddAsync(null);

            //Console.WriteLine($"{_event}");
        }