/// <summary> /// Gets the product stock. /// </summary> /// <param name="stockInfo">The product stock info. Contains info required to get product stock value. /// By default it's product code.</param> /// <returns>The product stock.</returns> public virtual DomainModel.Products.ProductStock GetStock(ProductStockInfo stockInfo) { ReaderWriterLockSlim readerWriterLock = GetLock(stockInfo); readerWriterLock.EnterReadLock(); try { DomainModel.Products.ProductStock stock = this.productRepository.Get <DomainModel.Products.ProductStock>(stockInfo.ProductCode); return(stock); } finally { readerWriterLock.ExitReadLock(); } }
/// <summary> /// Updates the specified stock info. /// </summary> /// <param name="stockInfo">The stock info.</param> /// <param name="expression">The expression.</param> public void Update(ProductStockInfo stockInfo, Expression <Func <long, long> > expression) { ReaderWriterLockSlim readerWriterLock = GetLock(stockInfo); readerWriterLock.EnterWriteLock(); try { DomainModel.Products.ProductStock stock = this.productRepository.Get <DomainModel.Products.ProductStock>(stockInfo.ProductCode); Func <long, long> func = expression.Compile(); stock.Stock = func(stock.Stock); this.productRepository.Update(stock); } finally { readerWriterLock.ExitWriteLock(); } }