コード例 #1
0
        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();
        }
コード例 #2
0
 public List <WorkAbsence> GetUserReasonAbsence()
 {
     return(WorkAbsences.Where(wa => wa.UserID == GlobalInfo.CurrentUser.ID).ToList());
 }