public bool UpdateProduct(Product product, ref string message)
 {
     try
     {
         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
         {
             // TODO: call business logic layer to update product
             message = "Product updated successfully";
             result = true;
         }
         return result;
     }
     catch (Exception ex)
     {
         string msg = ex.Message;
         string reason = "UpdateProduct Exception";
         throw new FaultException<ProductFault>(new ProductFault(msg), reason);
     }
 }
        public Product GetProduct(int id)
        {
            try
            {
                // TODO: call business logic layer to retrieve product
                Product product = new Product();
                product.ProductID = id;
                product.ProductName =
                "fake product name from service layer";
                product.UnitPrice = 10.0m;
                product.QuantityPerUnit = "fake QPU";
                return product;
                //throw new FaultException<ProductFault>(new ProductFault("fake"), "fake exception");
            }
            catch (Exception ex)
            {
                string msg = ex.Message;
                string reason = "GetProduct Exception";
                throw new FaultException<ProductFault>(new ProductFault(msg), reason);
            }


        }