public async Task <OperationResponse <T> > Add(T oEntity) { OperationResponse <T> Op = new OperationResponse <T>(); try { if (oEntity == null) { throw new ArgumentNullException("oEntity"); } await _dbContext.Set <T>().AddAsync(oEntity); int rowsEffected = _dbContext.SaveChanges(); Op.Data = rowsEffected > 0 ? oEntity : default(T); Op.HasErrors = rowsEffected <= 0; Op.Message = rowsEffected > 0 ? null : "error InInsert in DB"; } catch (Exception ex) { Op.HasErrors = true; Op.Message = string.Format("{0} InnerException {1}", ex.Message, ex.InnerException.Message); } return(Op); }
//public async Task<OperationResponse<IEnumerable<userCartItem>>> checkoutUserOrder(decimal delivertClientID) //{ // OperationResponse<IEnumerable<userCartItem>> or = new OperationResponse<IEnumerable<userCartItem>>(); // ///get all user cart items // ///and insert master and details data in POSCurrentDailyTransferHeaders, POSCurrentDailyTransferDetails // /// clear user cart from db // /// // try { // #region Try Body // context.ChangeTracker.AutoDetectChangesEnabled = false; // var StockNoItems = new List<userCartItem>(); // var userCartProducts = await context.userCartItem.FromSql($"GetCurrentDeliveryClientCertProducst {delivertClientID}").ToListAsync(); // // var cartResult = await _cartService.getAllCartProductsByUserID(delivertClientID); // if (userCartProducts == null) // throw new Exception("No Items In cart "); // #region check Cart Item Quantity in Stock // foreach (var item in userCartProducts) // { // var ItemStockQuantity = context.Items.FirstOrDefault(i => i.ItemId == item.ItemId && i.FkCategoryId == item.fkCategoryId).MaxStockQuantity; // if ((item.quantity > ItemStockQuantity) || (ItemStockQuantity == 0) || (ItemStockQuantity == null)) // { // StockNoItems.Add(item); // } // } // if (StockNoItems.Count > 0) // { // or.HasErrors = false; // or.Data = StockNoItems; // } // #endregion // else // { // #region Add Order // // add order // var counter = 0; // decimal id = getNextHeaderID(); // //System.Guid guid = System.Guid.NewGuid(); // //String id = guid.ToString(); // var PoscurrentDailyTransHeader = // new PoscurrentDailyTransHeader() // { // Total = (decimal?)(await _cartService.getTotalPrice(delivertClientID)).Data, // FkTransTypeId = 1, // FkBrId = 1, // ClientId = delivertClientID, // InsDate = DateTime.Now, // TransDate = DateTimeUtility.getFormatFromDateTime(DateTime.Now), // FkClientTypeId = 1,// عميل // CashierName = "", // FkInvoiceStatusId = 4// old//,, // ,PoscurrentDailyTransDetails = userCartProducts.Select( // item => new PoscurrentDailyTransDetails() // { // FkBrId = 1, // DetailId = _currentDailyTransfterDetailsService.GetAll().Data.Max(d => d.HeaderId) + ++counter, // HeaderId = id, // InsDate = DateTime.Now, // CustPrice = (decimal)item.CustomerPrice, // SalePrice = (decimal)item.ItemCost, // FkItemBarcodeId = (decimal)item.fk_itemBarCodeID, // FktransTypeId = 0, // ItemId = (decimal)item.ItemId, // ItemName = item.ItemName, // PackageName = item.PackageName, // Barcode = item.BarCode, // TransDate = DateTimeUtility.getFormatFromDateTime(DateTime.Now), // }).ToList() // }; // context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT POSCurrentDailyTransHeader ON"); // var addedItem = context.PoscurrentDailyTransHeader.Add(PoscurrentDailyTransHeader); // var rowsEffected = context.SaveChanges(); // #endregion // #region update Stock Quantity // if (rowsEffected > 0) // { // foreach (var item in userCartProducts) // { // foreach (var StockItem in context.Items) // { // StockItem.MaxStockQuantity = StockItem.MaxStockQuantity - item.quantity; // } // } // } // #endregion // #region Delete Cart // var InsertedRows = 0; // if (userCartProducts.Count > 0) // { // var CartId = userCartProducts.FirstOrDefault().Id; // var res = context.CartProducts.Find(CartId); // context.CartProducts.Remove(res); // InsertedRows = context.SaveChanges(); // } // #endregion // #region save changes // //context.ChangeTracker.AutoDetectChangesEnabled = true; // //var InsertedRows = context.SaveChanges(); // if (InsertedRows > 0) // { // or.Data = userCartProducts; // or.HasErrors = false; // or.Message = "Order Added Successfully"; // or.StatusCode = "200"; // } // else // { // or.Data = null; // or.HasErrors = true; // or.Message = "Order Added Already"; // } // #endregion // #endregion // } // return or; // } // catch (Exception ex) // { // or.HasErrors = true; // or.Data = null; // or.Message = ex.Message; // } // return or; //} public async Task <OperationResponse <IEnumerable <CategoryItemWithQnty> > > checkoutUserOrder(decimal delivertClientID, string Notes) { OperationResponse <IEnumerable <CategoryItemWithQnty> > or = new OperationResponse <IEnumerable <CategoryItemWithQnty> >(); ///get all user cart items ///and insert master and details data in POSCurrentDailyTransferHeaders, POSCurrentDailyTransferDetails /// clear user cart from db /// try { #region Try Body //context.ChangeTracker.AutoDetectChangesEnabled = false; var StockNoItems = new List <CategoryItemWithQnty>(); var userCartProducts = await context.OrderProducts.FromSql($"GetCurrentDeliveryClientCertProducts {delivertClientID}").ToListAsync(); // var cartResult = await _cartService.getAllCartProductsByUserID(delivertClientID); if (userCartProducts == null) { throw new Exception("No Items In cart "); } #region check Cart Item Quantity in Stock foreach (CategoryItemWithQnty item in userCartProducts) { var ItemStockQuantity = context.Items.FirstOrDefault(i => i.ItemId == item.ItemId && i.FkCategoryId == item.fkCategoryId).OnHandQty; if ((item.quantity > ItemStockQuantity) || (ItemStockQuantity == 0) || (ItemStockQuantity == null)) { item.ItemStockQuantity = ItemStockQuantity; StockNoItems.Add(item); } } if (StockNoItems.Count > 0) { or.HasErrors = true; or.Data = StockNoItems; or.StatusCode = "200"; or.Message = "items quantity greater than stock "; } else if (userCartProducts.Count == 0) { or.HasErrors = true; or.Data = null; or.Message = "Order Added Already"; } #endregion else { #region Add Order // add order var counter = 0; decimal id = getNextHeaderID(); DeliveryClient clientObj = context.DeliveryClient.Where(a => a.DelClientId == delivertClientID).FirstOrDefault(); var addedHeader = new PoscurrentDailyTransHeader() { Total = (decimal?)(await _cartService.getTotalPrice(delivertClientID)).Data, FkTransTypeId = 1, FkBrId = 1, ClientId = delivertClientID, InsDate = DateTime.Now, TransDate = DateTimeUtility.getFormatFromDateTime(DateTime.Now), FkClientTypeId = 1, // عميل CashierName = "", Notes = Notes, DeliveryAmount = context.Area.Where(a => a.AreaId == clientObj.FkAreaId).FirstOrDefault().DeliveryAmount, FkInvoiceStatusId = 4, // old//, PoscurrentDailyTransDetails = userCartProducts.Select( item => new PoscurrentDailyTransDetails() { FkBrId = 1, DetailId = _currentDailyTransfterDetailsService.GetAll().Data.Max(d => d.HeaderId) + ++counter, HeaderId = 0, InsDate = DateTime.Now, CustPrice = (decimal)item.CustomerPrice, SalePrice = (decimal)item.ItemCost, FkItemBarcodeId = (decimal)item.ItemBarCodeID, FktransTypeId = 0, ItemId = (decimal)item.ItemId, ItemName = item.ItemName, PackageName = item.PackageName, PackageId = item.ItemPackageID, Barcode = item.BarCode, Qty = item.quantity, TransDate = DateTimeUtility.getFormatFromDateTime(DateTime.Now), }).ToList() }; var addedItem = context.PoscurrentDailyTransHeader.Add(addedHeader); #endregion #region update Stock Quantity foreach (var item in userCartProducts) { foreach (var StockItem in context.Items) { StockItem.OnHandQty = StockItem.OnHandQty - item.quantity; } } #endregion #region Delete Cart //var CartId = userCartProducts.Where(a=>a.) var res = context.CartProducts.Where(a => a.FkDeliveryClientId == delivertClientID).ToList(); context.CartProducts.RemoveRange(res); //context.SaveChanges(); #endregion #region save changes context.ChangeTracker.AutoDetectChangesEnabled = true; var InsertedRows = context.SaveChanges(); if (InsertedRows > 0) { or.Data = userCartProducts; or.HasErrors = false; or.StatusCode = "200"; or.Message = "Order Has Done"; } else { or.HasErrors = true; or.Message = "Order Already Added"; } #endregion #endregion } return(or); } catch (Exception ex) { or.HasErrors = true; or.Data = null; or.Message = ex.Message; } return(or); }