public ActionResult GetProductDetail(string productCode) { var product = ProductManagement.GetProduct(productCode); var productDetail = new EditProductDTO { Id = product.Id, Name = product.Name, CategoryId = product.CategoryId, Code = product.Code, Price = Convert.ToDecimal(product.Price), IsCreating = false, Hidden = product.Hidden }; return Json(new { productDetail }, JsonRequestBehavior.AllowGet); }
public static void CreateProduct(EditProductDTO dto) { SqlTransaction transaction = null; try { var con = new SqlConnection(GetConnection()); con.Open(); transaction = con.BeginTransaction(); var cmd = new SqlCommand { Transaction = transaction, Connection = con, CommandType = CommandType.Text, CommandText = @"INSERT INTO [finplanweb].[dbo].[products] ([productCode] ,[description] ,[addedDate] ,[modifiedDate] ,[price] ,[categoriesID] ,[hidden])" + "VALUES (@code, @name, @addedDate, @modifiedDate, @price, @categoryID,0)" }; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@code", dto.Code); cmd.Parameters.AddWithValue("@name", dto.Name); cmd.Parameters.AddWithValue("@addedDate", DateTime.Now); cmd.Parameters.AddWithValue("@modifiedDate", DBNull.Value); cmd.Parameters.AddWithValue("@price", dto.Price); cmd.Parameters.AddWithValue("@categoryID", dto.CategoryId); cmd.ExecuteNonQuery(); transaction.Commit(); if (con.State != ConnectionState.Closed) return; con.Close(); } catch (SqlException ex) { transaction.Rollback(); var msg = "Insert errors"; msg += ex.Message; throw new Exception(msg); } }
public ActionResult CreateUpdateProduct(EditProductDTO dto) { if (dto == null) { throw new NullReferenceException("DTO cannot be null"); } var validationIds = new List<string>(); var validationMessage = Validate(dto, out validationIds); if (!validationMessage.Any()) { if (dto.IsCreating) { ProductManagement.CreateProduct(dto); } else { ProductManagement.UpdateProduct(dto); } var products = ProductManagement.GetProductsIncludeHidden(); var categories = CategoryManagement.GetAllCategory(); var totalProductPage = (int)Math.Ceiling(((double)products.Count() / (double)pageSize)); return Json(new { products = ApplyPaging(products, 1).Select(x => ConvertToProductDTO(x, categories)), passed = !validationMessage.Any(), validationIds, validationMessage = string.Join("</br>", validationMessage), totalProductPage }); } return Json(new { passed = !validationMessage.Any(), validationIds, validationMessage = string.Join("</br>", validationMessage) }); }
public List<string> Validate(EditProductDTO product, out List<string> invalidIds) { var validationMessage = new List<string>(); var validationId = new List<string>(); if (product.IsCreating && string.IsNullOrEmpty(product.Code)) { validationMessage.Add("Code is empty."); validationId.Add("Code"); } if (product.CategoryId == default(int)) { validationMessage.Add("Category is empty."); validationId.Add("Category"); } if (string.IsNullOrEmpty(product.Name)) { validationMessage.Add("Name is empty."); validationId.Add("Name"); } if (product.Price == default(decimal)) { validationMessage.Add("Price is empty."); validationId.Add("Price"); } invalidIds = validationId; return validationMessage; }
public static void UpdateProduct(EditProductDTO product) { using (var connection = new SqlConnection(GetConnection())) { const string sql = @"UPDATE [dbo].[products] SET Description=@d, modifiedDate=@md, price=@p, categoriesID=@cid, hidden=@hide WHERE [productId] = @pid"; connection.Open(); var cmd = new SqlCommand(sql, connection); cmd.Parameters.Add(new SqlParameter("@d", SqlDbType.NVarChar)).Value = product.Name; cmd.Parameters.Add(new SqlParameter("@md", SqlDbType.DateTime)).Value = DateTime.Now; cmd.Parameters.Add(new SqlParameter("@p", SqlDbType.Money)).Value = product.Price; cmd.Parameters.Add(new SqlParameter("@cid", SqlDbType.Int)).Value = product.CategoryId; cmd.Parameters.Add(new SqlParameter("@hide", SqlDbType.Bit)).Value = product.Hidden; cmd.Parameters.Add(new SqlParameter("@pid", SqlDbType.Int)).Value = product.Id; cmd.ExecuteNonQuery(); } }