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); }
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)); }
public async Task AddBasketAsync(Basket basket) { await _basketRepository.AddAsync(basket); }
public async Task <Basket> AddAsync(Basket basket) { var addedBasket = await _basketRepository.AddAsync(basket); return(addedBasket); }
public async Task HandleAsync(ProductChangedEvent _event, ICorrelationContext context) { await _basketRepository.AddAsync(null); //Console.WriteLine($"{_event}"); }