namespace adas_core.Domain.Models.AppSettings;

/// <summary>
/// Represents configuration or display settings for a list.
/// </summary>
public class ListSettings
{
    public ListSettingItem AltableOptionList { get; set; } = new()
    {
        ManualObservationName = "AltableOptionObs",
        AutoObservationName = []
    };

    public ListSettingItem AllergyList { get; set; } = new()
    {
        ManualObservationName = "AllergyObs",
        AutoObservationName = []
    };

    public ListSettingItem DestinationList { get; set; } = new()
    {
        ManualObservationName = "DestinationObs",
        AutoObservationName = []
    };

    public ListSettingItem DiagnosisList { get; set; } = new()
    {
        ManualObservationName = "DiagnosisObs",
        AutoObservationName = []
    };

    public ListSettingItem DischargeStatusList { get; set; } = new()
    {
        ManualObservationName = "DischargeStatusObs",
        AutoObservationName = []
    };

    public ListSettingItem DoctorList { get; set; } = new()
    {
        ManualObservationName = "DoctorObs",
        AutoObservationName = []
    };

    public ListSettingItem DoctorTypeList { get; set; } = new()
    {
        ManualObservationName = "DoctorTypeObs",
        AutoObservationName = []
    };

    public ListSettingItem InternalDestinationList { get; set; } = new()
    {
        ManualObservationName = "InternalDestinationObs",
        AutoObservationName = []
    };

    public ListSettingItem InsulationList { get; set; } = new()
    {
        ManualObservationName = "InsulationObs",
        AutoObservationName = []
    };

    public ListSettingItem LanguageBarrierList { get; set; } = new()
    {
        ManualObservationName = "LanguageBarrierObs",
        AutoObservationName = []
    };

    public ListSettingItem PassiveSittingList { get; set; } = new()
    {
        ManualObservationName = "PassiveSittingObs",
        AutoObservationName = []
    };
    public ListSettingItem GenericList { get; set; } = new()
    {
        ManualObservationName = "GenericObs",
        AutoObservationName = []
    };

    public ListSettingItem MobilityOptionList { get; set; } = new()
    {
        ManualObservationName = "MobilityOptionObs",
        AutoObservationName = []
    };

    public ListSettingItem OriginList { get; set; } = new()
    {
        ManualObservationName = "OriginObs",
        AutoObservationName = []
    };

    public ListSettingItem PatientStatusList { get; set; } = new()
    {
        ManualObservationName = "PatientStatusObs",
        AutoObservationName = []
    };

    public ListSettingItem ProcedureList { get; set; } = new()
    {
        ManualObservationName = "ProcedureObs",
        AutoObservationName = []
    };

    public ListSettingItem ServiceList { get; set; } = new()
    {
        ManualObservationName = "ServiceObs",
        AutoObservationName = []
    };

    public ListSettingItem TherapeuticCeilingList { get; set; } = new()
    {
        ManualObservationName = "TherapeuticCeilingObs",
        AutoObservationName = []
    };

    public ListSettingItem TreatmentList { get; set; } = new()
    {
        ManualObservationName = "TreatmentObs",
        AutoObservationName = []
    };

    public ListSettingItem VisitOptionList { get; set; } = new()
    {
        ManualObservationName = "VisitOptionObs",
        AutoObservationName = []
    };

    public ListSettingItem AccessControlList { get; set; } = new()
    {
        ManualObservationName = "AccessControlObs",
        AutoObservationName = []
    };

    public ListSettingItem TestList { get; set; } = new()
    {
        ManualObservationName = "TestObs",
        AutoObservationName = []
    };
}

/// <summary>
/// Represents a single item within a list-based setting configuration.
/// </summary>
public class ListSettingItem
{
    public string? ManualObservationName { get; set; }
    public List<string> AutoObservationName { get; set; } = [];
}