Exemple #1
0
        /// <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();
            }
        }
Exemple #2
0
        /// <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();
            }
        }