Imports System Imports System.ComponentModel Imports DevExpress.Xpo Imports DevExpress.Data.Filtering Imports DevExpress.ExpressApp Imports DevExpress.Persistent.Base Imports DevExpress.Persistent.BaseImpl Imports DevExpress.Persistent.Validation _ _ _ Public Class Technologies Inherits BaseObject Private _MasterBusinessDirectory As BusinessDirectory Private _DocumentNumber As String Private _ShortName As String Private _Description As String Private _UserCreated As User Private _ObjectCreated As Date Private _TechnologiesParameters As TechnologiesParameters Public Sub New(ByVal session As Session) MyBase.New(session) End Sub Public Overrides Sub AfterConstruction() MyBase.AfterConstruction() End Sub Protected Overrides Sub OnSaving() MyBase.OnSaving() If Session.IsNewObject(Me) Then ObjectCreated = GetSQLTime(Session) UserCreated = Session.GetObjectByKey(Of User)(Session.GetKeyValue(SecuritySystem.CurrentUser)) End If If String.IsNullOrEmpty(DocumentNumber) Then DocumentNumber = TechnologiesParameters.NumberGenerator.GetNewNumber(TechnologiesParameters.NumberGenerator) End If End Sub Property MasterBusinessDirectory As BusinessDirectory Get Return _MasterBusinessDirectory End Get Set(value As BusinessDirectory) SetPropertyValue("MasterBusinessDirectory", _MasterBusinessDirectory, value) End Set End Property Property DocumentNumber As String Get Return _DocumentNumber End Get Set(value As String) SetPropertyValue("DocumentNumber", _DocumentNumber, value) End Set End Property _ Property ShortName As String Get Return _ShortName End Get Set(value As String) SetPropertyValue("ShortName", _ShortName, value) End Set End Property Property Description As String Get Return _Description End Get Set(value As String) SetPropertyValue("Description", _Description, value) End Set End Property _ Property UserCreated As User Get Return _UserCreated End Get Set(value As User) SetPropertyValue("UserCreated", _UserCreated, value) End Set End Property _ Property ObjectCreated As Date Get Return _ObjectCreated End Get Set(value As Date) SetPropertyValue("ObjectCreated", _ObjectCreated, value) End Set End Property _ Property TechnologiesParameters As TechnologiesParameters Get Return _TechnologiesParameters End Get Set(value As TechnologiesParameters) SetPropertyValue("TechnologiesParameters", _TechnologiesParameters, value) End Set End Property '---ReadOlny properties _ ReadOnly Property Products As XPCollection(Of Products) Get Dim _Products_Collection As New XPCollection(Of Products)(Session, CriteriaOperator.Parse("1=2")) Dim _TechnologiesProducts_Collection As New XPCollection(Of TechnologiesProducts)(Session, CriteriaOperator.Parse("Technologies=?", Me)) For Each _TechnologiesProducts As TechnologiesProducts In _TechnologiesProducts_Collection _Products_Collection.Add(_TechnologiesProducts.Products) Next Return _Products_Collection End Get End Property _ ReadOnly Property Services As XPCollection(Of Services) Get Dim _Services_Collection As New XPCollection(Of Services)(Session, CriteriaOperator.Parse("1=2")) Dim _TechnologiesServices_Collection As New XPCollection(Of TechnologiesServices)(Session, CriteriaOperator.Parse("Technologies=?", Me)) For Each _TechnologiesServices As TechnologiesServices In _TechnologiesServices_Collection _Services_Collection.Add(_TechnologiesServices.Services) Next Return _Services_Collection End Get End Property _ ReadOnly Property Customers As XPCollection(Of Customers) Get Dim _Customers_Collection As New XPCollection(Of Customers)(Session, CriteriaOperator.Parse("1=2")) Dim _TechnologiesCustomers_Collection As New XPCollection(Of TechnologiesCustomers)(Session, CriteriaOperator.Parse("Technologies=?", Me)) For Each _TechnologiesCustomers As TechnologiesCustomers In _TechnologiesCustomers_Collection _Customers_Collection.Add(_TechnologiesCustomers.Customers) Next Return _Customers_Collection End Get End Property _ ReadOnly Property Contacts As XPCollection(Of Contacts) Get Dim _Contacts_Collection As New XPCollection(Of Contacts)(Session, CriteriaOperator.Parse("1=2")) Dim _TechnologiesContacts_Collection As New XPCollection(Of TechnologiesContacts)(Session, CriteriaOperator.Parse("Technologies=?", Me)) For Each _TechnologiesContacts As TechnologiesContacts In _TechnologiesContacts_Collection _Contacts_Collection.Add(_TechnologiesContacts.Contacts) Next Return _Contacts_Collection End Get End Property _ ReadOnly Property Technologies_BusinessDirectory As XPCollection(Of BusinessDirectory) Get Dim _BusinessDirectory_Collection As New XPCollection(Of BusinessDirectory)(Session, CriteriaOperator.Parse("1=2")) For Each _ProductsElem As Products In Products If _ProductsElem.MasterBusinessDirectory IsNot Nothing Then If _ProductsElem.MasterBusinessDirectory.Children.Count > 0 Then _BusinessDirectory_Collection.Add(_ProductsElem.MasterBusinessDirectory) RecursiveBusinessDirectory(_BusinessDirectory_Collection, _ProductsElem.MasterBusinessDirectory.NestedBusinessDirectory) Else _BusinessDirectory_Collection.Add(_ProductsElem.MasterBusinessDirectory) End If End If If _ProductsElem.ProductGroups IsNot Nothing Then If _ProductsElem.ProductGroups.MasterBusinessDirectory IsNot Nothing Then If _ProductsElem.ProductGroups.MasterBusinessDirectory.Children.Count > 0 Then _BusinessDirectory_Collection.Add(_ProductsElem.ProductGroups.MasterBusinessDirectory) RecursiveBusinessDirectory(_BusinessDirectory_Collection, _ProductsElem.ProductGroups.MasterBusinessDirectory.NestedBusinessDirectory) Else _BusinessDirectory_Collection.Add(_ProductsElem.ProductGroups.MasterBusinessDirectory) End If End If End If Next For Each _ServicesElem As Services In Services If _ServicesElem.MasterBusinessDirectory IsNot Nothing Then If _ServicesElem.MasterBusinessDirectory.Children.Count > 0 Then _BusinessDirectory_Collection.Add(_ServicesElem.MasterBusinessDirectory) RecursiveBusinessDirectory(_BusinessDirectory_Collection, _ServicesElem.MasterBusinessDirectory.NestedBusinessDirectory) Else _BusinessDirectory_Collection.Add(_ServicesElem.MasterBusinessDirectory) End If End If Next If MasterBusinessDirectory IsNot Nothing Then If MasterBusinessDirectory.Children.Count > 0 Then _BusinessDirectory_Collection.Add(MasterBusinessDirectory) RecursiveBusinessDirectory(_BusinessDirectory_Collection, MasterBusinessDirectory.NestedBusinessDirectory) Else _BusinessDirectory_Collection.Add(MasterBusinessDirectory) End If End If Return _BusinessDirectory_Collection End Get End Property #Region "Other subs" Private Sub RecursiveBusinessDirectory(_BusinessDirectoryList As XPCollection(Of BusinessDirectory), _NestedBusinessDirectory As XPCollection(Of BusinessDirectory)) For Each _BusinessDirectory As BusinessDirectory In _NestedBusinessDirectory If _BusinessDirectory.Children.Count > 0 Then _BusinessDirectoryList.Add(_BusinessDirectory) RecursiveBusinessDirectory(_BusinessDirectoryList, _BusinessDirectory.NestedBusinessDirectory) Else _BusinessDirectoryList.Add(_BusinessDirectory) End If Next End Sub #End Region End Class