Option Strict On
Option Explicit On

Namespace Nexamas.UI.Components.Governance

    Friend NotInheritable Class MASCheckBoxReadinessManifest
        Friend Sub New(hasInteractionPolicy As Boolean,
                       hasKeyboardToggle As Boolean,
                       hasPremiumGlyphGeometry As Boolean,
                       hasOfficialThemeSurfaceRoute As Boolean,
                       hasNoPublicApiLeak As Boolean)
            Me.HasInteractionPolicy = hasInteractionPolicy
            Me.HasKeyboardToggle = hasKeyboardToggle
            Me.HasPremiumGlyphGeometry = hasPremiumGlyphGeometry
            Me.HasOfficialThemeSurfaceRoute = hasOfficialThemeSurfaceRoute
            Me.HasNoPublicApiLeak = hasNoPublicApiLeak
        End Sub

        Friend ReadOnly Property HasInteractionPolicy As Boolean
        Friend ReadOnly Property HasKeyboardToggle As Boolean
        Friend ReadOnly Property HasPremiumGlyphGeometry As Boolean
        Friend ReadOnly Property HasOfficialThemeSurfaceRoute As Boolean
        Friend ReadOnly Property HasNoPublicApiLeak As Boolean

        Friend ReadOnly Property Status As MASCheckBoxReadinessStatus
            Get
                If Not HasInteractionPolicy Then Return MASCheckBoxReadinessStatus.BlockedByMissingInteractionPolicy
                If Not HasKeyboardToggle Then Return MASCheckBoxReadinessStatus.BlockedByMissingKeyboardToggle
                If Not HasPremiumGlyphGeometry Then Return MASCheckBoxReadinessStatus.BlockedByMissingPremiumGlyphGeometry
                If Not HasOfficialThemeSurfaceRoute Then Return MASCheckBoxReadinessStatus.BlockedByMissingOfficialThemeSurfaceRoute
                If Not HasNoPublicApiLeak Then Return MASCheckBoxReadinessStatus.BlockedByPublicApiLeak
                Return MASCheckBoxReadinessStatus.Ready
            End Get
        End Property

        Friend ReadOnly Property IsReady As Boolean
            Get
                Return Status = MASCheckBoxReadinessStatus.Ready
            End Get
        End Property

        Friend Shared Function CreateCurrent() As MASCheckBoxReadinessManifest
            Return New MASCheckBoxReadinessManifest(
                hasInteractionPolicy:=True,
                hasKeyboardToggle:=True,
                hasPremiumGlyphGeometry:=True,
                hasOfficialThemeSurfaceRoute:=True,
                hasNoPublicApiLeak:=True)
        End Function
    End Class

End Namespace
