namespace RutasDBUS.Modelos.RedBus;

/// <summary>
/// Representa una línea de autobús con sus itinerarios.
/// </summary>
public class LineaBus
{
    /// <summary>Identificador original de la ruta en ruta.csv.</summary>
    public string IdRuta { get; set; } = "";

    /// <summary>Código interno de la línea.</summary>
    public string Codigo { get; set; } = "";

    /// <summary>Nombre descriptivo de la línea.</summary>
    public string Nombre { get; set; } = "";

    /// <summary>Color de fondo en formato ARGB (ej. FF0000FF).</summary>
    public string ColorArgb { get; set; } = "FF0000FF";

    /// <summary>Código del itinerario por defecto.</summary>
    public int CodigoItinerarioPorDefecto { get; set; }

    /// <summary>Lista de itinerarios definidos para esta línea.</summary>
    public List<Itinerario> Itinerarios { get; set; } = new();
}

/// <summary>Itinerario de una línea (por ejemplo ida / vuelta).</summary>
public class Itinerario
{
    /// <summary>Código interno del itinerario.</summary>
    public int Codigo { get; set; }

    /// <summary>Sentidos configurados dentro de este itinerario.</summary>
    public List<Sentido> Sentidos { get; set; } = new();
}

/// <summary>Sentido de un itinerario (A→B, B→A, etc.).</summary>
public class Sentido
{
    /// <summary>Código del sentido.</summary>
    public string Codigo { get; set; } = "";

    /// <summary>Variantes existentes en este sentido.</summary>
    public List<Variante> Variantes { get; set; } = new();
}

/// <summary>
/// Variante de un sentido, definida por la secuencia de trayectos que recorre.
/// </summary>
public class Variante
{
    /// <summary>Código interno de la variante.</summary>
    public int Codigo { get; set; }

    /// <summary>
    /// Identificadores de trayectos que se recorren en esta variante, en orden.
    /// </summary>
    public List<int> IdsTrayectos { get; set; } = new();
}
