private static void CanExecuteRemove(object target, CanExecuteRoutedEventArgs e) { bool result = false; CslaDataProviderCommandManager ctl = target as CslaDataProviderCommandManager; if (ctl != null && ctl.Provider != null) { if (ctl.Provider.Data != null) { Csla.Core.BusinessBase bb = e.Parameter as Csla.Core.BusinessBase; IBindingList list; if (bb != null) { list = bb.Parent as IBindingList; } else { list = ctl.Provider.Data as IBindingList; } if (list != null) { result = list.AllowRemove; if (result && !Csla.Rules.BusinessRules.HasPermission(ApplicationContextManager.GetApplicationContext(), Rules.AuthorizationActions.EditObject, ctl.Provider.Data)) { result = false; } } } } e.CanExecute = result; }
private static void CanExecuteNew(object target, CanExecuteRoutedEventArgs e) { bool result = false; CslaDataProviderCommandManager ctl = target as CslaDataProviderCommandManager; if (ctl != null && ctl.Provider != null) { if (ctl.Provider.Data != null) { IBindingList list = ctl.Provider.Data as IBindingList; if (list != null) { result = list.AllowNew; if (result && !Csla.Rules.BusinessRules.HasPermission(ApplicationContextManager.GetApplicationContext(), Rules.AuthorizationActions.EditObject, ctl.Provider.Data)) { result = false; } } } } e.CanExecute = result; }
/// <summary> /// Refreshes the control's property /// values to reflect the values of /// the underlying business object. /// </summary> public void Refresh() { // per-type rules if (DataObject != null) { var sourceType = DataObject.GetType(); var newValue = Csla.Rules.BusinessRules.HasPermission(ApplicationContextManager.GetApplicationContext(), Rules.AuthorizationActions.CreateObject, DataObject); if (CanCreateObject != newValue) { CanCreateObject = newValue; } newValue = Csla.Rules.BusinessRules.HasPermission(ApplicationContextManager.GetApplicationContext(), Rules.AuthorizationActions.GetObject, DataObject); if (CanGetObject != newValue) { CanGetObject = newValue; } newValue = Csla.Rules.BusinessRules.HasPermission(ApplicationContextManager.GetApplicationContext(), Rules.AuthorizationActions.EditObject, DataObject); if (CanEditObject != newValue) { CanEditObject = newValue; } newValue = Csla.Rules.BusinessRules.HasPermission(ApplicationContextManager.GetApplicationContext(), Rules.AuthorizationActions.DeleteObject, DataObject); if (CanDeleteObject != newValue) { CanDeleteObject = newValue; } } else { CanCreateObject = false; CanGetObject = false; CanEditObject = false; CanDeleteObject = false; } IEditableBusinessObject source = DataObject as IEditableBusinessObject; if (source != null) { if (IsDeleted != source.IsDeleted) { IsDeleted = source.IsDeleted; } if (IsDirty != source.IsDirty) { IsDirty = source.IsDirty; } if (IsNew != source.IsNew) { IsNew = source.IsNew; } if (IsSavable != source.IsSavable) { IsSavable = source.IsSavable; } if (IsValid != source.IsValid) { IsValid = source.IsValid; } } else { IEditableCollection sourceList = DataObject as IEditableCollection; if (sourceList != null) { if (IsDirty != sourceList.IsDirty) { IsDirty = sourceList.IsDirty; } if (IsValid != sourceList.IsValid) { IsValid = sourceList.IsValid; } if (IsSavable != sourceList.IsSavable) { IsSavable = sourceList.IsSavable; } IsDeleted = false; IsNew = false; } } }