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();
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
 public void CancelActivities(IDbContext context, ICollection <Activity> activities, CancelReason cancelReason)
 {
     throw new NotImplementedException();
 }