public bool UpdateProduct(ProductBDO product, ref string message) { ProductBDO productInDB = GetProduct(product.ProductID); // invalid product to update if (productInDB == null) { message = "cannot get product for this ID"; return false; } // a product can't be discontinued // if there are non-fulfilled orders if (product.Discontinued == true && productInDB.UnitsOnOrder > 0) { message = "cannot discontinue this product"; return false; } else { /* // TODO: call data access layer to update product message = "Product updated successfully"; return true; */ return productDAO.UpdateProduct(product, ref message); } }
public ProductBDO GetProduct(int id) { /* // TODO: connect to DB to retrieve product ProductBDO p = new ProductBDO(); p.ProductID = id; p.ProductName = "fake product name from data access layer"; p.UnitPrice = 30.00m; p.QuantityPerUnit = "fake QPU"; return p; */ ProductBDO p = null; using (SqlConnection conn = new SqlConnection(connectionString)) { using (SqlCommand cmd = new SqlCommand()) { cmd.CommandText = "select * from Products where ProductID=@id"; cmd.Parameters.AddWithValue("@id", id); cmd.Connection = conn; conn.Open(); using (SqlDataReader reader = cmd.ExecuteReader()) { if (reader.HasRows) { reader.Read(); p = new ProductBDO(); p.ProductID = id; p.ProductName = (string)reader["ProductName"]; p.QuantityPerUnit = (string)reader["QuantityPerUnit"]; p.UnitPrice = (decimal)reader["UnitPrice"]; p.UnitsInStock = (short)reader["UnitsInStock"]; p.UnitsOnOrder = (short)reader["UnitsOnOrder"]; p.ReorderLevel = (short)reader["ReorderLevel"]; p.Discontinued = (bool)reader["Discontinued"]; } } } } return p; }
public bool UpdateProduct(ProductBDO product, ref string message) { /* // TODO: connect to DB to update product message = "product updated successfully"; return true; */ message = "product updated successfully"; bool ret = true; using (SqlConnection conn = new SqlConnection(connectionString)) { string cmdStr = @"UPDATE products SET ProductName=@name, QuantityPerUnit=@unit, UnitPrice=@price, Discontinued=@discontinued WHERE ProductID=@id"; using (SqlCommand cmd = new SqlCommand(cmdStr, conn)) { cmd.Parameters.AddWithValue("@name", product.ProductName); cmd.Parameters.AddWithValue("@unit", product.QuantityPerUnit); cmd.Parameters.AddWithValue("@price", product.UnitPrice); cmd.Parameters.AddWithValue("@discontinued", product.Discontinued); cmd.Parameters.AddWithValue("@id", product.ProductID); conn.Open(); if (cmd.ExecuteNonQuery() != 1) { message = "no product is updated"; ret = false; } } } return ret; }
public bool UpdateProduct(Product product, ref string message) { bool result = true; // first check to see if it is a valid price if (product.UnitPrice <= 0) { message = "Price cannot be <= 0"; result = false; } // ProductName can't be empty else if (string.IsNullOrEmpty(product.ProductName)) { message = "Product name cannot be empty"; result = false; } // QuantityPerUnit can't be empty else if (string.IsNullOrEmpty(product.QuantityPerUnit)) { message = "Quantity cannot be empty"; result = false; } else { ProductBDO productBDO = new ProductBDO(); TranslateProductDTOToProductBDO(product, productBDO); try { result = productLogic.UpdateProduct( productBDO, ref message); } catch (Exception e) { string msg = e.Message; string reason = "UpdateProduct Exception"; throw new FaultException<ProductFault> (new ProductFault(msg), reason); } } return result; }
private void TranslateProductDTOToProductBDO( Product product, ProductBDO productBDO) { productBDO.ProductID = product.ProductID; productBDO.ProductName = product.ProductName; productBDO.QuantityPerUnit = product.QuantityPerUnit; productBDO.UnitPrice = product.UnitPrice; productBDO.Discontinued = product.Discontinued; }