public PensionRequest CalculatePensionFormula(int userStaffId, SuccessFactor successFactorData)
        {
            PensionRequest pension = new PensionRequest();

            pension.isEligible = true;
            pension.isEnrolled = true;

            if (this.IsWithdraw(userStaffId))
            {
                pension.isEligible = false;
                return(pension);
            }

            pension.VestingPercent = GetVestingPercent(successFactorData.Band, successFactorData.Tenure);
            if (pension.VestingPercent == -1)
            {
                pension.isEligible             = false;
                pension.isEnrolled             = false;
                pension.NumberOfMonthsToEnroll = GetNumberOfMonthsToEnroll(successFactorData.Tenure);
                return(pension);
            }

            pension = FillPensionObject(userStaffId, successFactorData, pension);
            return(pension);
        }
Ejemplo n.º 2
0
        //public void CreatePDR(ApplicationUser user, UserType userType, DateTime reviewPeriod)
        //{
        //    //Create PDR
        //    PDReview pdr = new PDReview();
        //    {
        //        pdr.UserTypeId = userType.ID;
        //        pdr.ApplicationUserId = user.Id;
        //        pdr.ReviewPeriod = reviewPeriod;
        //        pdr.MidYearStatus = 1;
        //        pdr.FullYearStatus = 1;
        //        pdr.LockedAt = DateTime.Now;
        //        pdr.LockedBy = user.Email;
        //    }

        //    _PDRReviewRepository.Add(pdr);
        //    SavePDR();


        //    if (pdr != null)
        //    {
        //        // Create Objective
        //        var objectivesTypes = _ObjectiveTyperepository.GetAll().Where(x => x.UserTypeId == userType.ID);

        //        foreach (var objectiveType in objectivesTypes)
        //        {
        //            var objective = new Objective();
        //            objective.ObjectiveTypeId = objectiveType.ID;
        //            objective.PDReviewId = pdr.ID;
        //            _ObjectiveRepository.Add(objective);
        //        }

        //        var successFactorTypes = _SuccessFactorTypeRepository.GetAll().Where(x => x.UserTypeId == userType.ID);

        //        foreach (var successFactorType in successFactorTypes)
        //        {
        //            var successFactor = new SuccessFactor();
        //            successFactor.SuccessFactorTypeId = successFactorType.ID;
        //            successFactor.PDReviewId = pdr.ID;
        //            _SuccessFactorRepository.Add(successFactor);
        //        }


        //        SavePDR();
        //    }

        //}

        public void CreatePDR(ApplicationUser user, ApplicationUser reviewUser, DateTime?reviewPeriod = null)
        {
            var rPeriod = reviewPeriod.HasValue ? reviewPeriod.Value : GenerateNextAvailableReviewPeriod(reviewUser);

            if (!IsThisPDRAllReadyExist(reviewUser, rPeriod))
            {
                //Create PDR
                PDReview pdr = new PDReview();
                {
                    pdr.UserTypeId        = reviewUser.UserTypeId;
                    pdr.ApplicationUserId = user.Id;
                    pdr.ReviewPeriod      = rPeriod;
                    pdr.MidYearStatus     = 1;
                    pdr.FullYearStatus    = 1;
                    pdr.ReviewerEmailId   = reviewUser.UserName;
                    pdr.ReviewerUserId    = reviewUser.Id;
                }

                _PDRReviewRepository.Add(pdr);
                SavePDR();


                if (pdr != null)
                {
                    // Create Objective
                    var objectivesTypes = _ObjectiveTyperepository.GetAll().Where(x => x.UserTypeId == reviewUser.UserTypeId);

                    foreach (var objectiveType in objectivesTypes)
                    {
                        var objective = new Objective();
                        objective.ObjectiveTypeId = objectiveType.ID;
                        objective.PDReviewId      = pdr.ID;
                        _ObjectiveRepository.Add(objective);
                    }

                    var successFactorTypes = _SuccessFactorTypeRepository.GetAll().Where(x => x.UserTypeId == reviewUser.UserTypeId);

                    foreach (var successFactorType in successFactorTypes)
                    {
                        var successFactor = new SuccessFactor();
                        successFactor.SuccessFactorTypeId = successFactorType.ID;
                        successFactor.PDReviewId          = pdr.ID;
                        _SuccessFactorRepository.Add(successFactor);
                    }

                    var develpmentCategories = _IDevelopmentCategoryRepository.GetAll().Where(x => x.UserTypeId == reviewUser.UserTypeId);

                    foreach (var develpmentCategory in develpmentCategories)
                    {
                        var pdPlan = new PersonalDevelopmentPlan();
                        pdPlan.PDReviewId = pdr.ID;
                        _IPersonalDevelopmentPlanRepository.Add(pdPlan);
                    }

                    SavePDR();
                }
            }
        }
        public PensionRequest FillPensionObject(int userStaffId, SuccessFactor successFactorData, PensionRequest pension)
        {
            // pension.Id = userStaffId;
            //  PensionRequest pension = new PensionRequest();
            MetlifeData metlifeData = metlifeDataRepository.GetMetlifeDataForUser(userStaffId);

            // metlife data
            pension.BeginingBalance         = metlifeData.OldBalance;
            pension.CurrentyearContribution = metlifeData.Contribution;
            //change the logic from constants to dynamic data
            // pension.CurrentAvailableBalance = metlifeData.NewBalance;
            pension.CurrentAvailableBalance = CalculateCurrentAvailableBalance(metlifeData.Contribution, metlifeData.OldBalance,
                                                                               metlifeData.Income, metlifeData.Withdrawals);

            pension.WithdrawalAmmount   = metlifeData.Withdrawals;
            pension.LastRoundWithdrawal = metlifeData.Withdrawals;
            pension.Income = metlifeData.Income;
            ///

            /// calculated data
            pension.VestedBalance       = ((pension.VestingPercent * pension.CurrentAvailableBalance) / 100);
            pension.MaxWithdrawalAmount = ((pension.VestedBalance * 65) / 100);
            //change the logic from constants to dynamic data
            // pension.ProratedNewContribution = ((pension.CurrentyearContribution / 12) * 8);
            pension.ProratedNewContribution = CalculateProratedContribution(metlifeData.Contribution);

            ////

            // success factor data
            pension.StaffId    = successFactorData.StaffId;
            pension.Name       = successFactorData.Name;
            pension.Band       = successFactorData.Band;
            pension.CostCenter = successFactorData.CostCenter;
            pension.Tenure     = successFactorData.Tenure;
            //var x = (DateTime.Now - successFactorData.HiringDate);
            //pension.Tenure = x.Days / 365;

            pension.SubBand    = successFactorData.SubBand;
            pension.HiringDate = successFactorData.HiringDate;
            ////

            // dummy data related to the request
            pension.RequestedById = 1;
            pension.RequestedOn   = DateTime.Now;
            pension.isActive      = true;
            pension.isApproved    = false;
            pension.ApprovedOn    = DateTime.Now;
            pension.RejectedOn    = DateTime.Now;

            return(pension);
        }
Ejemplo n.º 4
0
 public IEnumerable <ValidationResult> CanSaveSuccessFactor(SuccessFactor successFactor)
 {
     yield return(new ValidationResult("SelectedObjectiveOverallRatingId", "Make sure mid year rating is complete/save before saving overall objective."));
 }
Ejemplo n.º 5
0
 public void UpdateSuccessFactor(SuccessFactor successFactor)
 {
     _SuccessFactorRepository.Update(successFactor);
     SavePDR();
 }