Exemplo n.º 1
0
        /// <summary>
        /// Insert Sales
        /// </summary>
        /// <param name="entity"></param>
        /// <returns>Message</returns>
        public async Task <string> InsertSales(Sales entity)
        {
            var result = String.Empty;

            using (TransactionScope txScope = new TransactionScope())
            {
                try
                {
                    IEnumerable <Sales> sad = new List <Sales>();
                    sad = new SalesRepository(logger).GetAll().Result;

                    if (sad.Any(c => c.InvoiecNo.Equals(entity.InvoiecNo)))
                    {
                        throw new ArgumentNullException("Already this InvoiecNo is exist!", "");
                    }
                    var sadid = 1;
                    if (sad.Any())
                    {
                        sadid = sad.Last().Id + 1;
                    }
                    entity.Id = sadid;
                    result    = await new SalesRepository(logger).Insert(entity);
                    foreach (var data in entity.SalesDetails)
                    {
                        data.SalesId = sadid;
                        result       = await new SalesDetailsRepository(logger).Insert(data);
                        var stockdata = new StocksRepository(logger).GetAll().Result.FirstOrDefault(c => c.ProductId.Equals(data.ProductId));
                        if (stockdata != null)
                        {
                            stockdata.Quantity = decimal.Subtract(stockdata.Quantity, data.SalesQuantity);
                        }
                        result = await new StocksRepository(logger).Update(stockdata);
                    }
                }
                catch (Exception ex)
                {
                    logger.Error(ex.Message);
                    throw ex;
                }
                finally
                {
                    txScope.Complete();
                }
                return(result);
            }
        }