public IEnumerable<IResult> Cancel()
        {
            bool closing = false;
            // Check Dirty State
            if (User.IsDirty)
                this.IsDirty = true;

            if (this.IsDirty) {
                string message = string.Empty;
                if (AssistantMode == ViewMode.Add)
                    message = "Cancel adding " + this.DisplayName + "?";
                else
                    message = "Cancel editing " + this.DisplayName + "?";
                var showDialog = UILib.DialogCancel(message);
                yield return showDialog;
                if (showDialog.Dialog.WasSelected(MessageBoxOptions.Yes)) {
                    closing = true;
                }
            }
            else {
                closing = true;
            }

            if (closing) {
                if (IsLocked()) {
                    BusyOn("Releasing Lock...");
                    ReleaseLockRequest releaseLockRequest = new ReleaseLockRequest(ModelNamesEnum.User, this.User.UserId.ToString());
                    yield return releaseLockRequest;
                    if (releaseLockRequest.Error != null) {
                        yield return new HandleExceptionResult(releaseLockRequest.Error);
                        BusyOff();
                        yield break;
                    }
                    BusyOff();
                }
                base.Close();
            }
        }
 public IEnumerable<IResult> SchedulerDialogClosing(object sender, DialogEventArgs e)
 {
     // DialogResult is false if cancel was clicked.
     if (((CloseDialogEventArgs)e).DialogResult == false) {
         if (SchedulerEditingId != Guid.Empty) {
             this.SchedulerIsBusy = true;
             ReleaseLockRequest releaseLockRequest = new ReleaseLockRequest(ModelNamesEnum.Appointment, SchedulerEditingId.ToString());
             yield return releaseLockRequest;
             if (releaseLockRequest.Error != null) {
                 yield return new HandleExceptionResult(releaseLockRequest.Error);
                 this.SchedulerIsBusy = false;
                 yield break;
             }
             this.SchedulerEditingId = Guid.Empty;
             this.SchedulerIsBusy = false;
         }
     }
     yield break;
 }
        public IEnumerable<IResult> Cancel()
        {
            // Check Dirty State Client
            if (this.CatalogItem.IsDirty)
                this.IsDirty = true;

            if (this.IsDirty) {
                string message = string.Empty;
                if (AssistantMode == ViewMode.Add)
                    message = "Cancel adding " + this.DisplayName + "?";
                else
                    message = "Cancel editing " + this.DisplayName + "?";
                var showDialog = UILib.DialogCancel(message);
                yield return showDialog;
                if (!showDialog.Dialog.WasSelected(MessageBoxOptions.Yes)) {
                    yield break;
                }
            }

            if (this.IsDirty) {
                BusyOn("Releasing Lock...");

                var req = new ReleaseLockRequest(ModelNamesEnum.Catalog, this.CatalogItem.Pk.ToString());
                yield return req;

                if (req.Error != null) {
                    yield return HandleExceptionResult.Display(req.Error);
                    BusyOff();
                    yield break;
                }

                BusyOff();
                base.Close();
            }
        }