public void CreateMaterialTest()
        {
            Material material = new Material();

            material.CreatedOn = DateTime.Now;
            material.Measurement = Measurement.SquareFeet;
            material.ModifiedOn = DateTime.Now;
            material.Name = "Wood Siding";
            material.SubName = "Light Blue";

            using (var mm = new MaterialsManager())
            {
                material = mm.CreateMaterial(material);
                Assert.IsTrue(material.ID > 0);
            }
        }
        //[HttpPost]
        public ActionResult Clone(int id)
        {
            Material newMaterial = new Material();
            using (var mm = new MaterialsManager())
            {
                Material mat = mm.SingleMaterial(id);

                // use reflection to populate the new Material

                // reflect to get instances of the entity preoprties
                var editProperties =
                    from p in mat.GetType().GetProperties()
                    select p;

                // copy the values
                PropertyInfo[] editProps = editProperties.ToArray();
                foreach (PropertyInfo propertyInfo in editProps)
                {
                    propertyInfo.SetValue(newMaterial, propertyInfo.GetValue(mat, null), null);
                }

                // set specifics
                newMaterial.Name = mat.Name + " - Clone";
                if (newMaterial.Name.Length > 100)
                {
                    newMaterial.Name = newMaterial.Name.Substring(0, 100);
                }
                newMaterial.CreatedOn = DateTime.Now;
                newMaterial.ModifiedOn = DateTime.Now;
                newMaterial.ID = 0;

                newMaterial = mm.CreateMaterial(newMaterial);
            }
            return RedirectToAction("EditMaterial", new {id = newMaterial.ID});
        }
 public ActionResult CreateMaterial(MaterialModel model)
 {
     using (var mm = new MaterialsManager())
     {
         // TODO: Refactor into an extention method that uses generics
         var material = new Material
             {
                 Name = model.Name,
                 SubName = model.SubName,
                 Measurement = model.Measurement,
                 CreatedOn = model.CreatedOn,
                 ModifiedOn = model.ModifiedOn,
                 UnitCost = model.UnitCost,
                 IsActive = model.IsActive,
                 ManufacturerID = model.ManufacturerID,
                 Height = model.Height,
                 Width = model.Width,
                 Thickness = model.Thickness,
                 Finish = model.Finish,
                 Overlap = model.Overlap,
                 SKU = model.SKU
             };
         material = mm.CreateMaterial(material);
     }
     return RedirectToAction("Materials");
 }