public AbsencePlanningResponse SaveAbsencePlanning(AbsencePlanningResponse response) { // diction id of empluyees which absences or holidays number changed Dictionary <long, object> d_ids = new Dictionary <long, object>(); if (response.DeletedIds != null) { List <long> ids = new List <long>(response.DeletedIds); List <AbsenceTimePlanning> listAbsences = AbsenceTimePlanningService.FindByIDList(ids); if (listAbsences != null) { foreach (AbsenceTimePlanning a in listAbsences) { d_ids[a.EmployeeID] = a; } } AbsenceTimePlanningService.DeleteList(listAbsences);// DeleteListByID(ids); } if (response.ModifiedEntity != null) { List <EmployeeHolidaysInfo> lst = new List <EmployeeHolidaysInfo>(response.ModifiedEntity); EmployeeHolidaysInfoService.SaveOrUpdateList(lst); foreach (EmployeeHolidaysInfo o in lst) { d_ids[o.EmployeeID] = o; } } if (response.NewAbsences != null) { foreach (AbsenceTimeRange a in response.NewAbsences) { Debug.Assert(a.EmployeeID > 0); Debug.Assert(a.AbsenceID > 0); Debug.Assert(a.ID <= 0); d_ids[a.EmployeeID] = a; ClearEmployeePlanningTime(a.EmployeeID, a.Date, a.Date); AbsenceTimePlanning entity = new AbsenceTimePlanning(a.Begin, a.End, a.Time, a.AbsenceID, a.EmployeeID); entity.ID = 0; entity.Date = a.Date; AbsenceTimePlanningService.SaveOrUpdate(entity); a.ID = entity.ID; } } if (d_ids.Count > 0) { long[] ids = new long[d_ids.Count]; d_ids.Keys.CopyTo(ids, 0); ExEmployeeHolidays.CalculateAndUpdate(ids, response.Year); } return(response); }
public void FillAbsencePlanningTimes(AbsenceTimePlanning entity) { if (entity != null) { Absence a = GetById(entity.AbsenceID); if (a != null) { entity.Absence = a; } } }
public List <AbsenceTimePlanning> GetAbsenceTimePlanningEntities(DateTime date) { List <AbsenceTimePlanning> resultList = new List <AbsenceTimePlanning>(); AbsenceTimePlanning absence = null; for (int i = 0; i <= 24 * 4; i++) { if (IsAbsenceTime(i)) { if (absence != null && absence.AbsenceID != GetAbsenceId(i)) { absence.End = (short)(i * 15);// - 15); resultList.Add(absence); absence = null; } if (absence == null) { absence = new AbsenceTimePlanning(); absence.AbsenceID = GetAbsenceId(i); absence.Begin = (short)(i * 15); absence.Date = date; absence.EmployeeID = EmployeeId; } } else { if (absence != null) { absence.End = (short)(i * 15); //- 15); resultList.Add(absence); absence = null; } } } return(resultList); }
public static bool InsertTimeRange(EmployeePlanningDay day, AbsenceTimePlanning newrange) { List <IEmployeeTimeRange> ranges = new List <IEmployeeTimeRange>(); if (day.WorkingTimeList != null) { foreach (WorkingTimePlanning r in day.WorkingTimeList) { ranges.Add(r); } } if (day.AbsenceTimeList != null) { foreach (AbsenceTimePlanning r in day.AbsenceTimeList) { ranges.Add(r); } } ranges.Sort(); // if newrange is part of exists range - return foreach (IEmployeeTimeRange range in ranges) { if (range.AbsenceID == newrange.AbsenceID && range.Begin <= newrange.Begin && newrange.End <= range.End) { return(false); } } //ranges.Add(newrange); ranges.Sort(); foreach (IEmployeeTimeRange range in ranges) { if (newrange.Begin <= range.Begin && range.End <= newrange.End) { range.Begin = range.End; } else if (range.Begin <= newrange.Begin && newrange.Begin <= range.End) { range.End = (short)(newrange.Begin - 1); } else if (range.Begin <= newrange.End && newrange.End <= range.End) { range.Begin = (short)(newrange.End + 1); } } if (day.AbsenceTimeList == null) { day.AbsenceTimeList = new List <AbsenceTimePlanning>(1); } if (day.AbsenceTimeList != null) { day.AbsenceTimeList.Add(newrange); } for (int i = day.AbsenceTimeList.Count - 1; i >= 0; i--) { if (day.AbsenceTimeList[i].Begin >= day.AbsenceTimeList[i].End) { day.AbsenceTimeList.RemoveAt(i); } } if (day.WorkingTimeList != null) { for (int i = day.WorkingTimeList.Count - 1; i >= 0; i--) { if (day.WorkingTimeList[i].Begin >= day.WorkingTimeList[i].End) { day.WorkingTimeList.RemoveAt(i); } } } for (int i = day.AbsenceTimeList.Count - 1; i >= 1; i--) { if (day.AbsenceTimeList[i].AbsenceID == day.AbsenceTimeList[i - 1].AbsenceID && day.AbsenceTimeList[i].Begin - 1 == day.AbsenceTimeList[i - 1].End) { day.AbsenceTimeList[i - 1].End = day.AbsenceTimeList[i].End; day.AbsenceTimeList.RemoveAt(i); } } return(true); }
public void AssignTo(EmployeePlanningDay employeeday) { if (employeeday.WorkingTimeList == null) employeeday.WorkingTimeList = new List<WorkingTimePlanning>(); else employeeday.WorkingTimeList.Clear(); WorkingTimePlanning entity = null; foreach (WorkingTimePlanning wtp in WorkingTimes) { entity = new WorkingTimePlanning(); entity.ID = 0; entity.EmployeeID = employeeday.EmployeeId; entity.Date = employeeday.Date; entity.Begin = wtp.Begin; entity.End = wtp.End; entity.Time = (short)(entity.End - entity.Begin); employeeday.WorkingTimeList.Add(entity); } if (employeeday.AbsenceTimeList == null) employeeday.AbsenceTimeList = new List<AbsenceTimePlanning>(); else employeeday.AbsenceTimeList.Clear(); AbsenceTimePlanning entity1 = null; foreach (AbsenceTimePlanning atp in AbsenceTimes) { entity1 = new AbsenceTimePlanning(); entity1.ID = 0; entity1.EmployeeID = employeeday.EmployeeId; entity1.Date = employeeday.Date; entity1.Begin = atp.Begin; entity1.End = atp.End; entity1.AbsenceID = atp.AbsenceID; entity1.Absence = atp.Absence; employeeday.AbsenceTimeList.Add(entity1); } employeeday.Modified = true; }