//DispalyAll Configurations for a system
        public ActionResult DisplayAll(int id)
        {
            var sys = db.Lsystem.FirstOrDefault(x => x.LsystemID == id);
            var config = db.ConfigurationCollection.Where(x => x.LsystemID == id).ToList();

            ViewBag.LsystemID = id;
            ViewBag.LsystemFamilyID = sys.LsystemFamilyID;

            var model = new  List<ConfigAllList>();
            foreach(var con in config)
            {
                var modelitem = new ConfigAllList { ConfigurationName = con.CollectionName, OpOvList = new List<OptionOptionValList>(), ConfigID=con.ConfigurationCollectionID };
                foreach(var op in sys.Options.OrderBy(x=>x.OptionName))
                {
                    var opov = new OptionOptionValList { OptionName = op.OptionName, Optionvalue = new List<string>() };
                    foreach (var ov in db.Config_OptionVal.Where(x => x.ConfigurationCollectionID == con.ConfigurationCollectionID && x.OptionID == op.OptionID))
                        opov.Optionvalue.Add(db.OptionValue.FirstOrDefault(x => x.OptionValueID == ov.OptionValueID).OptionVal);
                    if (opov.Optionvalue.Count == 0)
                        opov.Optionvalue.Add("No Value");
                    modelitem.OpOvList.Add(opov);
                }
                foreach(var op in db.Option.Where(x=>x.LsystemID==1038).OrderBy(x=>x.OptionName))
                {
                    var opov = new OptionOptionValList { OptionName = op.OptionName, Optionvalue = new List<string>() };
                    foreach (var ov in db.Config_OptionVal.Where(x => x.ConfigurationCollectionID == con.ConfigurationCollectionID && x.OptionID == op.OptionID))
                        opov.Optionvalue.Add(db.OptionValue.FirstOrDefault(x => x.OptionValueID == ov.OptionValueID).OptionVal);
                    if (opov.Optionvalue.Count == 0)
                        opov.Optionvalue.Add("No Value");
                    modelitem.OpOvList.Add(opov);
                }
                model.Add(modelitem);
            }
            ViewBag.Option = db.Lsystem.FirstOrDefault(x => x.LsystemID == id).Options.OrderBy(x=>x.OptionName).ToList();
            ViewBag.Independent = db.Lsystem.FirstOrDefault(x => x.LsystemID == 1038).Options.OrderBy(x=>x.OptionName).ToList();
            return View(model);
        }
        //View complete details of a particular Configuration      
        public ActionResult ListConfigurations(int id)
        {
            try
            {
                
                var config = db.ConfigurationCollection.FirstOrDefault(x=>x.ConfigurationCollectionID==id);
                ViewBag.LsystemName = db.Lsystem.FirstOrDefault(x => x.LsystemID == config.LsystemID).LsystemName;
                ViewBag.FamilyName = db.Lsystem.FirstOrDefault(x => x.LsystemID == config.LsystemID).LsystemFamily.FamilyName;
                var model = new ConfigAllList { ConfigID = id, ConfigurationName = config.CollectionName, OpOvList = new List<OptionOptionValList>() };
                foreach(var op in db.Lsystem.FirstOrDefault(x=>x.LsystemID==config.LsystemID).Options.OrderBy(x=>x.OptionName))
                {
                    var opov = new OptionOptionValList { OptionName = op.OptionName, Optionvalue = new List<string>() };
                    foreach(var ov in db.Config_OptionVal.Where(x=>x.ConfigurationCollectionID==id&&x.OptionID==op.OptionID))
                        opov.Optionvalue.Add(db.OptionValue.FirstOrDefault(x => x.OptionValueID == ov.OptionValueID).OptionVal);
                    if (opov.Optionvalue.Count == 0)
                        opov.Optionvalue.Add("No Value");
                    model.OpOvList.Add(opov);
                }
                foreach (var op in db.Option.Where(x => x.LsystemID == 1038).OrderBy(x => x.OptionName))
                {
                    var opov = new OptionOptionValList { OptionName = op.OptionName, Optionvalue = new List<string>() };
                    foreach (var ov in db.Config_OptionVal.Where(x => x.ConfigurationCollectionID == config.ConfigurationCollectionID && x.OptionID == op.OptionID))
                        opov.Optionvalue.Add(db.OptionValue.FirstOrDefault(x => x.OptionValueID == ov.OptionValueID).OptionVal);
                    if (opov.Optionvalue.Count == 0)
                        opov.Optionvalue.Add("No Value");
                    model.OpOvList.Add(opov);
                }

                ViewBag.Option = db.Lsystem.FirstOrDefault(x => x.LsystemID == config.LsystemID).Options.OrderBy(x => x.OptionName).ToList();
                ViewBag.Independent = db.Lsystem.FirstOrDefault(x => x.LsystemID == 1038).Options.OrderBy(x => x.OptionName).ToList();
                return View(model);
            }
            catch (Exception e)
            {
                ViewBag.Error = e.Message;
                return View("Error");
            }
        }