public async Task Handle(StockSnapshotCreatedEvent notification, CancellationToken cancellationToken) { StockSnapshot stockSnapshot = notification.StockSnapshot; var stockSnapshotCreatedIntegrationEvent = new StockSnapshotCreatedIntegrationEvent(stockSnapshot.Id, stockSnapshot.ProductId, stockSnapshot.CreatedOn); await _outboxClient.AddAsync(stockSnapshotCreatedIntegrationEvent, cancellationToken); }
public async Task Handle(StockInitializedEvent notification, CancellationToken cancellationToken) { StockAction stockAction = notification.StockAction; StockSnapshot stockSnapshot = StockSnapshot.Create(stockAction.ProductId, stockAction.Count, stockAction.Id, stockAction.CreatedOn, _snapshotUniqueChecker, cancellationToken); IStockSnapshotRepository snapshotRepository = _stockDbContext.StockSnapshotRepository; await snapshotRepository.AddAsync(stockSnapshot, cancellationToken); }
public async Task Handle(StockIncreasedEvent notification, CancellationToken cancellationToken) { StockAction stockAction = notification.StockAction; IStockSnapshotRepository stockSnapshotRepository = _stockDbContext.StockSnapshotRepository; StockSnapshot stockSnapshot = await stockSnapshotRepository.GetByProductIdAsync(stockAction.ProductId, cancellationToken); stockSnapshot.IncreaseStock(stockAction.Count, stockAction.Id, stockAction.CreatedOn); }
public async Task Handle(AvailableStockCountChangedEvent notification, CancellationToken cancellationToken) { StockSnapshot stockSnapshot = notification.StockSnapshot; var availableStockCountChangedIntegrationEvent = new AvailableStockCountChangedIntegrationEvent(stockSnapshot.ProductId, stockSnapshot.AvailableStock, stockSnapshot.LastStockActionDate, stockSnapshot.StockActionId); await _outboxClient.AddAsync(availableStockCountChangedIntegrationEvent, cancellationToken); }
public async Task <bool> Handle(ResetStockCommand request, CancellationToken cancellationToken) { IStockSnapshotRepository stockSnapshotRepository = _stockDbContext.StockSnapshotRepository; StockSnapshot stockSnapshot = await stockSnapshotRepository.GetByProductIdAsync(request.ProductId, cancellationToken); var stockActionModel = StockAction.Create(request.ProductId, StockActionTypes.RemoveFromStock, stockSnapshot.AvailableStock, request.CorrelationId, _stockActionUniqueChecker, cancellationToken); IStockActionRepository stockActionRepository = _stockDbContext.StockActionRepository; await stockActionRepository.AddAsync(stockActionModel, cancellationToken); return(true); }
public StockSnapshotCreatedEvent(StockSnapshot stockSnapshot) { StockSnapshot = stockSnapshot; }
public AvailableStockCountChangedEvent(StockSnapshot stockSnapshot) { StockSnapshot = stockSnapshot; }
public async Task AddAsync(StockSnapshot stockSnapshot, CancellationToken cancellationToken) { await _appDbContext.AddAsync(stockSnapshot, cancellationToken); }