public async Task Handle(SkuStockCreated msg, IMessageMetadata metadata = null) { using (var context = _contextFactory()) { var skuStock = new SkuStock { Id = msg.SourceId, AvailableQuantity = 0, Created = msg.CreatedTime, CustomersReservationsTotal = 0, LastModified = msg.CreatedTime, ReservedQuantity = 0, SkuId = msg.SkuId, TotalQuantity = 0 }; var history = CreateHistory(skuStock, StockOperation.Created, msg.Quantity); skuStock.TotalQuantity = msg.Quantity; skuStock.AvailableQuantity = msg.Quantity; FillNewQuantities(history, skuStock); context.SkuStocks.Add(skuStock); context.StockHistory.Add(history); await context.SaveChangesAsync(); } }
private SkuStockHistory CreateHistory(SkuStock skuStock, StockOperation stockOperation, int quantity) { return(new SkuStockHistory { OldAvailableQuantity = skuStock.AvailableQuantity, OldTotalQuantity = skuStock.TotalQuantity, OldReservedQuantity = skuStock.ReservedQuantity, Operation = stockOperation, Quanity = quantity, StockId = skuStock.Id, Number = _sequenceProvider.GetNext(SkuHistorySequenceName) }); }
private void FillNewQuantities(SkuStockHistory history, SkuStock skuStock) { history.NewAvailableQuantity = skuStock.AvailableQuantity; history.NewTotalQuantity = skuStock.TotalQuantity; history.NewReservedQuantity = skuStock.ReservedQuantity; }