/// <summary> /// Adds the product. /// </summary> /// <param name="model">The model.</param> /// <param name="productImages">The product images.</param> /// <param name="addProductColorModel">The product colors.</param> /// <param name="productCategoryDetails">The product category details.</param> /// <returns></returns> /// <exception cref="NotImplementedException"></exception> public long AddProduct(Product model, List <ProductCategoryDetail> productCategoryDetails, string hostPath, string[] ProductSizeValues) { using (var transaction = context.Database.BeginTransaction()) { try { var productModel = context.Product.Where(x => x.Name == model.Name && x.IsDelete == false).FirstOrDefault(); if (productModel == null) { context.Product.Add(model); context.SaveChanges(); long ProductId = model.ProductId; if (ProductId > 0) { #region ProductSizeValues if (ProductSizeValues != null && ProductSizeValues.Length > 0) { foreach (var item in ProductSizeValues) { if (!string.IsNullOrWhiteSpace(item)) { ProductSizeDetail productSizeDetail = new ProductSizeDetail(); productSizeDetail.ProductFK = ProductId; productSizeDetail.Name = item; context.ProductSizeDetail.Add(productSizeDetail); context.SaveChanges(); if (productSizeDetail.ProductSizeDetailId <= 0) { transaction.Rollback(); return(0); } } } } #endregion #region Product Category if (productCategoryDetails != null && productCategoryDetails.Count > 0) { foreach (var item in productCategoryDetails) { if (item.ProductCategoryTypeFK > 0) { item.ProductFK = ProductId; context.ProductCategoryDetail.Add(item); context.SaveChanges(); if (item.ProductCategoryDetailId <= 0) { transaction.Rollback(); return(0); } } } } #endregion transaction.Commit(); return(ProductId); } else { transaction.Rollback(); return(0); } } else { transaction.Rollback(); return(ReturnCode.AlreadyExist.GetHashCode()); } } catch (Exception ex) { transaction.Rollback(); LogHelper.ExceptionLog(ex.Message + " ::::: " + ex.StackTrace); throw ex; } } }
/// <summary> /// Updates the product. /// </summary> /// <param name="model">The model.</param> /// <param name="productColors">The product colors.</param> /// <param name="productCategoryDetails">The product category details.</param> /// <returns></returns> public long UpdateProduct(Product model, List <ProductCategoryDetail> productCategoryDetails, string hostPath, string[] ProductSizeValues) { using (var transaction = context.Database.BeginTransaction()) { try { var productModelCheck = context.Product.Where(x => x.Name == model.Name && x.IsDelete == false && x.ProductId != model.ProductId).FirstOrDefault(); if (productModelCheck == null) { var productModel = context.Product.Where(x => x.ProductId == model.ProductId).FirstOrDefault(); if (productModel != null) { productModel.ModifiedOn = model.ModifiedOn; productModel.UpdatedBy = model.UpdatedBy; productModel.Name = model.Name; productModel.ProductDescription = model.ProductDescription; productModel.Price = model.Price; productModel.SizeFK = model.SizeFK; context.SaveChanges(); long ProductId = model.ProductId; if (ProductId > 0) { #region ProductSizeValues var sizeCount = context.ProductSizeDetail.Where(x => x.ProductFK == ProductId).ToList(); if (sizeCount != null) { foreach (var item in sizeCount) { context.ProductSizeDetail.Remove(item); context.SaveChanges(); } } if (ProductSizeValues != null && ProductSizeValues.Length > 0) { foreach (var item in ProductSizeValues) { if (!string.IsNullOrWhiteSpace(item)) { ProductSizeDetail productSizeDetail = new ProductSizeDetail(); productSizeDetail.Name = item; productSizeDetail.ProductFK = ProductId; context.ProductSizeDetail.Add(productSizeDetail); context.SaveChanges(); if (productSizeDetail.ProductSizeDetailId <= 0) { transaction.Rollback(); return(0); } } } } #endregion #region Product Category var categoryCount = context.ProductCategoryDetail.Where(x => x.ProductFK == ProductId).ToList(); if (categoryCount != null) { foreach (var item in categoryCount) { context.ProductCategoryDetail.Remove(item); context.SaveChanges(); } } if (productCategoryDetails != null && productCategoryDetails.Count > 0) { foreach (var item in productCategoryDetails) { if (item.ProductCategoryTypeFK > 0) { item.ProductFK = ProductId; context.ProductCategoryDetail.Add(item); context.SaveChanges(); if (item.ProductCategoryDetailId <= 0) { transaction.Rollback(); return(0); } } } } #endregion transaction.Commit(); return(ProductId); } else { transaction.Rollback(); return(0); } } else { transaction.Rollback(); return(0); } } else { transaction.Rollback(); return(ReturnCode.AlreadyExist.GetHashCode()); } } catch (Exception ex) { LogHelper.ExceptionLog(ex.Message + " ::::: " + ex.StackTrace); transaction.Rollback(); throw ex; } } }