public void Remove(SubPeriod subperiod) { if (Context.Entry(subperiod).State == EntityState.Detached) { context.SubPeriods.Attach(subperiod); } context.SubPeriods.Remove(subperiod); }
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); }
public DbEntityEntry <SubPeriod> Entry(SubPeriod subperiod) { return(Context.Entry(subperiod)); }
public void Attach(SubPeriod subperiod) { context.SubPeriods.Attach(subperiod); }
public void Add(SubPeriod subperiod) { context.SubPeriods.Add(subperiod); }