Esempio n. 1
0
        public void CancelDays(DataCache cache, CalendarDay day, CancelReason cancelReason, Action <CalendarDay> dayCancelled)
        {
            if (day == null)
            {
                throw new ArgumentNullException(nameof(day));
            }
            if (cancelReason == null)
            {
                throw new ArgumentNullException(nameof(cancelReason));
            }

            using (var dbContext = this.DataProvider.DbContextCreator())
            {
                // We can cancel only open days
                if (day.Status.IsOpen)
                {
                    this.CancelActivities(dbContext, day, cancelReason);

                    var cancelStatus = cache.GetValues <DayStatus>(dbContext).Values.Single(s => s.IsCancel);

                    // Mark date as cancelled
                    this.DataProvider.Cancel(dbContext, day, cancelStatus);

                    // Fire the "event"
                    dayCancelled.Invoke(new CalendarDay(day.Date, cancelStatus));
                }

                dbContext.Complete();
            }
        }
Esempio n. 2
0
        public CalendarDay GetActiveDayBefore(IEnumerable <CalendarDay> days, CalendarDay day)
        {
            if (days == null)
            {
                throw new ArgumentNullException(nameof(days));
            }
            if (day == null)
            {
                throw new ArgumentNullException(nameof(day));
            }

            // Search current days
            var activeDay = GetActiveDay(days, day);

            if (activeDay != null)
            {
                return(activeDay);
            }

            // Lazy Load previous days
            if (_previousDays == null)
            {
                _previousDays = this.PreviousDaysProvider(day);
            }

            // Search previous days
            return(GetActiveDay(_previousDays, day));
        }
Esempio n. 3
0
        public CalendarDayViewModel(CalendarDay calendarDay, CalendarViewModel viewModel)
        {
            if (calendarDay == null)
            {
                throw new ArgumentNullException(nameof(calendarDay));
            }
            if (viewModel == null)
            {
                throw new ArgumentNullException(nameof(viewModel));
            }

            this.CalendarDay     = calendarDay;
            this.ViewModel       = viewModel;
            this.Date            = calendarDay.Date;
            this.Status          = calendarDay.Status;
            this.CloseDayCommand = new ActionCommand(() =>
            {
                throw new NotImplementedException();
            });
            this.CancelDayCommand = new ActionCommand(() =>
            {
                this.ViewModel.CancelDays(new[] { this });
            });
            this.ViewAgendaCommand = new ActionCommand(() =>
            {
                this.ViewModel.ViewAgenda(this);
            });
        }
Esempio n. 4
0
 private void UpdateDayStatus(CalendarDay day)
 {
     for (var i = 0; i < this.Days.Count; i++)
     {
         var viewModel = this.Days[i];
         if (viewModel.CalendarDay.Date == day.Date)
         {
             this.Days[i] = new CalendarDayViewModel(new CalendarDay(day.Date, day.Status), this);
             break;
         }
     }
 }
Esempio n. 5
0
        private static CalendarDay[] GetDays(ICollection <CalendarDayViewModel> viewModels)
        {
            var days = new CalendarDay[viewModels.Count];

            var index = 0;

            foreach (var viewModel in viewModels)
            {
                days[index++] = viewModel.CalendarDay;
            }

            Array.Sort(days, (x, y) => x.Date.CompareTo(y.Date));

            return(days);
        }
Esempio n. 6
0
        private static CalendarDay GetActiveDay(IEnumerable <CalendarDay> days, CalendarDay day)
        {
            var date = day.Date;

            foreach (var current in days)
            {
                if (current.Date >= date)
                {
                    // Ignore days in the future
                    continue;
                }
                if (current.Status.IsActive)
                {
                    return(current);
                }
            }

            return(null);
        }
Esempio n. 7
0
        public void CancelActivities(IDbContext dbContext, CalendarDay day, CancelReason cancelReason)
        {
            if (dbContext == null)
            {
                throw new ArgumentNullException(nameof(dbContext));
            }
            if (day == null)
            {
                throw new ArgumentNullException(nameof(day));
            }
            if (cancelReason == null)
            {
                throw new ArgumentNullException(nameof(cancelReason));
            }

            // TODO : !!!
            // Cancel all open activities
            //this.DataProvider.CancelActivities(dbContext, null, cancelReason);
            //throw new NotImplementedException();
        }
Esempio n. 8
0
        public void Cancel(IDbContext context, CalendarDay day, DayStatus cancelStatus)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }
            if (day == null)
            {
                throw new ArgumentNullException(nameof(day));
            }
            if (cancelStatus == null)
            {
                throw new ArgumentNullException(nameof(cancelStatus));
            }

            var q = @"update calendar set status = @status where date = @date";

            var date   = day.Date;
            var status = cancelStatus.Id;

            throw new NotImplementedException();
        }
Esempio n. 9
0
 public void Close(IDbContext context, CalendarDay day)
 {
     throw new NotImplementedException();
 }
Esempio n. 10
0
 public void CancelActivities(IDbContext context, CalendarDay day)
 {
     throw new NotImplementedException();
 }
Esempio n. 11
0
 public bool HasActivitiesForCancel(CalendarDay day)
 {
     // Regular activities or Long term activities expiring today
     throw new NotImplementedException();
 }
Esempio n. 12
0
 public List <CalendarDay> GetPreviousDays(CalendarDay day)
 {
     throw new NotImplementedException();
 }