Option Strict On
Option Explicit On

Namespace Nexamas.UI.Components.Governance

    Friend NotInheritable Class MASRadioButtonReadinessManifest
        Friend Sub New(hasGroupPolicy As Boolean,
                       hasKeyboardPeerNavigation As Boolean,
                       hasPremiumDotGeometry As Boolean,
                       hasOfficialThemeSurfaceRoute As Boolean,
                       hasNoPublicApiLeak As Boolean)
            Me.HasGroupPolicy = hasGroupPolicy
            Me.HasKeyboardPeerNavigation = hasKeyboardPeerNavigation
            Me.HasPremiumDotGeometry = hasPremiumDotGeometry
            Me.HasOfficialThemeSurfaceRoute = hasOfficialThemeSurfaceRoute
            Me.HasNoPublicApiLeak = hasNoPublicApiLeak
        End Sub

        Friend ReadOnly Property HasGroupPolicy As Boolean
        Friend ReadOnly Property HasKeyboardPeerNavigation As Boolean
        Friend ReadOnly Property HasPremiumDotGeometry As Boolean
        Friend ReadOnly Property HasOfficialThemeSurfaceRoute As Boolean
        Friend ReadOnly Property HasNoPublicApiLeak As Boolean

        Friend ReadOnly Property Status As MASRadioButtonReadinessStatus
            Get
                If Not HasGroupPolicy Then Return MASRadioButtonReadinessStatus.BlockedByMissingGroupPolicy
                If Not HasKeyboardPeerNavigation Then Return MASRadioButtonReadinessStatus.BlockedByMissingKeyboardPeerNavigation
                If Not HasPremiumDotGeometry Then Return MASRadioButtonReadinessStatus.BlockedByMissingPremiumDotGeometry
                If Not HasOfficialThemeSurfaceRoute Then Return MASRadioButtonReadinessStatus.BlockedByMissingOfficialThemeSurfaceRoute
                If Not HasNoPublicApiLeak Then Return MASRadioButtonReadinessStatus.BlockedByPublicApiLeak
                Return MASRadioButtonReadinessStatus.Ready
            End Get
        End Property

        Friend ReadOnly Property IsReady As Boolean
            Get
                Return Status = MASRadioButtonReadinessStatus.Ready
            End Get
        End Property

        Friend Shared Function CreateCurrent() As MASRadioButtonReadinessManifest
            Return New MASRadioButtonReadinessManifest(
                hasGroupPolicy:=True,
                hasKeyboardPeerNavigation:=True,
                hasPremiumDotGeometry:=True,
                hasOfficialThemeSurfaceRoute:=True,
                hasNoPublicApiLeak:=True)
        End Function
    End Class

End Namespace
