private bool AddNewMeasure(CreateMeasureModelView modelView)
        {
            var pmStrategicGoalId = 0;

            if (!StrategicGoalExist(modelView.StrategicGoalId, modelView.PerformanceReviewId))
            {
                var addStrategicGoal = _dbContext.PMStrategicGoal.Add(TransformStrategicGoal(modelView));
                _dbContext.SaveChanges();
                pmStrategicGoalId = addStrategicGoal.PMStrategicGoalId;
            }
            else
            {
                pmStrategicGoalId = GetReviewStrategicGoal(modelView);
            }

            if (pmStrategicGoalId == 0)
            {
                return(false);
            }
            var measure = TransformMeasure(modelView, pmStrategicGoalId);

            _dbContext.PMMeasure.Add(measure);
            _dbContext.SaveChanges();
            return(measure.PMMeasureId > 0 ? true : false);
        }
 private PMStrategicGoal TransformStrategicGoal(CreateMeasureModelView modelView)
 {
     return(new PMStrategicGoal()
     {
         StrategicGoalId = modelView.StrategicGoalId,
         PMReviewId = modelView.PerformanceReviewId,
         StrategicGoalWeight = 0.00M,
         StatusId = 1,
         CreatedBy = modelView.Username,
         DateCreated = DateTime.Now,
         DateModified = DateTime.Now,
         ModifiedBy = modelView.Username
     });
 }
        private int GetReviewStrategicGoal(CreateMeasureModelView modelView)
        {
            var goal = (_dbContext.PMStrategicGoal.FirstOrDefault(x => x.PMReviewId == modelView.PerformanceReviewId &&
                                                                  x.StrategicGoalId == modelView.StrategicGoalId &&
                                                                  x.DateDeleted == null));

            if (goal != null)
            {
                return(goal.PMStrategicGoalId);
            }
            var addStrategicGoal = _dbContext.PMStrategicGoal.Add(TransformStrategicGoal(modelView));

            _dbContext.SaveChanges();
            return(addStrategicGoal.PMStrategicGoalId);
        }
 private PMeasure TransformMeasure(CreateMeasureModelView modelView, int reviewStrategicGoalId)
 {
     return(new PMeasure()
     {
         PMStrategicGoalId = reviewStrategicGoalId,
         MeasureName = modelView.MeasureName,
         MeasureWeight = modelView.MeasureWeight,
         PMObjective = modelView.ObjectiveName,
         SubjectMatterExpert = "Employee",
         StatusId = 1,
         CreatedBy = modelView.Username,
         DateCreated = DateTime.Now,
         DateModified = DateTime.Now,
         ModifiedBy = modelView.Username,
         AuditScore = 1,
         LineManagerScore = 1,
         EmployeeScore = 1,
         TermId = 1
     });
 }
        public ActionResult AddPerformanceReviewContents(int?performanceReviewId, FormModeOption?formProcessingMode, long?
                                                         measureId, bool?processingStatus, string message)
        {
            if ((performanceReviewId == null) || (formProcessingMode == null))
            {
                return(RedirectToAction("ManageReview", new { username = User.Identity.Name }));
            }

            var modelView = new CreateMeasureModelView();

            modelView.Username            = User.Identity.Name;
            modelView.ManagerUsername     = ManagerNetworkUsername((int)performanceReviewId);
            modelView.CurrentReviewStatus = GetCurrentReviewStatus((int)performanceReviewId);
            modelView.PerformanceReviewId = (int)performanceReviewId;
            modelView.StrategicGoals      = GetReviewStrategicGoals();
            modelView.FormProcessingMode  = (FormModeOption)formProcessingMode;

            if ((formProcessingMode == FormModeOption.EDIT) || (formProcessingMode == FormModeOption.DELETE))
            {
                var measure = _dbContext.PMMeasure.Find((long)measureId);
                if (measure != null)
                {
                    modelView.MeasureId       = measure.PMMeasureId;
                    modelView.MeasureName     = measure.MeasureName;
                    modelView.MeasureWeight   = measure.MeasureWeight;
                    modelView.StrategicGoalId = measure.PMStrategicGoalId;
                    modelView.ObjectiveName   = measure.PMObjective;
                }
            }

            if (!string.IsNullOrEmpty(message))
            {
                modelView.ProcessingStatusMessage = message;
                modelView.ProcessingStatus        = (bool)processingStatus;
            }
            //REFRESH
            modelView.CreatedMeasures = GetReviewCapturedMeasures((int)performanceReviewId);
            modelView.StrategicGoals  = GetReviewStrategicGoals();

            return(View(modelView));
        }
        public ActionResult AddPerformanceReviewContents(CreateMeasureModelView modelView)
        {
            if (ModelState.IsValid)
            {
                switch (modelView.FormProcessingMode)
                {
                case FormModeOption.CREATE: {
                    if (AddNewMeasure(modelView))
                    {
                        var successOne = string.Format("Successfully added measure: {0}.", modelView.MeasureName);
                        return(RedirectToAction("AddPerformanceReviewContents",
                                                new {
                                performanceReviewId = modelView.PerformanceReviewId, formProcessingMode = FormModeOption.CREATE,
                                processingStatus = true, message = successOne
                            }));
                    }
                    else
                    {
                        modelView.ProcessingStatus        = false;
                        modelView.ProcessingStatusMessage = string.Format("An error occurred while trying to save measure: {0}. " +
                                                                          "Please try again and if the error persist contact System Support.", modelView.MeasureName);
                    }
                    break;
                }

                case FormModeOption.EDIT:
                    var measure = _dbContext.PMMeasure.Find(modelView.MeasureId);
                    measure.MeasureName       = modelView.MeasureName;
                    measure.MeasureWeight     = modelView.MeasureWeight;
                    measure.PMStrategicGoalId = GetReviewStrategicGoal(modelView);
                    measure.PMObjective       = modelView.ObjectiveName;
                    measure.ModifiedBy        = modelView.Username;
                    measure.DateModified      = DateTime.Now;
                    _dbContext.SaveChanges();
                    var success = string.Format("Successfully updated measure: {0}.", measure.MeasureName);
                    return(RedirectToAction("AddPerformanceReviewContents",
                                            new {
                        performanceReviewId = modelView.PerformanceReviewId, formProcessingMode = FormModeOption.CREATE,
                        processingStatus = true, message = success
                    }));

                case FormModeOption.DELETE:
                    var deleteMeasure = _dbContext.PMMeasure.Find(modelView.MeasureId);
                    deleteMeasure.DeletedBy    = modelView.Username;
                    deleteMeasure.DateDeleted  = DateTime.Now;
                    deleteMeasure.StatusId     = 4; //Deleted
                    deleteMeasure.ModifiedBy   = modelView.Username;
                    deleteMeasure.DateModified = DateTime.Now;
                    _dbContext.SaveChanges();
                    var successTwo = string.Format("Successfully Deleted measure: {0}.", deleteMeasure.MeasureName);
                    return(RedirectToAction("AddPerformanceReviewContents",
                                            new {
                        performanceReviewId = modelView.PerformanceReviewId, formProcessingMode = FormModeOption.CREATE,
                        processingStatus = true, message = successTwo
                    }));
                }
            }
            modelView.CreatedMeasures = GetReviewCapturedMeasures(modelView.PerformanceReviewId);
            //Model contains errors
            return(View(modelView));
        }