Files
Nuvolar/Nuvolar.Module/Controllers/Navigation/NavigationItemPermission.vb
2017-03-08 11:21:27 +01:00

127 lines
5.5 KiB
VB.net

Imports System
Imports System.ComponentModel
Imports System.Collections.Generic
Imports System.Diagnostics
Imports System.Text
Imports DevExpress.ExpressApp
Imports DevExpress.ExpressApp.Actions
Imports DevExpress.Persistent.Base
Imports DevExpress.ExpressApp.SystemModule
Imports DevExpress.Xpo
Imports DevExpress.Data.Filtering
Public Class NavigationItemPermission
Inherits DevExpress.ExpressApp.WindowController
Private _navigationController As ShowNavigationItemController
Private _ID As Long = 1
Public Sub New()
MyBase.New()
'This call is required by the Component Designer.
InitializeComponent()
RegisterActions(components)
End Sub
Protected Overrides Sub OnFrameAssigned()
MyBase.OnFrameAssigned()
'_navigationController = Frame.GetController(Of ShowNavigationItemController)()
'If _navigationController IsNot Nothing Then
' AddHandler _navigationController.ItemsInitialized, AddressOf ItemsInitialized
'End If
End Sub
Protected Overrides Sub OnActivated()
MyBase.OnActivated()
End Sub
Private Sub ItemsInitialized(sender As Object, e As EventArgs)
Dim _ChoiceActionItem As ChoiceActionItem
Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
Dim _uow As New UnitOfWork(_onew.Session.DataLayer)
Dim _NavigationItemRole_Collection As XPCollection(Of NavigationItemRole) = New XPCollection(Of NavigationItemRole)(_onew.Session, CriteriaOperator.Parse("1=1"))
_uow.Delete(New XPCollection(Of ModelNavigation)(_uow))
_uow.CommitChanges()
For Each _ChoiceActionItem In _navigationController.ShowNavigationItemAction.Items
RecursiveSetPermission(_ChoiceActionItem, _NavigationItemRole_Collection)
If SecuritySystem.CurrentUserName = "SysAdmin" Then
RecursiveAddModelNavigation(_uow, Nothing, _ChoiceActionItem)
End If
Next
_uow.CommitChanges()
End Sub
Sub RecursiveSetPermission(_ChoiceActionItem As ChoiceActionItem, _NavigationItemRole_Collection As XPCollection(Of NavigationItemRole))
Dim _NavigationItemRole As NavigationItemRole
Dim _ChoiceActionItem_Child As ChoiceActionItem
If _ChoiceActionItem.Items.Count > 0 Then
For Each _ChoiceActionItem_Child In _ChoiceActionItem.Items
RecursiveSetPermission(_ChoiceActionItem_Child, _NavigationItemRole_Collection)
Next
End If
If _ChoiceActionItem.Id = "@NavigationItemPermission" Then
If SecuritySystem.CurrentUserName <> "SysAdmin" Then
_ChoiceActionItem.Active.SetItemValue("", False)
End If
End If
For Each _NavigationItemRole In _NavigationItemRole_Collection
If _NavigationItemRole.ChoiceActionItemId = _ChoiceActionItem.Id Then
If _NavigationItemRole.Role IsNot Nothing Then
If SecuritySystemHelper.IsUserInRoleCurrentUser(_NavigationItemRole.Role.Name) Then
_ChoiceActionItem.Active.SetItemValue("", False)
End If
End If
If _NavigationItemRole.SubcontractorRoles IsNot Nothing Then
Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
Dim _SubcontractorUserRoles_Collection As New XPCollection(Of SubcontractorUserRoles)(_onew.Session, CriteriaOperator.Parse("User.Oid=?", TryCast(SecuritySystem.CurrentUser, DevExpress.Persistent.BaseImpl.User).Oid))
For Each _SubcontractorUserRoles As SubcontractorUserRoles In _SubcontractorUserRoles_Collection
If _NavigationItemRole.SubcontractorRoles.Oid = _SubcontractorUserRoles.SubcontractorRoles.Oid Then
_ChoiceActionItem.Active.SetItemValue("", False)
End If
Next
End If
If _NavigationItemRole.SupportRoles IsNot Nothing Then
Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
Dim _SupportUserRoles_Collection As New XPCollection(Of SupportUserRoles)(_onew.Session, CriteriaOperator.Parse("User.Oid=?", TryCast(SecuritySystem.CurrentUser, DevExpress.Persistent.BaseImpl.User).Oid))
For Each _SupportUserRoles As SupportUserRoles In _SupportUserRoles_Collection
If _NavigationItemRole.SupportRoles.Oid = _SupportUserRoles.SupportRoles.Oid Then
_ChoiceActionItem.Active.SetItemValue("", False)
End If
Next
End If
End If
Next
End Sub
Sub RecursiveAddModelNavigation(_uow As UnitOfWork, _ModelNavigationParent As ModelNavigation, _ChoiceActionItem As ChoiceActionItem)
Dim _ModelNavigation As ModelNavigation
Dim _ChoiceActionItem_Child As ChoiceActionItem
_ID += 1
_ModelNavigation = New ModelNavigation(_uow)
_ModelNavigation.Parent = _ModelNavigationParent
_ModelNavigation.Name = _ChoiceActionItem.Id
_ModelNavigation.Navigation_Caption = _ChoiceActionItem.Caption
_ModelNavigation.Navigation_ImageName = _ChoiceActionItem.ImageName
If _ChoiceActionItem.Items.Count > 0 Then
For Each _ChoiceActionItem_Child In _ChoiceActionItem.Items
RecursiveAddModelNavigation(_uow, _ModelNavigation, _ChoiceActionItem_Child)
Next
End If
End Sub
End Class