Esempio n. 1
0
        protected override async Task PerformDeleteOnRecordCallback()
        {
            int id        = Model.Id;
            var operation = await _interactor.CascadingDeleteAsync(Model);

            if (operation.WasSuccessful == false)
            {
                return;
            }
            switch (operation.Result)
            {
            case CascadingDeleteType.Edit:
                await RefreshModelInformation(Model.Id, false);

                break;

            case CascadingDeleteType.Delete:
                OnModelSearcherCleared();
                if (ModelSearcher != null)
                {
                    CSharpToolkit.Utilities.Abstractions.IIdProvider item = ModelSearcher.CurrentItems.FirstOrDefault(m => m.Id == id);
                    if (item != null)
                    {
                        ModelSearcher.Remove(item);
                    }
                }
                break;
            }
        }
 /// <summary>
 /// The EventHandler for the <see cref="ModelSearcher" /> ExportId event.
 /// </summary>
 /// <param name="sender">The initiator of the event.</param>
 /// <param name="e">The EventArgs containing the new Id.</param>
 private void ModelSearcher_ExportId(object sender, GenericEventArgs <int> e)
 {
     if (CriticalOperationType == CriticalOperationType.None)
     {
         OnModelSearcherExportId(e.Data);
     }
     else
     {
         ModelSearcher.ClearSelectedItem();
     }
 }
 /// <summary>
 /// Used to dispose of resources in use by the <see cref="AdminViewModel{TViewModel, TModel, TModelSearcher}"/>
 /// </summary>
 /// <param name="disposing"></param>
 protected override void Dispose(bool disposing)
 {
     if (!_disposedValue)
     {
         if (disposing)
         {
             ApplicationRestrictor.RequestUnlock(_adminToken);
             FamilialLocker.RequestUnlock(_adminToken);
             CriticalOperationType = CriticalOperationType.None;
             if (ModelSearcher != null)
             {
                 ModelSearcher.SelectedItems.CollectionChanged -= SelectedItems_CollectionChanged;
                 ModelSearcher.ExportId -= ModelSearcher_ExportId;
                 ModelSearcher.Cleared  -= ModelSearcher_Cleared;
                 ModelSearcher.RequestEnable(_adminToken);
             }
             Model.ErrorsChanged -= Model_ErrorsChanged;
             Model.Dispose();
             _newEnableCallback                               = null;
             _duplicateEnableCallback                         = null;
             _modifyEnableCallback                            = null;
             _backEnableCallback                              = null;
             _forwardEnableCallback                           = null;
             _performDeleteOnRecordEnableCallback             = null;
             _backForwardNavigator.CurrentItemChangedCallback = null;
             _backForwardNavigator?.Dispose();
             Navigation.Dispose();
             RecordChangeLocker.Dispose();
             ConfirmCancelLocker.Dispose();
             NewRecordCancelLocker.Dispose();
             NavigationalOverride.Dispose();
             OutsideModificationLocker.Dispose();
             DefaultModelCallback = null;
             Locators.ForEach(locator => {
                 locator.SearchToBegin   -= Locator_SearchToBegin;
                 locator.SearchComplete  -= Locator_SearchComplete;
                 locator.RecordRequested -= Locator_RecordRequested;
                 locator.RequestEnable(_adminToken);
             });
             Locators.Clear();
         }
         _disposedValue = true;
     }
     base.Dispose(disposing);
 }
        /// <summary>
        /// Logic used when the State changes.
        /// </summary>
        /// <param name="oldValue">The old State value.</param>
        protected override void OnStateChanged(ViewModelState oldValue)
        {
            base.OnStateChanged(oldValue);
            Navigation.State = State;
            switch (State)
            {
            case ViewModelState.Idle:
                CriticalOperationType = CriticalOperationType.None;
                ModelSearcher?.RequestEnable(_adminToken);
                break;

            case ViewModelState.FamilialOperation:
            case ViewModelState.Restricted:
                ModelSearcher?.RequestEnable(_adminToken);
                break;

            case ViewModelState.NonCriticalOperation:
            case ViewModelState.CriticalOperation:
                ModelSearcher?.RequestDisable(_adminToken);
                break;
            }
        }
 /// <summary>
 /// The logic used when a search has been initiated.
 /// </summary>
 /// <param name="sender">The initiator of the event. Is used as token.</param>
 /// <param name="e">The EventArgs of the event.</param>
 private void Locator_SearchToBegin(object sender, EventArgs e)
 {
     ModelSearcher?.RequestDisable(sender);
     RecordChangeLocker?.RequestLock(sender);
 }
 /// <summary>
 /// The logic used when a search has been completed.
 /// </summary>
 /// <param name="sender">The initiator of the event. Is used as token.</param>
 /// <param name="e">The EventArgs of the event.</param>
 private void Locator_SearchComplete(object sender, EventArgs e)
 {
     ModelSearcher?.RequestEnable(sender);
     RecordChangeLocker?.RequestUnlock(sender);
 }