示例#1
0
 public void Remove(SubPeriod subperiod)
 {
     if (Context.Entry(subperiod).State == EntityState.Detached)
     {
         context.SubPeriods.Attach(subperiod);
     }
     context.SubPeriods.Remove(subperiod);
 }
示例#2
0
        private void UpdatePeriod(LeaveBalanceGridViewModel model, bool closePeriod)
        {
            if (model.NewSubPeriodId != null) //Open sub period
            {
                SubPeriod        subPeriod      = _hrUnitOfWork.JobRepository.GetSubPeriod(model.NewSubPeriodId);
                List <SubPeriod> prevSubPeriods = _hrUnitOfWork.Repository <SubPeriod>()
                                                  .Where(s => s.PeriodId == subPeriod.PeriodId && s.Status != 2 && s.StartDate <= subPeriod.StartDate).ToList();
                foreach (var item in prevSubPeriods)
                {
                    item.Status       = 2; // تم استحقاقها
                    item.ModifiedUser = UserName;
                    item.ModifiedTime = DateTime.Now;
                    _hrUnitOfWork.JobRepository.Attach(item);
                    _hrUnitOfWork.JobRepository.Entry(item).State = EntityState.Modified;
                }
            }

            if (model.PeriodId != model.NewPeriodId) //open new Period
            {
                Period period = _hrUnitOfWork.LeaveRepository.GetLperiod(model.NewPeriodId);
                period.Status       = 1; //Open
                period.ModifiedUser = UserName;
                period.ModifiedTime = DateTime.Now;
                _hrUnitOfWork.JobRepository.Attach(period);
                _hrUnitOfWork.JobRepository.Entry(period).State = EntityState.Modified;
            }

            if (closePeriod) //Closing Period, prev periods and sub periods if colsePeriod && All PostAction success
            {
                Period period = _hrUnitOfWork.LeaveRepository.GetLperiod(model.PeriodId);

                //close prev periods
                List <Period> prevPeriods = _hrUnitOfWork.Repository <Period>()
                                            .Where(p => p.CalendarId == period.CalendarId && p.Status != 2 && p.StartDate <= period.StartDate).ToList();
                foreach (Period item in prevPeriods)
                {
                    item.Status       = 2; //close
                    item.ModifiedUser = UserName;
                    item.ModifiedTime = DateTime.Now;
                    _hrUnitOfWork.JobRepository.Attach(item);
                    _hrUnitOfWork.JobRepository.Entry(item).State = EntityState.Modified;
                }

                List <int>       Ids        = prevPeriods.Select(p => p.Id).ToList();
                List <SubPeriod> subPeriods = _hrUnitOfWork.Repository <SubPeriod>().Where(a => Ids.Contains(a.PeriodId) && a.Status != 2).ToList();
                foreach (SubPeriod item in subPeriods)
                {
                    item.Status       = 2;
                    item.ModifiedUser = UserName;
                    item.ModifiedTime = DateTime.Now;
                    _hrUnitOfWork.JobRepository.Attach(item);
                    _hrUnitOfWork.JobRepository.Entry(item).State = EntityState.Modified;
                }
            }
        }
        public string GenerateAccuralPeriods(PeriodName calendar, string UserName, string culture)
        {
            int subPeriodCount = calendar.SubPeriodCount;
            var PeriodNo       = context.Periods.Where(a => a.Name == calendar.Name).DefaultIfEmpty().Max(a => a == null ? 0 : a.PeriodNo);

            if (calendar.SingleYear == true && calendar.PeriodLength == 1)
            {
                var ListOfFiscalYear = context.FiscalYears.ToList();

                if (ListOfFiscalYear.Count == 0)
                {
                    return(MsgUtils.Instance.Trls(culture, "FiscalYearnotfound"));
                }
                else
                {
                    for (int f = 0; f < ListOfFiscalYear.Count; f++)
                    {
                        var Fiscalperiod = new Period
                        {
                            Name        = ListOfFiscalYear[f].Name,
                            StartDate   = ListOfFiscalYear[f].StartDate,
                            EndDate     = ListOfFiscalYear[f].EndDate == null ? ListOfFiscalYear[f].StartDate.AddYears(1).AddDays(-1) : (DateTime)ListOfFiscalYear[f].EndDate,
                            PeriodNo    = f + 1,
                            Calendar    = calendar,
                            Status      = 1,
                            CreatedUser = UserName,
                            CreatedTime = DateTime.Now,
                            YearId      = ListOfFiscalYear[f].Id
                        };

                        var subPeriodNo1 = context.SubPeriods.Where(a => a.StartDate == Fiscalperiod.StartDate).DefaultIfEmpty().Max(a => a == null ? 0 : a.SubPeriodNo);
                        var enddate1     = Fiscalperiod.EndDate.AddDays(1);
                        context.Periods.Add(Fiscalperiod);
                        if (subPeriodCount > 0)
                        {
                            DateTime startTime = ListOfFiscalYear[f].StartDate;
                            DateTime endTime   = Fiscalperiod.StartDate;
                            int      num       = enddate1.Year - Fiscalperiod.StartDate.Year;
                            int      Addmonth  = num * 12 / subPeriodCount;

                            for (int i = 1; i <= subPeriodCount; i++)
                            {
                                if (subPeriodCount == 1 || subPeriodCount == 2 || subPeriodCount == 3 || subPeriodCount == 4 || subPeriodCount == 6 || subPeriodCount == 12)
                                {
                                    startTime = Fiscalperiod.StartDate.AddMonths(Addmonth * (i - 1));
                                    endTime   = Fiscalperiod.StartDate.AddMonths(Addmonth * i).AddDays(-1);
                                }
                                else if (subPeriodCount == 26)
                                {
                                    startTime = Fiscalperiod.StartDate.AddDays(14 * (i - 1));
                                    endTime   = Fiscalperiod.StartDate.AddDays(14 * i).AddDays(-1);
                                }
                                else if (subPeriodCount == 52)
                                {
                                    startTime = Fiscalperiod.StartDate.AddDays(7 * (i - 1));
                                    endTime   = Fiscalperiod.StartDate.AddDays(7 * i).AddDays(-1);
                                }
                                else if (subPeriodCount == 24)
                                {
                                    startTime = i == 1 ? Fiscalperiod.StartDate.AddDays(7 * (i - 1)) : endTime.AddDays(1);
                                    if (i == 1)
                                    {
                                        endTime = startTime == endTime?Fiscalperiod.StartDate.AddDays(15).AddDays(-1) : Fiscalperiod.StartDate.AddMonths(i - 1).AddDays(-1);
                                    }
                                    if (i > 1)
                                    {
                                        if (i % 2 == 0)
                                        {
                                            switch (i)
                                            {
                                            case 2:
                                                endTime = Fiscalperiod.StartDate.AddMonths(i - 1).AddDays(-1);
                                                break;

                                            case 4:
                                                endTime = Fiscalperiod.StartDate.AddMonths(i - 2).AddDays(-1);
                                                break;

                                            case 6:
                                                endTime = Fiscalperiod.StartDate.AddMonths(i - 3).AddDays(-1);
                                                break;

                                            case 8:
                                                endTime = Fiscalperiod.StartDate.AddMonths(i - 4).AddDays(-1);
                                                break;

                                            case 10:
                                                endTime = Fiscalperiod.StartDate.AddMonths(i - 5).AddDays(-1);
                                                break;

                                            case 12:
                                                endTime = Fiscalperiod.StartDate.AddMonths(i - 6).AddDays(-1);
                                                break;

                                            case 14:
                                                endTime = Fiscalperiod.StartDate.AddMonths(i - 7).AddDays(-1);
                                                break;

                                            case 16:
                                                endTime = Fiscalperiod.StartDate.AddMonths(i - 8).AddDays(-1);
                                                break;

                                            case 18:
                                                endTime = Fiscalperiod.StartDate.AddMonths(i - 9).AddDays(-1);
                                                break;

                                            case 20:
                                                endTime = Fiscalperiod.StartDate.AddMonths(i - 10).AddDays(-1);
                                                break;

                                            case 22:
                                                endTime = Fiscalperiod.StartDate.AddMonths(i - 11).AddDays(-1);
                                                break;

                                            case 24:
                                                endTime = Fiscalperiod.StartDate.AddMonths(i - 12).AddDays(-1);
                                                break;

                                            default:
                                                break;
                                            }
                                        }
                                        else if (i % 2 != 0)
                                        {
                                            endTime = startTime.AddDays(15).AddDays(-1);
                                        }
                                    }
                                }

                                SubPeriod subPeriod = new SubPeriod()
                                {
                                    Name        = i + "/" + startTime.ToString("yyyy"),
                                    Period      = Fiscalperiod,
                                    StartDate   = startTime,
                                    EndDate     = endTime,
                                    Status      = 1,
                                    CreatedTime = DateTime.Now,
                                    CreatedUser = UserName,
                                    SubPeriodNo = i//subPeriodNo == 0 ? i : ++subPeriodNo
                                };

                                context.SubPeriods.Add(subPeriod);
                            }
                        }
                    }
                }
            }
            return(null);
        }
        //SaveGrid2
        private List <Error> SaveGrid2(SubPeriodsVM grid2, IList <PayrollDue> insertedPayDue, IEnumerable <KeyValuePair <string, ModelState> > state, Payrolls record, int Period)
        {
            List <Error> errors = new List <Error>();

            // Deleted
            if (grid2.deleted != null)
            {
                foreach (SubPeriodsViewModel model in grid2.deleted)
                {
                    var subPeriod = new SubPeriod
                    {
                        Id = model.Id
                    };

                    _hrUnitOfWork.JobRepository.Remove(subPeriod);
                }
            }

            // Exclude delete models from sever side validations
            if (ServerValidationEnabled)
            {
                var modified = Models.Utils.GetModifiedRows(state.Where(a => !a.Key.Contains("deleted")));
                if (modified.Count > 0)
                {
                    errors = _hrUnitOfWork.CompanyRepository.Check(new CheckParm
                    {
                        CompanyId  = CompanyId,
                        ObjectName = "SubPeriod",
                        Columns    = Models.Utils.GetModifiedRows(state.Where(a => !a.Key.Contains("deleted"))),
                        Culture    = Language
                    });

                    if (errors.Count() > 0)
                    {
                        return(errors);
                    }
                }
            }

            // updated records
            if (grid2.updated != null)
            {
                foreach (SubPeriodsViewModel model in grid2.updated)
                {
                    var subPeriod = new SubPeriod();
                    AutoMapper(new Models.AutoMapperParm {
                        Destination = subPeriod, Source = model, Transtype = TransType.Update
                    });
                    if (model.PayDueId <= 0)
                    {
                        var pDueRecord = insertedPayDue.Where(a => a.Id == model.PayDueId).FirstOrDefault();
                        subPeriod.PayDue = pDueRecord;
                    }
                    _hrUnitOfWork.JobRepository.Attach(subPeriod);
                    _hrUnitOfWork.JobRepository.Entry(subPeriod).State = EntityState.Modified;
                }
            }

            // inserted records
            if (grid2.inserted != null)
            {
                foreach (SubPeriodsViewModel model in grid2.inserted)
                {
                    var subPeriod = new SubPeriod();
                    AutoMapper(new Models.AutoMapperParm {
                        Destination = subPeriod, Source = model, Transtype = TransType.Insert
                    });
                    subPeriod.PeriodId = Period;

                    if (model.PayDueId <= 0)
                    {
                        var pDueRecord = insertedPayDue.Where(a => a.Id == model.PayDueId).FirstOrDefault();
                        subPeriod.PayDue = pDueRecord;
                    }
                    _hrUnitOfWork.JobRepository.Add(subPeriod);
                }
            }

            return(errors);
        }
示例#5
0
 public DbEntityEntry <SubPeriod> Entry(SubPeriod subperiod)
 {
     return(Context.Entry(subperiod));
 }
示例#6
0
 public void Attach(SubPeriod subperiod)
 {
     context.SubPeriods.Attach(subperiod);
 }
示例#7
0
 public void Add(SubPeriod subperiod)
 {
     context.SubPeriods.Add(subperiod);
 }