/// <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); } }