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 void CancelActivities(ICollection <Activity> activities, CancelReason cancelReason, Action <Activity> activityCancelled) { if (activities == null) { throw new ArgumentNullException(nameof(activities)); } if (cancelReason == null) { throw new ArgumentNullException(nameof(cancelReason)); } // TODO : !!! // Cancel all open activities //this.DataProvider.CancelActivities(dbContext, null, cancelReason); //throw new NotImplementedException(); }
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 async void CancelDays(ICollection <CalendarDayViewModel> viewModels) { if (viewModels == null) { throw new ArgumentNullException(nameof(viewModels)); } //var confirmationMessage = this.LocalizationManager(@"Calendar", @"ConfirmCancelDay"); //var isConfirmed = (await this.ModalDialog.ShowAsync(confirmationMessage, Feature.None, PermissionType.Confirm)) == DialogResult.Accept; //if (!isConfirmed) return; // We don't have any selected days if (viewModels.Count == 0) { return; } CancelReason cancelReason = null; var operation = new CalendarCancelOperation(this.DataProvider); var daysChecker = new CalendarDaysChecker(this.DataProvider.GetPreviousDays); foreach (var day in GetDays(viewModels)) { var activeDay = daysChecker.GetActiveDayBefore(GetCurrentDays(this.Days), day); var hasActiveDayBefore = activeDay != null; if (hasActiveDayBefore) { //var message = this.LocalizationManager(@"Calendar", @"ActiveDayBefore") + activeDay.Date.ToString(@"D"); //await this.ModalDialog.ShowAsync(message, Feature.None); break; } if (cancelReason == null) { // Load all visit/activities ??? => no // TODO : var activities = this.GetCurrentDayActivities(); var hasActivitiesForCancel = activities.Any(); if (hasActivitiesForCancel) { } if (hasActivitiesForCancel || this.DataProvider.HasActivitiesForCancel(day)) { // Prompt for a cancel cancelReason selection cancelReason = await this.CancelReasonSelector(); // Cancel the operation if (cancelReason == null) { return; } } } // Execute Cancel day operation.CancelDays(this.DataCache, day, cancelReason, this.UpdateDayStatus); } }
public void CancelActivities(IDbContext context, ICollection <Activity> activities, CancelReason cancelReason) { throw new NotImplementedException(); }