namespace RutasDBUS.Modelos.Importacion;

public sealed class ArchivoImportacionDbus
{
    public string RutaZip { get; init; } = "";
    public DateTime FechaArchivoUtc { get; init; }
    public IReadOnlyList<FilaCalendarioCsv> Calendarios { get; init; } = Array.Empty<FilaCalendarioCsv>();
    public IReadOnlyList<FilaCalendarioExcepcionCsv> CalendarioExcepciones { get; init; } = Array.Empty<FilaCalendarioExcepcionCsv>();
    public IReadOnlyList<FilaExpedicionCsv> Expediciones { get; init; } = Array.Empty<FilaExpedicionCsv>();
    public IReadOnlyList<FilaOperadorCsv> Operadores { get; init; } = Array.Empty<FilaOperadorCsv>();
    public IReadOnlyList<FilaParadaCsv> Paradas { get; init; } = Array.Empty<FilaParadaCsv>();
    public IReadOnlyList<FilaPatronCsv> Patrones { get; init; } = Array.Empty<FilaPatronCsv>();
    public IReadOnlyList<FilaRutaCsv> Rutas { get; init; } = Array.Empty<FilaRutaCsv>();
    public IReadOnlyList<FilaTarifaCsv> Tarifas { get; init; } = Array.Empty<FilaTarifaCsv>();
    public IReadOnlyList<FilaTiempoParadaCsv> TiemposParada { get; init; } = Array.Empty<FilaTiempoParadaCsv>();
    public IReadOnlyList<FilaTiempoRealCsv> TiemposReales { get; init; } = Array.Empty<FilaTiempoRealCsv>();
    public IReadOnlyList<FilaTransbordoCsv> Transbordos { get; init; } = Array.Empty<FilaTransbordoCsv>();
    public IReadOnlyList<FilaVehiculoCsv> Vehiculos { get; init; } = Array.Empty<FilaVehiculoCsv>();

    public IReadOnlyDictionary<int, FilaParadaCsv> ParadasPorId { get; init; } = new Dictionary<int, FilaParadaCsv>();
    public IReadOnlyDictionary<string, FilaRutaCsv> RutasPorId { get; init; } =
        new Dictionary<string, FilaRutaCsv>(StringComparer.OrdinalIgnoreCase);
    public IReadOnlyDictionary<string, FilaExpedicionCsv> ExpedicionesPorId { get; init; } =
        new Dictionary<string, FilaExpedicionCsv>(StringComparer.OrdinalIgnoreCase);
    public IReadOnlyDictionary<string, List<FilaTiempoParadaCsv>> TiemposParadaPorExpedicion { get; init; } =
        new Dictionary<string, List<FilaTiempoParadaCsv>>(StringComparer.OrdinalIgnoreCase);
    public IReadOnlyDictionary<string, List<FilaPatronCsv>> PatronesPorId { get; init; } =
        new Dictionary<string, List<FilaPatronCsv>>(StringComparer.OrdinalIgnoreCase);
    public IReadOnlyDictionary<string, List<FilaTransbordoCsv>> TransbordosPorRuta { get; init; } =
        new Dictionary<string, List<FilaTransbordoCsv>>(StringComparer.OrdinalIgnoreCase);
}
