using System.Collections.Generic;

namespace TeamsISO.App.WinUI.Models;

/// <summary>
/// Stand-in for the real ParticipantViewModel until the view-model bindings
/// migrate over from the WPF host. Lets the redesigned MainWindow render with
/// representative data so the visual design can be validated independently
/// of the engine layer. Removed in the view-model wiring commit.
/// </summary>
public sealed class MockParticipant
{
    public string DisplayName { get; init; } = "";
    public string Initials { get; init; } = "";
    public string SourceCodec { get; init; } = "MS Teams · 1920x1080 · 30fps";
    public string SignalState { get; init; } = "locked";  // locked | degraded | offline
    public string OutputName { get; init; } = "";
    public string IsoState { get; init; } = "OFF";        // LIVE | OFF | ERROR
    public double AudioLevel { get; init; } = 0.0;        // 0..1
    public bool IsActiveSpeaker { get; init; } = false;

    public static List<MockParticipant> Sample()
    {
        return new List<MockParticipant>
        {
            new()
            {
                DisplayName = "Maya Rodriguez", Initials = "MA",
                SourceCodec = "MS Teams · 1920x1080 · 30fps",
                SignalState = "locked", OutputName = "TEAMSISO_maya",
                IsoState = "LIVE", AudioLevel = 0.82, IsActiveSpeaker = true,
            },
            new()
            {
                DisplayName = "Daniel Chen", Initials = "DC",
                SourceCodec = "MS Teams · 1280x720 · 30fps",
                SignalState = "locked", OutputName = "TEAMSISO_daniel",
                IsoState = "LIVE", AudioLevel = 0.35,
            },
            new()
            {
                DisplayName = "Aicha Kone", Initials = "AK",
                SourceCodec = "MS Teams · 1920x1080 · 30fps",
                SignalState = "degraded", OutputName = "TEAMSISO_aicha",
                IsoState = "OFF", AudioLevel = 0.12,
            },
            new()
            {
                DisplayName = "Sam Park", Initials = "SP",
                SourceCodec = "MS Teams · 1920x1080 · 30fps",
                SignalState = "locked", OutputName = "TEAMSISO_sam",
                IsoState = "LIVE", AudioLevel = 0.48,
            },
        };
    }
}
