Option Strict On
Option Explicit On

Imports Nexamas.UI.Visualization

Namespace Nexamas.UI.Components

    Friend NotInheritable Class MASChartControlReadinessManifest

        Friend Sub New(status As MASChartControlReadinessStatus,
                       hasPublicControl As Boolean,
                       consumesChartFoundation As Boolean,
                       hasRenderer As Boolean,
                       hasArchitectureRegistration As Boolean,
                       hasNoParallelChartSystem As Boolean)
            Me.Status = status
            Me.HasPublicControl = hasPublicControl
            Me.ConsumesChartFoundation = consumesChartFoundation
            Me.HasRenderer = hasRenderer
            Me.HasArchitectureRegistration = hasArchitectureRegistration
            Me.HasNoParallelChartSystem = hasNoParallelChartSystem
        End Sub

        Friend ReadOnly Property Status As MASChartControlReadinessStatus
        Friend ReadOnly Property HasPublicControl As Boolean
        Friend ReadOnly Property ConsumesChartFoundation As Boolean
        Friend ReadOnly Property HasRenderer As Boolean
        Friend ReadOnly Property HasArchitectureRegistration As Boolean
        Friend ReadOnly Property HasNoParallelChartSystem As Boolean

        Friend ReadOnly Property IsReady As Boolean
            Get
                Return Status = MASChartControlReadinessStatus.Ready AndAlso
                       HasPublicControl AndAlso
                       ConsumesChartFoundation AndAlso
                       HasRenderer AndAlso
                       HasArchitectureRegistration AndAlso
                       HasNoParallelChartSystem
            End Get
        End Property

        Friend Shared Function CreateCurrent() As MASChartControlReadinessManifest
            Dim foundation As MASChartFoundationSnapshot = MASChartFoundationBuilder.BuildBasicDashboardFoundationSnapshot()
            Dim foundationReady As Boolean = foundation IsNot Nothing AndAlso foundation.ReadyForDashboardVisualizationFoundation

            Return New MASChartControlReadinessManifest(
                If(foundationReady, MASChartControlReadinessStatus.Ready, MASChartControlReadinessStatus.MissingFoundation),
                hasPublicControl:=True,
                consumesChartFoundation:=foundationReady,
                hasRenderer:=True,
                hasArchitectureRegistration:=True,
                hasNoParallelChartSystem:=True)
        End Function

    End Class

End Namespace
