public void UpdateReasonAbsence(List <DateTime> dates, int?reasonID) { ChangeTracker.DetectChanges(); if (reasonID == null) { var userResonsToDelete = WorkAbsences.Where(wa => dates.Contains(wa.AbsenceDate) && wa.UserID == GlobalInfo.CurrentUser.ID); WorkAbsences.RemoveRange(userResonsToDelete); SaveChanges(); return; } foreach (var dt in dates) { var old = WorkAbsences.Where(wa => wa.AbsenceDate == dt && wa.UserID == GlobalInfo.CurrentUser.ID).ToList(); if (old.Count > 1) { MessageBox.Show("Не может быть больше одного дня с причиной", "Ошибка"); return; } if (old.Count == 1) { if (old[0].ReasonID != reasonID) { old[0].ReasonID = (int)reasonID; WorkAbsences.AddOrUpdate(old[0]); } } else { WorkAbsence newWorkAbsence = new WorkAbsence(); newWorkAbsence.ReasonID = (int)reasonID; newWorkAbsence.UserID = GlobalInfo.CurrentUser.ID; newWorkAbsence.AbsenceDate = dt; WorkAbsences.AddOrUpdate(newWorkAbsence); } } SaveChanges(); }
public List <WorkAbsence> GetUserReasonAbsence() { return(WorkAbsences.Where(wa => wa.UserID == GlobalInfo.CurrentUser.ID).ToList()); }