public virtual ActionResult Edit(ScenarioListUtilRatings collection)
        {
            var sListUtilRating = collection.ScenariosForUtilRatingUpdate;
            var scenarioId = sListUtilRating.Select(x => x.scenarioID).FirstOrDefault();
            var scenario = scenarioRepository.GetByID((int)scenarioId);
            var projID = scenario.ProjectID;

            if (scenario == null)//projectID not found
            {
                //return to project page
            }
            try
            {
                int i = 0;
                foreach (var s in collection.ScenariosForUtilRatingUpdate)  //for each scenario
                {
                    foreach (var u in s.utilities)//for each util in that scenario
                    {   //get utility record
                        Utility utilityToUpdate = scenarioRepository.GetUtilityByID((int)u.ID);
                        //want to save valid entries even if ModelState is not valid
                        //User may not want to fill out entire form at once.
                        ModelState.AddModelErrors(u.GetRuleViolations());

                        if (u.Utility != null
                            && utilityToUpdate.Utility1 != u.Utility)
                        {   //update description
                            utilityToUpdate.Utility1 = u.Utility;
                            i++;
                        }
                    }//end foreach utility
                }//end foreach scenario
                scenarioRepository.Save();
                ModelStateHelpers.ModelMessage = i + " Record(s) Saved Successfully";

                //update complete status on steps
                var stepsRepository = new StepsRepository();
                stepsRepository.UpdateSteps(projID);

                if (ModelState.IsValid)
                {
                    var slist = populateScenatioList(projID);
                    return View(slist);
                    // Message = "Saved Successfully";
                }
                else
                {
                   //ModelState.AddModelErrors(u.GetRuleViolations());
                    //added in populate list
                    ModelState.AddModelError("ID", "Record not Added Sucessfully");
                    var slist = populateScenatioList(projID);
                    return View(slist);
                }

            }//end try
            catch
            {
                ModelState.AddModelError("ID", "Record not Added Sucessfully");

                var slist = populateScenatioList(projID);

                return View(slist);
            }
        }
        //int[] scenarios
        //for EditEntities get //top 1/6 to add util descriptions
        public ScenarioListUtilRatings populateScenatioList(long projID)
        {
            var utilModel = new UtilityRepository();
            var slist = new ScenarioListUtilRatings();
            slist.projectID = projID;
            var vmodel = ScenarioViewModel.CreateTopSixth(scenarioRepository, projID);

            slist.ScenariosForUtilRatingUpdate = new List<ScenarioForUtilRating>();
            var sToAdd = new ScenarioForUtilRating();

            //add items from view model
            foreach (var s in vmodel.ScenariosList)
            {
                slist.ScenariosForUtilRatingUpdate.Add(new ScenarioForUtilRating
                {
                    scenarioID = s.ID,
                    Name = s.Name,
                    Description = s.Description,
                    utilities = new List<utilRating>(),
                    QualityAttributeResponseTypes = utilModel.GetQualityAttributeResponseTypes().ToList(),

                });
                //order utilities according to QualityAttribute order
                var utils = s.Utilities.OrderBy(x => x.QualityAttributeResponseType.Order);
                foreach (var u in utils)
                {//Utilities to Scenario
                    //add utilities to last added scenario in ScenariosForUtilUpdate list
                    slist.ScenariosForUtilRatingUpdate[slist.ScenariosForUtilRatingUpdate.Count - 1]
                        .utilities
                        .Add(new utilRating
                        {
                            ID = u.ID,
                            Description = u.Description,
                            QualityAttributeResponseTypeType = u.QualityAttributeResponseType.Type,
                            Utility = u.Utility1,
                            Order = u.QualityAttributeResponseType.Order,
                        });

                }//end util for loop
            }//end scenario for

            return slist;
        }