Beispiel #1
0
        public IActionResult Preferences(VacationAccrualViewModel vm)
        {
            string userId = _userManager.GetUserId(User);

            if (_userRepository.Exists(userId))
            {
                UserDataModel userData = _userRepository.Get(userId);
                vm.StartDate  = DecodeStartDateEvenWW(userData.Start_Date_Even_Ww);
                vm.Accrual    = userData.Accrual;
                vm.MaxBalance = userData.Max_Balance;
                vm.Period     = userData.Period;
                vm.DaysOff    = userData.Take_Days_Off % 1 == 0 ?
                                Convert.ToInt32(userData.Take_Days_Off).ToString() :
                                userData.Take_Days_Off.ToString();
                vm.ReceiveEmailReminder = userData.Email_Alert_Enabled;
                vm.ReceiveDaysBefore    = userData.Email_Alert_Days_Before;

                List <PayPeriod> vacationData = _vacationRepository.Get(
                    userId,
                    DateTime.Parse(vm.StartDate).AddDays(-14),
                    1
                    );

                vm.Balance = Convert.ToDecimal(vacationData.Single().Balance);
            }
            return(View(vm));
        }
Beispiel #2
0
        public IActionResult Index(VacationAccrualViewModel vm)
        {
            if (_signInManager.IsSignedIn(User))
            {
                string userId = _userManager.GetUserId(User);
                if (_userRepository.Exists(userId))
                {
                    UserDataModel userData = _userRepository.Get(userId);
                    vm.StartDate  = DecodeStartDateEvenWW(userData.Start_Date_Even_Ww);
                    vm.Accrual    = userData.Accrual;
                    vm.MaxBalance = userData.Max_Balance;
                    vm.Period     = userData.Period + 1; // to account for the previous period extra row
                    vm.DaysOff    = userData.Take_Days_Off % 1 == 0 ?
                                    Convert.ToInt32(userData.Take_Days_Off).ToString() :
                                    userData.Take_Days_Off.ToString();

                    vm.PeriodList = _vacationRepository.Get(
                        userId,
                        DateTime.Parse(vm.StartDate).AddDays(-14),
                        vm.Period
                        );

                    if (vm.PeriodList.Count < vm.Period)
                    {
                        string  startDate = DateTime.Parse(vm.StartDate).AddDays(14 * (vm.PeriodList.Count - 1)).ToString();
                        decimal balance   = Convert.ToDecimal(vm.PeriodList.Last().Balance);
                        decimal daysOff   = Convert.ToDecimal(vm.DaysOff);
                        vm.AppendPeriodList(vm.PeriodList, startDate, vm.MaxBalance, vm.Period - vm.PeriodList.Count, vm.Accrual, balance, daysOff, true);
                    }
                    return(View(vm));
                }
                TempData["FirstTimeLogin"] = true;
                return(RedirectToAction("Preferences"));
            }
            return(View(vm));
        }
Beispiel #3
0
        public IActionResult SaveForecastData(VacationAccrualViewModel vm)
        {
            try
            {
                string   userId = _userManager.GetUserId(User);
                DateTime startDate, endDate;
                decimal  accrual, take, balance, forfeit;

                List <PayPeriod> vacationData = _vacationRepository.Get(
                    userId,
                    DateTime.Parse(vm.PeriodList.First().Period
                                   .Split(new string[] { " - " }, StringSplitOptions.None)[0].Trim()),
                    99 // more than the max period
                    );

                if (vm.PeriodList.Count != vacationData.Count)
                {
                    _vacationRepository.Delete(userId);
                }

                for (int i = 0; i < vm.PeriodList.Count; i++)
                {
                    startDate = DateTime.Parse(vm.PeriodList[i].Period
                                               .Split(new string[] { " - " }, StringSplitOptions.None)[0].Trim());
                    endDate = DateTime.Parse(vm.PeriodList[i].Period
                                             .Split(new string[] { " - " }, StringSplitOptions.None)[1].Trim());
                    accrual = vm.PeriodList[i].Accrual;
                    take    = vm.PeriodList[i].Take;
                    balance = Convert.ToDecimal(vm.PeriodList[i].Balance);
                    forfeit = Convert.ToDecimal(vm.PeriodList[i].Forfeit);

                    if (vm.PeriodList.Count != vacationData.Count)
                    {
                        _vacationRepository.Insert(
                            userId,
                            startDate,
                            endDate,
                            accrual,
                            take,
                            balance,
                            forfeit
                            );
                    }
                    else
                    {
                        _vacationRepository.Update(
                            userId,
                            startDate,
                            endDate,
                            take,
                            balance,
                            forfeit
                            );
                    }
                }
                return(Content("Saved!"));
            }
            catch (Exception e)
            {
                _logger.LogError(e.Message);
                return(Content(e.Message));
            }
        }
Beispiel #4
0
 public IActionResult Submit(VacationAccrualViewModel vm)
 {
     vm.AppendPeriodList(new List <PayPeriod>(), vm.StartDate, vm.MaxBalance, vm.Period, vm.Accrual, vm.Balance);
     return(View("Index", vm));
 }
Beispiel #5
0
        public IActionResult SavePreferences(VacationAccrualViewModel vm)
        {
            try
            {
                string userId = _userManager.GetUserId(User);
                if (!_userRepository.Exists(userId))
                {
                    _userRepository.Insert(
                        userId,
                        EncodeStartDateEvenWW(vm.StartDate),
                        vm.Accrual,
                        vm.MaxBalance,
                        vm.Period,
                        Convert.ToDecimal(vm.DaysOff),
                        vm.ReceiveEmailReminder,
                        vm.ReceiveDaysBefore
                        );

                    _vacationRepository.Insert(
                        userId,
                        DateTime.Parse(vm.StartDate).AddDays(-14),
                        DateTime.Parse(vm.StartDate).AddDays(-1),
                        vm.Accrual,
                        0,
                        vm.Balance,
                        0
                        );
                }
                else
                {
                    UserDataModel userData = _userRepository.Get(userId);

                    List <PayPeriod> vacationData = _vacationRepository.Get(
                        userId,
                        DateTime.Parse(vm.StartDate).AddDays(-14),
                        1
                        );

                    _userRepository.Update(
                        userId,
                        EncodeStartDateEvenWW(vm.StartDate),
                        vm.Accrual,
                        vm.MaxBalance,
                        vm.Period,
                        Convert.ToDecimal(vm.DaysOff),
                        vm.ReceiveEmailReminder,
                        vm.ReceiveDaysBefore
                        );

                    if (userData.Start_Date_Even_Ww != EncodeStartDateEvenWW(vm.StartDate) ||
                        userData.Accrual != vm.Accrual ||
                        userData.Max_Balance != vm.MaxBalance ||
                        userData.Take_Days_Off != Convert.ToDecimal(vm.DaysOff) ||
                        Convert.ToDecimal(vacationData.Single().Balance) != vm.Balance)
                    {
                        _vacationRepository.Delete(userId);

                        _vacationRepository.Insert(
                            userId,
                            DateTime.Parse(vm.StartDate).AddDays(-14),
                            DateTime.Parse(vm.StartDate).AddDays(-1),
                            vm.Accrual,
                            0,
                            vm.Balance,
                            0
                            );
                    }
                }
                return(Content("Saved!"));
            }
            catch (Exception e)
            {
                _logger.LogError(e.Message);
                return(Content(e.Message));
            }
        }