Imports CharterDotCom.CommonEntities.Library.Enumerations

<Serializable()> _
Public Class BLArticleAbstract
    Implements IArticleAbstract

    Private m_id As String
    Private m_title As String
    Private m_description As String
    Private m_relatedArticles As Dictionary(Of String, IArticleIndex)

    Public Sub New(ByVal id As String, ByVal title As String, ByVal description As String, ByVal rArticles As Dictionary(Of String, IArticleIndex))
        m_id = id
        m_title = title
        m_description = description
        m_relatedArticles = rArticles
    End Sub

    Public ReadOnly Property ID() As String Implements IArticleAbstract.ID
        Get
            Return m_id
        End Get
    End Property

    Public ReadOnly Property Title() As String Implements IArticleAbstract.Title
        Get
            Return m_title
        End Get
    End Property

    Public ReadOnly Property Summary() As String Implements IArticleAbstract.Summary
        Get
            Return m_description
        End Get
    End Property

    Public ReadOnly Property RelatedArticles() As System.Collections.Generic.Dictionary(Of String, IArticleIndex) Implements IArticleAbstract.RelatedArticles
        Get
            Return m_relatedArticles
        End Get
    End Property

End Class

<Serializable()> _
Public Class BLArticleIndex
    Implements IArticleIndex

    Private m_id As String
    Private m_category As ArticleCategory
    Private m_title As String
    Private m_type As ArticleType

    Public Sub New(ByVal id As String, ByVal title As String, ByVal category As ArticleCategory, ByVal type As ArticleType)
        m_id = id
        m_title = title
        m_category = category
        m_type = type
    End Sub

    Public ReadOnly Property ID() As String Implements IArticleIndex.ID
        Get
            Return m_id
        End Get
    End Property

    Public ReadOnly Property Category() As ArticleCategory Implements IArticleIndex.Category
        Get
            Return m_category
        End Get
    End Property

    Public ReadOnly Property Title() As String Implements IArticleIndex.Title
        Get
            Return m_title
        End Get
    End Property

    Public ReadOnly Property Type() As ArticleType Implements IArticleIndex.Type
        Get
            Return m_type
        End Get
    End Property

End Class

<Serializable()> _
Public Class BLArticleFolder
    Implements IArticleFolder

    Private m_category As ArticleCategory
    Private m_id As String
    Private m_subFolders As List(Of IArticleFolder.IArticleSubFolder)
    Private m_title As String

    Public Sub New(ByVal id As String, ByVal title As String, ByVal category As ArticleCategory, ByVal subFolders As List(Of IArticleFolder.IArticleSubFolder))
        m_id = id
        m_title = title
        m_category = category
        m_subFolders = subFolders
    End Sub

    Public ReadOnly Property ID() As String Implements IArticleFolder.ID
        Get
            Return m_id
        End Get
    End Property

    Public ReadOnly Property Title() As String Implements IArticleFolder.Title
        Get
            Return m_title
        End Get
    End Property

    Public ReadOnly Property Category() As ArticleCategory Implements IArticleFolder.Category
        Get
            Return m_category
        End Get
    End Property


    Public ReadOnly Property SubFolders() As System.Collections.Generic.List(Of IArticleFolder.IArticleSubFolder) Implements IArticleFolder.SubFolders
        Get
            Return m_subFolders
        End Get
    End Property

    <Serializable()> _
    Public Class BLArticleSubFolder
        Implements IArticleFolder.IArticleSubFolder

        Private m_id As String
        Private m_subFolders As List(Of IArticleFolder.IArticleSubFolder)
        Private m_title As String

        Public Sub New(ByVal id As String, ByVal title As String, ByVal subFolders As List(Of IArticleFolder.IArticleSubFolder))
            m_id = id
            m_title = title
            m_subFolders = subFolders
        End Sub

        Public ReadOnly Property ID() As String Implements IArticleFolder.IArticleSubFolder.ID
            Get
                Return m_id
            End Get
        End Property

        Public ReadOnly Property SubFolders() As System.Collections.Generic.List(Of IArticleFolder.IArticleSubFolder) Implements IArticleFolder.IArticleSubFolder.SubFolders
            Get
                Return m_subFolders
            End Get
        End Property

        Public ReadOnly Property Title() As String Implements IArticleFolder.IArticleSubFolder.Title
            Get
                Return m_title
            End Get
        End Property

    End Class

End Class

<Serializable()> _
Public Class BLBrowserSupportArticle
    Implements IBrowserSupportArticle

    Private m_parentfolders As List(Of IArticleFolder)
    Private m_subfolders As List(Of IArticleFolder)
    Private m_indexes As List(Of IArticleIndex)

    Public Sub New(ByVal parentFolders As List(Of IArticleFolder), ByVal subFolders As List(Of IArticleFolder), ByVal indexes As List(Of IArticleIndex))
        m_parentfolders = parentFolders
        m_subfolders = subFolders
        m_indexes = indexes
    End Sub

    Public ReadOnly Property ParentFolders() As System.Collections.Generic.List(Of IArticleFolder) Implements IBrowserSupportArticle.ParentFolders
        Get
            Return m_parentfolders
        End Get
    End Property

    Public ReadOnly Property SubFolders() As System.Collections.Generic.List(Of IArticleFolder) Implements IBrowserSupportArticle.SubFolders
        Get
            Return m_subfolders
        End Get
    End Property

    Public ReadOnly Property Indexes() As System.Collections.Generic.List(Of IArticleIndex) Implements IBrowserSupportArticle.Indexes
        Get
            Return m_indexes
        End Get
    End Property

End Class
