public ActionResult Products()
        {
            ProductHouseModel model = new ProductHouseModel();
            List<ProductToProductLineModel> phModel = new List<ProductToProductLineModel>();
            using (var mm = new MaterialsManager())
            {
                List<Product> products = mm.ActiveProducts().ToList();
                List<ProductLine> partsOfHouse = mm.ActiveProductLines().ToList();
                List<ProductToLine> prodHouses = mm.AllProductToProductLine().ToList();

                model.Products = products.AsEnumerable();
                model.PartsOfHouse = partsOfHouse.AsEnumerable();

                // create the list based on our product and part list
                foreach (var partOfHouse in partsOfHouse)
                {
                    foreach (var product in products)
                    {
                        phModel.Add(new ProductToProductLineModel
                        {
                            IsActive = prodHouses.Any(ph => ph.ProductID == product.ID && ph.ProductLineID == partOfHouse.ID) && prodHouses.First(ph => ph.ProductID == product.ID && ph.ProductLineID == partOfHouse.ID).IsActive,
                            ProductID = product.ID,
                            ProductLineID = partOfHouse.ID,
                            ProductName = product.Name,
                            ProductLineName = partOfHouse.Name
                        });
                    }
                }
                model.ProductPartHouse = phModel.AsEnumerable();
            }
            return View("Products", model);
        }
 public ActionResult AvailableProducts(int materialID)
 {
     List<Product> products;
     List<MaterialToProduct> materialProducts;
     using (var mm = new MaterialsManager())
     {
         products = mm.ActiveProducts().OrderBy(p => p.Name).ToList();
         materialProducts = mm.ByMaterialID(materialID).ToList();
     }
     ViewBag.Products = products;
     ViewBag.MaterialToProducts = materialProducts;
     return View("AvailableProducts");
 }
        public ActionResult Products()
        {
            List<Product> products;

            using (var mm = new MaterialsManager())
            {
                products = mm.ActiveProducts().ToList();
            }

            ViewBag.Products = products;
            return View("ProductList");
        }
        public ActionResult MaterialProductsGrid(int? supplierID)
        {
            using (var um = new UserManager())
            {
                var currentUser = um.ByUsername(User.Identity.Name);
                if (currentUser.SupplierID != null)
                {
                    supplierID = currentUser.SupplierID.GetValueOrDefault();
                }
            }

            var model = new MaterialProductGridModel();
            var materialToProductModels = new List<MaterialToProductModel>();

            using (var mm = new MaterialsManager())
            {
                var products = mm.ActiveProducts().ToList();
                var materials = mm.BySupplier(supplierID.GetValueOrDefault()).ToList();
                var materialToProducts = mm.ByManufacturerID(supplierID.GetValueOrDefault()).ToList();

                model.Products = products.AsEnumerable();
                model.Materials = materials.AsEnumerable();

                // create the list based on our product and material list
                foreach (var material in materials)
                {
                    foreach (var product in products)
                    {
                        materialToProductModels.Add(new MaterialToProductModel
                        {
                            IsActive = materialToProducts.Any(mp => mp.ProductID == product.ID && mp.MaterialID == material.ID),
                            ProductID = product.ID,
                            MaterialID = material.ID,
                            ProductName = product.Name,
                            MaterialName = material.Name,
                            MaterialToProductID = materialToProducts.Any(mp => mp.ProductID == product.ID && mp.MaterialID == material.ID) ? materialToProducts.First(mp => mp.ProductID == product.ID && mp.MaterialID == material.ID).ID : 0
                        });
                    }
                }
                model.MaterialProducts = materialToProductModels.AsEnumerable();
            }

            return View("MaterialProductsGrid", model);
        }
        public ActionResult Edit(int id)
        {
            Quote quote;
            using (var qm = new QuoteManager())
            {
                quote = qm.Single(id);
                ViewBag.Quote = quote;
            }

            // determine the supplier and materials available
            List<CompanyToSupplier> companySuppliers;
            using (var sm = new SupplierManager())
            {
                companySuppliers = sm.ByCompanyID(quote.CompanyID.GetValueOrDefault()).ToList();
            }
            List<Product> products;
            using (var mm = new MaterialsManager())
            {
                List<Material> allMaterials = new List<Material>();
                foreach (var companyToSupplier in companySuppliers)
                {
                    allMaterials.AddRange(mm.BySupplier(companyToSupplier.SupplierID));
                }
                ViewBag.AvailableMaterials = allMaterials;

                products = mm.ActiveProducts(quote.CompanyID.GetValueOrDefault()).ToList();

                var productLines = mm.ActiveProductLines().ToList();
                ViewBag.ProductLines = productLines.AsEnumerable();
                ViewBag.ProductToProductLine = mm.AllProductToProductLine().ToList();
                ViewBag.MaterialToProducts = mm.AllMaterialToProducts().ToList();
            }

            ViewBag.Products = products;

            return View("Edit");
        }