using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Media;

namespace TornadoAce_CJOnStyle.ViewModels
{
    public sealed partial class StatusCardViewModel : ObservableObject
    {
        private string metric = string.Empty;
        private string detail = string.Empty;

        public StatusCardViewModel(string label, string metric, string detail, Symbol icon, SolidColorBrush accentBrush)
        {
            Label = label;
            Metric = metric;
            Detail = detail;
            Icon = icon;
            AccentBrush = accentBrush;
        }

        public string Label { get; }

        public Symbol Icon { get; }

        public SolidColorBrush AccentBrush { get; }

        public string Metric
        {
            get => metric;
            set => SetProperty(ref metric, value);
        }

        public string Detail
        {
            get => detail;
            set => SetProperty(ref detail, value);
        }
    }

    public sealed record PipelineStepViewModel(
        string StepNumber,
        string Title,
        string SystemName,
        string Status,
        int Completion,
        SolidColorBrush AccentBrush);

    public sealed record FieldMappingViewModel(
        string CueSheetField,
        string SceneObject,
        string BindingRule,
        string Attribute);

    public sealed record IntegrationEndpointViewModel(
        string Name,
        string Endpoint,
        string Owner,
        string Status,
        SolidColorBrush StatusBrush)
    {
        public string OwnerAndStatus => $"{Owner} / {Status}";
    }

    public sealed record PocRequirementViewModel(
        string RequirementId,
        string Title,
        string Status,
        string Evidence,
        SolidColorBrush StatusBrush);

    public sealed record InspectionQueueItemViewModel(
        string ProgramTitle,
        string SceneName,
        string MatchRate,
        string Severity,
        string Decision,
        SolidColorBrush SeverityBrush);
}
