Option Strict On
Option Explicit On

Imports System.Collections.Generic
Imports System.Globalization

Namespace Nexamas.UI.Localization

    ''' <summary>
    ''' Internal formatter that builds deterministic culture preview samples for the Phase 6 snapshot.
    ''' </summary>
    ''' <remarks>
    ''' Formatting is isolated here so Nexamas UI has a single product-layer owner for culture preview
    ''' facts. The builder does not alter thread culture or application culture.
    ''' </remarks>
    Friend NotInheritable Class MASLocalizationFormatPreviewBuilder
        Private Sub New()
        End Sub

        Friend Shared Function CreateSamples(cultures As IEnumerable(Of MASLocalizationCultureEntry)) As IReadOnlyList(Of MASLocalizationFormatSample)
            Dim result As New List(Of MASLocalizationFormatSample)()
            If cultures Is Nothing Then Return result.AsReadOnly()

            Dim sampleNumber As Decimal = 12345.67D
            Dim sampleCurrency As Decimal = 1234.5D
            Dim samplePercent As Double = 0.275R
            Dim sampleDate As New DateTime(2026, 6, 13)

            For Each entry As MASLocalizationCultureEntry In cultures
                If entry Is Nothing OrElse String.IsNullOrWhiteSpace(entry.CultureName) Then Continue For
                Dim culture As CultureInfo = CultureInfo.GetCultureInfo(entry.CultureName)
                result.Add(New MASLocalizationFormatSample(
                    cultureName:=entry.CultureName,
                    numberSample:=sampleNumber.ToString("N2", culture),
                    currencySample:=sampleCurrency.ToString("C", culture),
                    percentSample:=samplePercent.ToString("P0", culture),
                    dateSample:=sampleDate.ToString("d", culture)))
            Next

            Return result.AsReadOnly()
        End Function
    End Class

End Namespace
