Пример #1
0
        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;
        }
Пример #2
0
        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;
        }
Пример #3
0
        /// <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;
                }
            }
        }