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.Xpo Imports DevExpress.Data.Filtering Imports DevExpress.ExpressApp.SystemModule Imports DevExpress.ExpressApp.Web.SystemModule Public Class Support_VC Inherits DevExpress.ExpressApp.ViewController Public Sub New() MyBase.New() InitializeComponent() RegisterActions(components) End Sub Protected Overrides Sub OnActivated() MyBase.OnActivated() If View.Id = "SupportRoles_ListView_Support" Then Frame.GetController(Of ListViewController).EditAction.Active.SetItemValue("", False) End If If View.Id = "CRM_Opportunities_ListView_Support" Then Frame.GetController(Of ListViewController).EditAction.Active.SetItemValue("", False) Frame.GetController(Of ListViewProcessCurrentObjectController).Active.SetItemValue("", False) Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace) Dim _Contacts As Contacts = _ocur.FindObject(Of Contacts)(CriteriaOperator.Parse("User = ?", _ocur.GetObject(SecuritySystem.CurrentUser))) If _Contacts IsNot Nothing Then If _Contacts.Customers IsNot Nothing Then TryCast(View, ListView).CollectionSource.Criteria("ByPartner") = CriteriaOperator.Parse("Customers.Oid = ?", _Contacts.Customers.Oid) Else TryCast(View, ListView).CollectionSource.Criteria("ByPartner") = CriteriaOperator.Parse("1=2") End If Else TryCast(View, ListView).CollectionSource.Criteria("ByPartner") = CriteriaOperator.Parse("1=2") End If End If If View.Id = "OfferOutHeader_ListView_Support" Then Frame.GetController(Of ListViewController).EditAction.Active.SetItemValue("", False) Frame.GetController(Of ListViewProcessCurrentObjectController).Active.SetItemValue("", False) Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace) Dim _Contacts As Contacts = _ocur.FindObject(Of Contacts)(CriteriaOperator.Parse("User = ?", _ocur.GetObject(SecuritySystem.CurrentUser))) If _Contacts IsNot Nothing Then If _Contacts.Customers IsNot Nothing Then TryCast(View, ListView).CollectionSource.Criteria("ByPartner") = CriteriaOperator.Parse("Customers.Oid = ?", _Contacts.Customers.Oid) Else TryCast(View, ListView).CollectionSource.Criteria("ByPartner") = CriteriaOperator.Parse("1=2") End If Else TryCast(View, ListView).CollectionSource.Criteria("ByPartner") = CriteriaOperator.Parse("1=2") End If End If If View.Id = "WorkSheet_Header_ListView_Support" Then Frame.GetController(Of ListViewController).EditAction.Active.SetItemValue("", False) Frame.GetController(Of ListViewProcessCurrentObjectController).Active.SetItemValue("", False) Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace) Dim _Contacts As Contacts = _ocur.FindObject(Of Contacts)(CriteriaOperator.Parse("User = ?", _ocur.GetObject(SecuritySystem.CurrentUser))) If _Contacts IsNot Nothing Then If _Contacts.Customers IsNot Nothing Then TryCast(View, ListView).CollectionSource.Criteria("ByPartner") = CriteriaOperator.Parse("Customers.Oid = ?", _Contacts.Customers.Oid) Else TryCast(View, ListView).CollectionSource.Criteria("ByPartner") = CriteriaOperator.Parse("1=2") End If Else TryCast(View, ListView).CollectionSource.Criteria("ByPartner") = CriteriaOperator.Parse("1=2") End If End If If View.Id = "Contracts_ListView_Support" Then Frame.GetController(Of ListViewController).EditAction.Active.SetItemValue("", False) Frame.GetController(Of ListViewProcessCurrentObjectController).Active.SetItemValue("", False) Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace) Dim _Contacts As Contacts = _ocur.FindObject(Of Contacts)(CriteriaOperator.Parse("User = ?", _ocur.GetObject(SecuritySystem.CurrentUser))) If _Contacts IsNot Nothing Then If _Contacts.Customers IsNot Nothing Then TryCast(View, ListView).CollectionSource.Criteria("ByPartner") = CriteriaOperator.Parse("Customers.Oid = ?", _Contacts.Customers.Oid) Else TryCast(View, ListView).CollectionSource.Criteria("ByPartner") = CriteriaOperator.Parse("1=2") End If Else TryCast(View, ListView).CollectionSource.Criteria("ByPartner") = CriteriaOperator.Parse("1=2") End If End If If View.Id = "PCIGroup_ListView_Support" Then Frame.GetController(Of ListViewController).EditAction.Active.SetItemValue("", False) Frame.GetController(Of ListViewProcessCurrentObjectController).Active.SetItemValue("", False) Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace) Dim _Contacts As Contacts = _ocur.FindObject(Of Contacts)(CriteriaOperator.Parse("User = ?", _ocur.GetObject(SecuritySystem.CurrentUser))) If _Contacts IsNot Nothing Then If _Contacts.Customers IsNot Nothing Then TryCast(View, ListView).CollectionSource.Criteria("ByPartner") = CriteriaOperator.Parse("Customers.Oid = ?", _Contacts.Customers.Oid) Else TryCast(View, ListView).CollectionSource.Criteria("ByPartner") = CriteriaOperator.Parse("1=2") End If Else TryCast(View, ListView).CollectionSource.Criteria("ByPartner") = CriteriaOperator.Parse("1=2") End If End If End Sub Protected Overrides Sub OnDeactivated() MyBase.OnDeactivated() If View.Id = "SupportRoles_ListView_Support" Then Frame.GetController(Of ListViewController).EditAction.Active.SetItemValue("", True) End If If View.Id = "CRM_Opportunities_ListView_Support" Then Frame.GetController(Of ListViewController).EditAction.Active.SetItemValue("", True) Frame.GetController(Of ListViewProcessCurrentObjectController).Active.SetItemValue("", True) End If If View.Id = "OfferOutHeader_ListView_Support" Then Frame.GetController(Of ListViewController).EditAction.Active.SetItemValue("", True) Frame.GetController(Of ListViewProcessCurrentObjectController).Active.SetItemValue("", True) End If If View.Id = "WorkSheet_Header_ListView_Support" Then Frame.GetController(Of ListViewController).EditAction.Active.SetItemValue("", True) Frame.GetController(Of ListViewProcessCurrentObjectController).Active.SetItemValue("", True) End If If View.Id = "Contracts_ListView_Support" Then Frame.GetController(Of ListViewController).EditAction.Active.SetItemValue("", True) Frame.GetController(Of ListViewProcessCurrentObjectController).Active.SetItemValue("", True) End If If View.Id = "PCIGroup_ListView_Support" Then Frame.GetController(Of ListViewController).EditAction.Active.SetItemValue("", True) Frame.GetController(Of ListViewProcessCurrentObjectController).Active.SetItemValue("", True) End If End Sub Private Sub aSupportNavigationEnable_CustomizePopupWindowParams(sender As Object, e As DevExpress.ExpressApp.Actions.CustomizePopupWindowParamsEventArgs) Handles aSupportNavigationEnable.CustomizePopupWindowParams Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace Dim _uow As New UnitOfWork(_onew.Session.DataLayer) Dim _MasterKey As Guid = SecuritySystem.CurrentUserId Dim _ModelNavigation_Collection As New XPCollection(Of ModelNavigation)(_uow, CriteriaOperator.Parse("MasterKey=?", _MasterKey)) _uow.Delete(_ModelNavigation_Collection) _uow.CommitChanges() If View.SelectedObjects.Count = 1 Then Dim _SupportRoles As SupportRoles = TryCast(View.SelectedObjects(0), SupportRoles) If _SupportRoles IsNot Nothing Then Dim _NavigationItemRole_Collection As New XPCollection(Of NavigationItemRole)(_onew.Session, CriteriaOperator.Parse("SupportRoles.Oid=?", _SupportRoles.Oid)) Dim _NavigationItemRole As NavigationItemRole Dim _ModelNavigation As ModelNavigation Dim _IModelNavigationItems As IModelNavigationItems Dim _IModelNavigationItem As IModelNavigationItem Dim _NavigationItems As IModelRootNavigationItems = DirectCast(Application.Model, IModelApplicationNavigationItems).NavigationItems _IModelNavigationItems = TryCast(_NavigationItems.Items, IModelNavigationItems) For Each _IModelNavigationItem In _IModelNavigationItems RecursiveAddModelNavigation(_uow, _MasterKey, Nothing, _IModelNavigationItem) Next _uow.CommitChanges() Dim _CS As CollectionSource = New CollectionSource(_onew, GetType(ModelNavigation)) _CS.BeginUpdateCriteria() _CS.Criteria.Add("Filter1", CriteriaOperator.Parse("MasterKey=?", _MasterKey)) _CS.EndUpdateCriteria() _CS.Sorting.Add(New SortProperty("Index", DB.SortingDirection.Ascending)) For Each _ModelNavigation In _CS.Collection For Each _NavigationItemRole In _NavigationItemRole_Collection If _NavigationItemRole.ChoiceActionItemId = _ModelNavigation.Name Then RecursiveDeny(_ModelNavigation) End If Next Next e.View = Application.CreateListView("ModelNavigation_ListView", _CS, False) If _SupportRoles IsNot Nothing Then e.View.Caption += " (" & _SupportRoles.ShortName & ")" End If End If End If End Sub Private Sub aSupportNavigationEnable_Execute(sender As System.Object, e As DevExpress.ExpressApp.Actions.PopupWindowShowActionExecuteEventArgs) Handles aSupportNavigationEnable.Execute Dim _ModelNavigation As ModelNavigation Dim _NavigationItemRole As NavigationItemRole Dim _ocur As IObjectSpace = View.ObjectSpace Dim _SupportRoles As SupportRoles For Each _SupportRoles In View.SelectedObjects For Each _ModelNavigation In e.PopupWindow.View.SelectedObjects _NavigationItemRole = _ocur.FindObject(Of NavigationItemRole)(CriteriaOperator.Parse("SupportRoles.Oid=? and ChoiceActionItemId=?", _SupportRoles.Oid, _ModelNavigation.Name)) If _NavigationItemRole IsNot Nothing Then _ocur.Delete(_NavigationItemRole) End If Next Next _ocur.CommitChanges() End Sub Private Sub aSupportNavigationDisable_CustomizePopupWindowParams(sender As Object, e As DevExpress.ExpressApp.Actions.CustomizePopupWindowParamsEventArgs) Handles aSupportNavigationDisable.CustomizePopupWindowParams Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace Dim _uow As New UnitOfWork(_onew.Session.DataLayer) Dim _MasterKey As Guid = SecuritySystem.CurrentUserId Dim _ModelNavigation_Collection As New XPCollection(Of ModelNavigation)(_uow, CriteriaOperator.Parse("MasterKey=?", _MasterKey)) _uow.Delete(_ModelNavigation_Collection) _uow.CommitChanges() If View.SelectedObjects.Count = 1 Then Dim _SupportRoles As SupportRoles = TryCast(View.SelectedObjects(0), SupportRoles) If _SupportRoles IsNot Nothing Then Dim _NavigationItemRole_Collection As New XPCollection(Of NavigationItemRole)(_onew.Session, CriteriaOperator.Parse("SupportRoles.Oid=?", _SupportRoles.Oid)) Dim _NavigationItemRole As NavigationItemRole Dim _ModelNavigation As ModelNavigation Dim _IModelNavigationItems As IModelNavigationItems Dim _IModelNavigationItem As IModelNavigationItem Dim _NavigationItems As IModelRootNavigationItems = DirectCast(Application.Model, IModelApplicationNavigationItems).NavigationItems _IModelNavigationItems = TryCast(_NavigationItems.Items, IModelNavigationItems) For Each _IModelNavigationItem In _IModelNavigationItems RecursiveAddModelNavigation(_uow, _MasterKey, Nothing, _IModelNavigationItem) Next _uow.CommitChanges() Dim _CS As CollectionSource = New CollectionSource(_onew, GetType(ModelNavigation)) _CS.BeginUpdateCriteria() _CS.Criteria.Add("Filter1", CriteriaOperator.Parse("MasterKey=?", _MasterKey)) _CS.EndUpdateCriteria() _CS.Sorting.Add(New SortProperty("Index", DB.SortingDirection.Ascending)) For Each _ModelNavigation In _CS.Collection For Each _NavigationItemRole In _NavigationItemRole_Collection If _NavigationItemRole.ChoiceActionItemId = _ModelNavigation.Name Then RecursiveDeny(_ModelNavigation) End If Next Next e.View = Application.CreateListView("ModelNavigation_ListView", _CS, False) If _SupportRoles IsNot Nothing Then e.View.Caption += " (" & _SupportRoles.ShortName & ")" End If End If End If End Sub Private Sub aSupportNavigationDisable_Execute(sender As System.Object, e As DevExpress.ExpressApp.Actions.PopupWindowShowActionExecuteEventArgs) Handles aSupportNavigationDisable.Execute Dim _ModelNavigation As ModelNavigation Dim _NavigationItemRole As NavigationItemRole Dim _ocur As IObjectSpace = View.ObjectSpace Dim _SupportRoles As SupportRoles For Each _SupportRoles In View.SelectedObjects For Each _ModelNavigation In e.PopupWindow.View.SelectedObjects _NavigationItemRole = _ocur.FindObject(Of NavigationItemRole)(CriteriaOperator.Parse("SupportRoles.Oid=? and ChoiceActionItemId=?", _SupportRoles.Oid, _ModelNavigation.Name)) If _NavigationItemRole Is Nothing Then _NavigationItemRole = _ocur.CreateObject(Of NavigationItemRole)() _NavigationItemRole.SupportRoles = _ocur.GetObject(_SupportRoles) _NavigationItemRole.ChoiceActionItemId = _ModelNavigation.Name End If Next Next _ocur.CommitChanges() End Sub Sub RecursiveAddModelNavigation(_uow As UnitOfWork, _MasterKey As Guid, _ModelNavigationParent As ModelNavigation, _IModelNavigationItem As IModelNavigationItem) Dim _ModelNavigation As ModelNavigation Dim _IModelNavigationItem_Child As IModelNavigationItem _ModelNavigation = New ModelNavigation(_uow) _ModelNavigation.Parent = _ModelNavigationParent _ModelNavigation.Name = _IModelNavigationItem.Id _ModelNavigation.Navigation_Caption = _IModelNavigationItem.Caption _ModelNavigation.Navigation_ImageName = _IModelNavigationItem.ImageName _ModelNavigation.MasterKey = _MasterKey _uow.CommitChanges() If _IModelNavigationItem.Items.Count > 0 Then For Each _IModelNavigationItem_Child In _IModelNavigationItem.Items RecursiveAddModelNavigation(_uow, _MasterKey, _ModelNavigation, _IModelNavigationItem_Child) Next End If End Sub Sub RecursiveDeny(_ModelNavigation As ModelNavigation) Dim _ModelNavigation_Children As ModelNavigation _ModelNavigation.Navigation_Enabled = False If _ModelNavigation.Children.Count > 0 Then For Each _ModelNavigation_Children In _ModelNavigation.Children RecursiveDeny(_ModelNavigation_Children) Next End If End Sub End Class