public ActionResult CreateReviewDocument(PerformanceReviewModelView createReviewPeriodModel)
        {
            if (ModelState.IsValid)
            {
                if (!PerformanceReviewPeriodExist(createReviewPeriodModel))
                {
                    var pmReviewPeriod = TransformPMReview(createReviewPeriodModel);
                    _dbContext.PMReview.Add(pmReviewPeriod);
                    _dbContext.SaveChanges();
                    //Set PMReviewProgressStatus Content Creation
                    var setProgressStatus = CreatePMReviewProgressStatus(1, pmReviewPeriod.PMReviewId);

                    var reviewName = createReviewPeriodModel.ReviewPeriods.FirstOrDefault(x => string.Compare(x.ValueText,
                                                                                                              createReviewPeriodModel.ReviewPeriodId.ToString()) == 0).DisplayText;
                    createReviewPeriodModel.ReviewPeriodId          = 0;
                    createReviewPeriodModel.ProcessingStatus        = true;
                    createReviewPeriodModel.ProcessingStatusMessage = string.Format("Successfully created Performance Review Period {0}", reviewName);
                }
                else
                {
                    createReviewPeriodModel.ProcessingStatus        = false;
                    createReviewPeriodModel.ProcessingStatusMessage = "Performance Review already exist, please complete review or create " +
                                                                      "a different Peformance Review Period.";
                }
            }

            return(View(createReviewPeriodModel));
        }
        public ActionResult CreateReviewDocument()
        {
            var userName = User.Identity.Name;
            var employee = GetEmployee(userName);

            if (employee != null)
            {
                var createReviewPeriodModel = new PerformanceReviewModelView()
                {
                    ReportingStructureId = employee.ReviewReportingStructureId,
                    ReviewPeriods        = ReviewPeriods()
                };
                return(View(createReviewPeriodModel));
            }
            else
            {
                var createReviewPeriodModel = new PerformanceReviewModelView()
                {
                    ProcessingStatus        = false,
                    ProcessingStatusMessage = "Your Line Manager is not yet added, please ask System Administrator to add your Line Manager.",
                    ReviewPeriods           = ReviewPeriods(),
                    ReportingStructureId    = -1
                };
                return(View(createReviewPeriodModel));
            }
        }
        private bool PerformanceReviewPeriodExist(PerformanceReviewModelView createReviewPeriodModel)
        {
            var result = _dbContext.PMReview.FirstOrDefault(x => x.DateDeleted == null &&
                                                            x.PMReviewPeriodId == createReviewPeriodModel.ReviewPeriodId &&
                                                            x.ReviewReportingStructureId == createReviewPeriodModel.ReportingStructureId);

            return(result == null ? false : true);
        }
        private PMReview TransformPMReview(PerformanceReviewModelView createReviewPeriodModel)
        {
            var employee = GetEmployee(User.Identity.Name);

            return(new PMReview()
            {
                ReviewReportingStructureId = createReviewPeriodModel.ReportingStructureId,
                PMReviewPeriodId = createReviewPeriodModel.ReviewPeriodId,
                DateCreated = DateTime.Now,
                CreatedBy = string.Format("{0} {1}", employee.Owner.Name, employee.Owner.Surname),
                StatusId = 1,
                DateModified = DateTime.Now,
                ModifiedBy = string.Format("{0} {1}", employee.Owner.Name, employee.Owner.Surname)
            });
        }