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(); } }
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)); }
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); }); }
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; } } }
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); }
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); }
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(); }
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(); }
public void Close(IDbContext context, CalendarDay day) { throw new NotImplementedException(); }
public void CancelActivities(IDbContext context, CalendarDay day) { throw new NotImplementedException(); }
public bool HasActivitiesForCancel(CalendarDay day) { // Regular activities or Long term activities expiring today throw new NotImplementedException(); }
public List <CalendarDay> GetPreviousDays(CalendarDay day) { throw new NotImplementedException(); }