using RutasDBUS.Modelos.RedBus;

namespace RutasDBUS.Modelos.Planificacion;

public sealed class AlternativaRuta
{
    public bool EsSoloAPie { get; set; }
    public string ProveedorRuta { get; set; } = "";

    public double[,]? LineaSoloAPie { get; set; }
    public double DistanciaSoloAPie { get; set; }
    public double DuracionSoloAPie { get; set; }

    public Parada OrigenParada { get; set; } = default!;
    public Parada DestinoParada { get; set; } = default!;
    public RutaBusAlternativa? AlternativaBus { get; set; }

    public double DistanciaPieInicioAprox { get; set; }
    public double DistanciaPieTransbordosAprox { get; set; }
    public double DistanciaPieFinAprox { get; set; }
    public double DistanciaPieTotalAprox =>
        DistanciaPieInicioAprox + DistanciaPieTransbordosAprox + DistanciaPieFinAprox;
    public List<double> DistanciasPiePorTramoAprox { get; set; } = new();

    public List<double[,]> LineasPieCalculoElevacion { get; set; } = new();
    public double EsfuerzoExtraPendienteMetros { get; set; }

    public double TiempoPieInicio { get; set; }
    public double TiempoPieFin { get; set; }
    public double TiempoEsperaInicialSegundos { get; set; }
    public double TiempoEsperaTransbordosSegundos { get; set; }
    public double TiempoEsperaTotalSegundos =>
        TiempoEsperaInicialSegundos + TiempoEsperaTransbordosSegundos;
    public bool UsaHorariosReales { get; set; }
    public bool HorarioCompletoDisponible { get; set; }

    public double DuracionTotalAproxSegundos { get; set; }
    public string Etiqueta { get; set; } = "";
    public int NumeroTransbordosReales { get; set; }

    public double PuntuacionCoste { get; set; }
}
