public ActionResult AddOther(RatingViewModel post)
        {
            CoreRating ratingToAdd;
            if (post.Rating.OtherCoreRatings != null)
            {
                int addindex = post.Rating.OtherCoreRatings.Count - 1;
                ratingToAdd = post.Rating.OtherCoreRatings[addindex];
            }
            else ratingToAdd = null;

            if (ratingToAdd != null && ratingToAdd.RatingID == 0 && ValidateCoreRating(ratingToAdd))
            {
                CompleteRating rating = new CompleteRating()
                {
                    OtherCoreRatings = new List<CoreRating>()
                };
                rating.OtherCoreRatings.Add(ratingToAdd);
                db.saveTaskRating(rating, post.VersID);
            }

            RatingViewModel model = db.getOtherRatings(post.VersID);
            model.OtherVisible = true;
            return PartialView("Other", model);
        }
 public ActionResult Header(RatingViewModel post)
 {
     return RedirectToAction("Rate", new {VersID = post.VersID});
 }
        public ActionResult Rate(RatingViewModel post)
        {
            if (ModelState.IsValid)
            {
                db.saveCompleteRating(post);
                ViewBag.SuccessMessage = "Rating Saved Succesfully";
            }

            RatingViewModel model = db.getRatingModel(post.VersID);
            return View(model);
        }
 public PartialViewResult Reflection(int VersID)
 {
     RatingViewModel model = new RatingViewModel() {TaskVersion = db.getTaskVersion(VersID) };
     return PartialView(model);
 }
 //function for saving the entire ratings page
 public void saveCompleteRating(RatingViewModel model)
 {
     saveTaskRating(model.Rating, model.VersID);
     if (model.TaskVersion.ReadingLogEntry != null) EditReading(model.VersID, model.TaskVersion.ReadingLogEntry.NumEntries);
     else if (model.TaskVersion.InternReflection != null) EditReflection(model.VersID, model.TaskVersion.InternReflection.NumHrs);
     db.TaskVersions.Find(model.VersID).RatingStatus = "Complete";
     db.SaveChanges();
 }
        //functions below fetch data for rating partials
        public RatingViewModel getTaskRatings(int versID)
        {
            RatingViewModel model = new RatingViewModel()
            {
                Rating = getTaskRating(versID),
                VersID = versID
            };

            return model;
        }
        public RatingViewModel getRatingModel(int versID)
        {
            RatingViewModel model = new RatingViewModel()
            {
                Rating = getTaskRating(versID),
                VersionDrop = getVersionDrop(versID),
                CoreDrop = getCoreDrop(versID),
                TaskVersion = getTaskVersion(versID),
                VersID = versID
            };

            CompleteRating other = getOtherRating(versID);
            RatingViewModel impact = getImpactRatings(versID);
            model.Rating.OtherCoreRatings = other.OtherCoreRatings;

            return model;
        }
        public RatingViewModel getOtherRatings(int versID)
        {
            RatingViewModel model = new RatingViewModel()
            {
                Rating = getOtherRating(versID),
                VersID = versID,
                CoreDrop = getCoreDrop(versID)
            };

            return model;
        }
        public RatingViewModel getImpactRatings(int versID)
        {
            RatingViewModel model = new RatingViewModel()
            {
                VersID = versID,
                Rating = new CompleteRating()
                {
                    ImpactRating = db.ImpactTypeRatings.FirstOrDefault(r => r.TaskRating.VersID == versID)
                }
            };

            return model;
        }