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);
 }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
 public StockSnapshotCreatedEvent(StockSnapshot stockSnapshot)
 {
     StockSnapshot = stockSnapshot;
 }
コード例 #7
0
 public AvailableStockCountChangedEvent(StockSnapshot stockSnapshot)
 {
     StockSnapshot = stockSnapshot;
 }
コード例 #8
0
 public async Task AddAsync(StockSnapshot stockSnapshot, CancellationToken cancellationToken)
 {
     await _appDbContext.AddAsync(stockSnapshot, cancellationToken);
 }