public ActionResult ScoreReview(ScoreReviewViewModel modelView)
 {
     if (ModelState.IsValid)
     {
         if (modelView.Score <= modelView.MaximumScore)
         {
             if (UpdateMeasureScore(modelView))
             {
                 modelView.ProcessingStatus        = true;
                 modelView.ProcessingStatusMessage = string.Format("Successfully updated measure: {0}  score to {1}", modelView.MeasureName, modelView.Score);
             }
             else
             {
                 modelView.ProcessingStatus        = false;
                 modelView.ProcessingStatusMessage = string.Format("Failed to update measure: {0}  score!!! Please try again", modelView.MeasureName);
             }
         }
         else
         {
             modelView.ProcessingStatus        = false;
             modelView.ProcessingStatusMessage = string.Format("The Maximum allowed score is {0}", modelView.MaximumScore);
         }
     }
     modelView.ReviewContents = GetReviewMeasures(modelView.PerformanceReviewId);
     //REFRESH
     return(View(modelView));
 }
        public ActionResult ScoreReview(int?performanceReviewId, long?measureId, bool?processingStatus, string message)
        {
            if (performanceReviewId == null)
            {
                return(RedirectToAction("ManageReview", new { username = User.Identity.Name }));
            }
            if (measureId == null)
            {
                measureId = _dbContext.PMMeasure.FirstOrDefault(x => x.StrategeicGoal.PMReviewId == performanceReviewId &&
                                                                x.DateDeleted == null).PMMeasureId;
            }
            var measure = _dbContext.PMMeasure.Include(x => x.StrategeicGoal).Include(x => x.StrategeicGoal.StrategicGoal)
                          .FirstOrDefault(x => x.PMMeasureId == (long)measureId && x.DateDeleted == null);

            var modelView = new ScoreReviewViewModel()
            {
                Username            = User.Identity.Name,
                ManagerUsername     = ManagerNetworkUsername((int)performanceReviewId),
                CurrentReviewStatus = GetCurrentReviewStatus((int)performanceReviewId),
                PerformanceReviewId = (int)performanceReviewId,
                MeasureId           = measure.PMMeasureId,
                MeasureName         = measure.MeasureName,
                MeasureWeight       = measure.MeasureWeight,
                StrategicGoal       = measure.StrategeicGoal.StrategicGoal.StrategicGoalName,
                Objective           = measure.PMObjective,
                IsLineManager       = IsLineManager(User.Identity.Name, (int)performanceReviewId),
                MaximumScore        = GetMaximumRating(),
                ReviewContents      = GetReviewMeasures((int)performanceReviewId)
            };

            modelView.Score           = measure.EmployeeScore;
            modelView.CaptureComments = measure.EmployeeComments;
            if (modelView.IsLineManager)
            {
                modelView.Score           = measure.LineManagerScore;
                modelView.CaptureComments = measure.LineManagerComments;
            }

            if (!string.IsNullOrEmpty(message))
            {
                modelView.ProcessingStatusMessage = message;
                modelView.ProcessingStatus        = (bool)processingStatus;
            }

            return(View(modelView));
        }
        private bool UpdateMeasureScore(ScoreReviewViewModel modelView)
        {
            var measure = _dbContext.PMMeasure.Find(modelView.MeasureId);

            //Manager Scoring
            if (modelView.IsLineManager)
            {
                measure.LineManagerScore    = modelView.Score;
                measure.LineManagerComments = modelView.CaptureComments;
                measure.ModifiedBy          = modelView.ManagerUsername;
                measure.DateModified        = DateTime.Now;
            }
            else
            {
                measure.EmployeeScore    = modelView.Score;
                measure.EmployeeComments = modelView.CaptureComments;
                measure.ModifiedBy       = modelView.Username;
                measure.DateModified     = DateTime.Now;
            }
            _dbContext.SaveChanges();
            return(true);
        }