Exemplo n.º 1
0
        public void UpdateLeaveBalance(LeaveApplication lvappl, int PayrollPeriodID)
        {
            try
            {
                float LvDays = (float)lvappl.NoOfDays;
                List <LeaveQuotaYear> _lvConsumed = new List <LeaveQuotaYear>();
                Expression <Func <LeaveQuotaYear, bool> > SpecificEntries = aa => aa.EmployeeID == lvappl.EmpID && aa.FinancialYearID == lvappl.FinancialYearID && aa.LeaveTypeID == lvappl.LeaveTypeID;
                _lvConsumed = LeaveQuotaYearRepo.FindBy(SpecificEntries);
                if (_lvConsumed.Count > 0)
                {
                    if (lvappl.LeaveTypeID == 1)
                    {
                        if (lvappl.IsAccum == true)
                        {
                            _lvConsumed.FirstOrDefault().GrandRemaining = (float)(_lvConsumed.FirstOrDefault().GrandRemaining + LvDays);
                            _lvConsumed.FirstOrDefault().CFRemaining    = (float)(_lvConsumed.FirstOrDefault().CFRemaining + LvDays);
                        }
                        else
                        {
                            if (_lvConsumed.FirstOrDefault().YearlyRemaining >= 0)
                            {
                                _lvConsumed.FirstOrDefault().YearlyRemaining = (float)(_lvConsumed.FirstOrDefault().YearlyRemaining + LvDays);
                            }
                            _lvConsumed.FirstOrDefault().GrandRemaining = (float)(_lvConsumed.FirstOrDefault().GrandRemaining + LvDays);
                            if (_lvConsumed.FirstOrDefault().YearlyRemaining > _lvConsumed.FirstOrDefault().YearlyTotal)
                            {
                                _lvConsumed.FirstOrDefault().CFRemaining     = _lvConsumed.FirstOrDefault().YearlyRemaining - _lvConsumed.FirstOrDefault().YearlyTotal;
                                _lvConsumed.FirstOrDefault().YearlyRemaining = _lvConsumed.FirstOrDefault().YearlyTotal;
                            }
                        }
                    }
                    else if (lvappl.LeaveTypeID == 4)
                    {
                        if (_lvConsumed.FirstOrDefault().YearlyRemaining > 0)
                        {
                            _lvConsumed.FirstOrDefault().YearlyRemaining = (float)(_lvConsumed.FirstOrDefault().YearlyRemaining + LvDays);
                        }
                        _lvConsumed.FirstOrDefault().GrandRemaining = (float)(_lvConsumed.FirstOrDefault().GrandRemaining + LvDays);
                        // Add leave from LeaveCPLBalance
                        Expression <Func <LeaveCPLEmpBalance, bool> > SpecificEntrie3 = aa => aa.EmployeeID == lvappl.EmpID && aa.IsExpire == false;
                        List <LeaveCPLEmpBalance> dbLeaveCPLBalances = LeaveCPLEmpBalanceRepo.FindBy(SpecificEntrie3).OrderBy(aa => aa.PLeaveCPLEmpBalanceID).ToList();
                        if (dbLeaveCPLBalances.Count == 1)
                        {
                            LeaveCPLEmpBalance dbLeaveCPLBalance = dbLeaveCPLBalances.First();
                            dbLeaveCPLBalance.Used          = (float)(dbLeaveCPLBalance.Used - lvappl.NoOfDays);
                            dbLeaveCPLBalance.RemainingDays = (float)(dbLeaveCPLBalance.RemainingDays + lvappl.NoOfDays);
                            LeaveCPLEmpBalanceRepo.Edit(dbLeaveCPLBalance);
                            LeaveCPLEmpBalanceRepo.Save();
                        }
                        else if (dbLeaveCPLBalances.Count > 1)
                        {
                            double?NoOfdays = lvappl.NoOfDays;
                            foreach (var dbLeaveCPLBalance in dbLeaveCPLBalances.OrderByDescending(aa => aa.PLeaveCPLEmpBalanceID).ToList())
                            {
                                if (NoOfdays > 0 && dbLeaveCPLBalance.Used > 0)
                                {
                                    dbLeaveCPLBalance.Used          = (float)(dbLeaveCPLBalance.Used - NoOfdays);
                                    dbLeaveCPLBalance.RemainingDays = (float)(dbLeaveCPLBalance.RemainingDays + NoOfdays);
                                    if (dbLeaveCPLBalance.Used < 0)
                                    {
                                        NoOfdays = -1.0 * dbLeaveCPLBalance.Used;
                                        dbLeaveCPLBalance.Used          = 0;
                                        dbLeaveCPLBalance.RemainingDays = dbLeaveCPLBalance.TotalDays;
                                    }
                                    else
                                    {
                                        NoOfdays = 0;
                                    }
                                    LeaveCPLEmpBalanceRepo.Edit(dbLeaveCPLBalance);
                                    LeaveCPLEmpBalanceRepo.Save();
                                }
                            }
                        }
                    }
                    else
                    {
                        if (_lvConsumed.FirstOrDefault().YearlyRemaining > 0)
                        {
                            _lvConsumed.FirstOrDefault().YearlyRemaining = (float)(_lvConsumed.FirstOrDefault().YearlyRemaining + LvDays);
                        }
                        _lvConsumed.FirstOrDefault().GrandRemaining = (float)(_lvConsumed.FirstOrDefault().GrandRemaining + LvDays);
                    }
                    LeaveQuotaYearRepo.Edit(_lvConsumed.FirstOrDefault());
                    LeaveQuotaYearRepo.Save();
                    LeaveQuotaPeriod atLQp = new LeaveQuotaPeriod();
                    Expression <Func <LeaveQuotaPeriod, bool> > SpecificEntrie2 = aa => aa.EmployeeID == lvappl.EmpID && aa.PayrollPeriodID == PayrollPeriodID && aa.LeaveTypeID == lvappl.LeaveTypeID;

                    if (LeaveQuotaPeriodRepo.FindBy(SpecificEntrie2).Count() > 0)
                    {
                        atLQp = LeaveQuotaPeriodRepo.FindBy(SpecificEntrie2).First();
                    }
                    atLQp.ConsumedDays  = atLQp.ConsumedDays - lvappl.NoOfDays;
                    atLQp.RemainingDays = atLQp.StartNoOfDays - atLQp.ConsumedDays;

                    LeaveQuotaPeriodRepo.Edit(atLQp);
                    LeaveQuotaPeriodRepo.Save();
                }
            }
            catch (Exception)
            {
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Adding Balace in the leave Quota Year Table from the application
 /// </summary>
 /// <param name="_lvConsumed"></param>
 /// <param name="lvappl"></param>
 /// <param name="atLQP"></param>
 /// <returns></returns>
 public static LeaveQuotaPeriod AddBalancceMonthQuota(List <LeaveQuotaYear> _lvConsumed, LeaveApplication lvappl, LeaveQuotaPeriod atLQP)
 {
     atLQP.ConsumedDays  = atLQP.ConsumedDays + lvappl.NoOfDays;
     atLQP.RemainingDays = atLQP.StartNoOfDays - atLQP.ConsumedDays;
     return(atLQP);
 }
Exemplo n.º 3
0
        public bool BalanceLeaves(LeaveApplication lvappl, LeaveType LeaveType, int PayrollPeriodID)
        {
            bool isAccLeave = false;
            List <LeaveQuotaYear> _lvConsumedYear = new List <LeaveQuotaYear>();
            Expression <Func <LeaveQuotaYear, bool> > SpecificEntries = aa => aa.EmployeeID == lvappl.EmpID && aa.FinancialYearID == lvappl.FinancialYearID && aa.LeaveTypeID == lvappl.LeaveTypeID;

            _lvConsumedYear = LeaveQuotaYearRepo.FindBy(SpecificEntries);
            float _NoOfDays = lvappl.NoOfDays;

            if (_lvConsumedYear.Count > 0)
            {
                // For Yearly Leave Quota
                if (lvappl.LeaveTypeID == 1) // AL
                {
                    if (lvappl.IsAccum == true)
                    {
                        _lvConsumedYear.FirstOrDefault().CFRemaining    = (float)(_lvConsumedYear.FirstOrDefault().CFRemaining - _NoOfDays);
                        _lvConsumedYear.FirstOrDefault().GrandRemaining = (float)(_lvConsumedYear.FirstOrDefault().GrandRemaining - _NoOfDays);
                        if (_lvConsumedYear.FirstOrDefault().CFRemaining < 0)
                        {
                            _lvConsumedYear.FirstOrDefault().YearlyRemaining = (float)(_lvConsumedYear.FirstOrDefault().YearlyRemaining + _lvConsumedYear.FirstOrDefault().CFRemaining);
                            //_lvConsumedYear.FirstOrDefault().GrandRemaining = (float)(_lvConsumedYear.FirstOrDefault().GrandRemaining + _lvConsumedYear.FirstOrDefault().CFRemaining);
                            _lvConsumedYear.FirstOrDefault().CFRemaining = 0;
                        }
                    }
                    else
                    {
                        if (_lvConsumedYear.FirstOrDefault().YearlyRemaining > 0)
                        {
                            _lvConsumedYear.FirstOrDefault().YearlyRemaining = (float)(_lvConsumedYear.FirstOrDefault().YearlyRemaining - _NoOfDays);
                        }
                        _lvConsumedYear.FirstOrDefault().GrandRemaining = (float)(_lvConsumedYear.FirstOrDefault().GrandRemaining - _NoOfDays);
                    }
                }
                else if (lvappl.LeaveTypeID == 4) //CPL
                {
                    if (_lvConsumedYear.FirstOrDefault().YearlyRemaining > 0)
                    {
                        _lvConsumedYear.FirstOrDefault().YearlyRemaining = (float)(_lvConsumedYear.FirstOrDefault().YearlyRemaining - _NoOfDays);
                    }
                    _lvConsumedYear.FirstOrDefault().GrandRemaining = (float)(_lvConsumedYear.FirstOrDefault().GrandRemaining - _NoOfDays);
                    // Subtract leave from LeaveCPLBalance
                    Expression <Func <LeaveCPLEmpBalance, bool> > SpecificEntrie3 = aa => aa.EmployeeID == lvappl.EmpID && aa.IsExpire == false && aa.RemainingDays > 0;
                    List <LeaveCPLEmpBalance> dbLeaveCPLBalances = LeaveCPLEmpBalanceRepo.FindBy(SpecificEntrie3).OrderBy(aa => aa.PLeaveCPLEmpBalanceID).ToList();
                    if (dbLeaveCPLBalances.Count == 1)
                    {
                        LeaveCPLEmpBalance dbLeaveCPLBalance = dbLeaveCPLBalances.First();
                        dbLeaveCPLBalance.Used          = (float)(dbLeaveCPLBalance.Used + _NoOfDays);
                        dbLeaveCPLBalance.RemainingDays = (float)(dbLeaveCPLBalance.RemainingDays - _NoOfDays);
                        LeaveCPLEmpBalanceRepo.Edit(dbLeaveCPLBalance);
                        LeaveCPLEmpBalanceRepo.Save();
                    }
                    else if (dbLeaveCPLBalances.Count > 1)
                    {
                        double?NoOfdays = _NoOfDays;
                        foreach (var dbLeaveCPLBalance in dbLeaveCPLBalances)
                        {
                            if (dbLeaveCPLBalance.RemainingDays > 0 && NoOfdays > 0)
                            {
                                dbLeaveCPLBalance.Used          = (float)(dbLeaveCPLBalance.Used + NoOfdays);
                                dbLeaveCPLBalance.RemainingDays = (float)(dbLeaveCPLBalance.RemainingDays - NoOfdays);
                                if (dbLeaveCPLBalance.RemainingDays < 0)
                                {
                                    NoOfdays = -1.0 * dbLeaveCPLBalance.RemainingDays;
                                    dbLeaveCPLBalance.Used          = (float)(dbLeaveCPLBalance.Used - NoOfdays);
                                    dbLeaveCPLBalance.RemainingDays = 0;
                                }
                                else
                                {
                                    NoOfdays = 0;
                                }
                                LeaveCPLEmpBalanceRepo.Edit(dbLeaveCPLBalance);
                                LeaveCPLEmpBalanceRepo.Save();
                            }
                        }
                    }
                }
                else // All others
                {
                    if (_lvConsumedYear.FirstOrDefault().YearlyRemaining > 0)
                    {
                        _lvConsumedYear.FirstOrDefault().YearlyRemaining = (float)(_lvConsumedYear.FirstOrDefault().YearlyRemaining - _NoOfDays);
                    }
                    _lvConsumedYear.FirstOrDefault().GrandRemaining = (float)(_lvConsumedYear.FirstOrDefault().GrandRemaining - _NoOfDays);
                }
                LeaveQuotaYearRepo.Edit(_lvConsumedYear.First());
                LeaveQuotaYearRepo.Save();

                LeaveQuotaPeriod atLQp = new LeaveQuotaPeriod();
                Expression <Func <LeaveQuotaPeriod, bool> > SpecificEntrie2 = aa => aa.EmployeeID == lvappl.EmpID && aa.PayrollPeriodID == PayrollPeriodID && aa.LeaveTypeID == lvappl.LeaveTypeID;

                if (LeaveQuotaPeriodRepo.FindBy(SpecificEntrie2).Count() > 0)
                {
                    atLQp = LeaveQuotaPeriodRepo.FindBy(SpecificEntrie2).First();
                }
                else
                {
                    atLQp.EmployeeID      = lvappl.EmpID;
                    atLQp.LeaveTypeID     = lvappl.LeaveTypeID;
                    atLQp.PayrollPeriodID = PayrollPeriodID;
                    atLQp.ConsumedDays    = 0;
                    atLQp.StartNoOfDays   = _lvConsumedYear.FirstOrDefault().GrandRemaining + _NoOfDays;
                    LeaveQuotaPeriodRepo.Add(atLQp);
                    LeaveQuotaPeriodRepo.Save();
                }
                atLQp = AssistantLeave.AddBalancceMonthQuota(_lvConsumedYear, lvappl, atLQp);
                LeaveQuotaPeriodRepo.Edit(atLQp);
                // Check for Post edit
                LeaveQuotaPeriodRepo.Save();
            }
            return(isAccLeave);
        }