protected virtual List <HistCatalogoModel> FillHistCatalogoList(IDataReader reader, IEnumerable <SerieModel> seriesList, bool limitarStrings)
        {
            List <HistCatalogoModel> result = new List <HistCatalogoModel>();

            while (reader.Read())
            {
                int origen = 0;
#if DEBUG
                origen = (int)reader.GetInt64(reader.GetOrdinal("Hist"));
#else
                origen = (int)reader.GetInt32(reader.GetOrdinal("Hist")); //en la computadora de desarrollo, el mysql, devuelve int64, pero en el servidor Plesk del host, devuelve int32
#endif
                HistCatalogoModel nc = new HistCatalogoModel();
                nc.Fill(reader, limitarStrings);
                if (seriesList.Count() > 0)
                {
                    nc.SeriesNombre = seriesList.FirstOrDefault(sm => sm.ID == nc.IdSerie.GetValueOrDefault(0))?.Nombre;
                }
                nc.Origen = origen == 0 ? (byte)0 : (byte)2;
                result.Add(nc);
            }
            return(result);
        }
        public virtual CatalogoModel GetCatalogo(QueryExpresion expr, Dictionary <string, object> parameters, bool paraEditar, byte includeHist, HttpContextBase context)
        {
            SeriesDataService ds   = new SeriesDataService();
            var         seriesList = ds.ObtenerSeries(null, null, context);
            IDataReader read;

            switch (includeHist)
            {
            case 0:     //sin hist
                read = DataConnection.Instance.ExecuteQuery(
                    string.Format(SqlResource.SqlCatalogoResource, expr?.ToString() ?? "1=1"),
                    parameters,
                    context, 0);
                if (read.Read())
                {
                    CatalogoModel nc = new CatalogoModel();
                    nc.Fill(read);
                    if (seriesList.Count() > 0)
                    {
                        nc.SeriesNombre = seriesList.FirstOrDefault(sm => sm.ID == nc.IdSerie.GetValueOrDefault(0))?.Nombre;
                    }
                    nc.EstablecerSignaturaPorDefecto();
                    nc.ListaMaterias = !paraEditar?this.ObtenerMateriasDeCatalogo(nc.ID, context) : null;

                    nc.ListaMateriasSeleccionables = paraEditar ? this.ObtenerMateriasSeleccionablesDeCatalogo(nc.ID, context) : null;
                    nc.ListaLugares = this.ObtenerLugaresDeCatalogo(nc.ID, context);
                    nc.Origen       = 0;
                    return(nc);
                }
                break;

            case 1:
                read = DataConnection.Instance.ExecuteQuery(
                    string.Format(SqlResource.SqlCatalogoAmbosResource, expr?.ToString() ?? "1=1"),
                    parameters,
                    context, 0);
                if (read.Read())
                {
                    int           origen = (int)read.GetInt64(read.GetOrdinal("Hist"));
                    CatalogoModel nc     = new CatalogoModel();
                    nc.Fill(read);
                    if (seriesList.Count() > 0)
                    {
                        nc.SeriesNombre = seriesList.FirstOrDefault(sm => sm.ID == nc.IdSerie.GetValueOrDefault(0))?.Nombre;
                    }
                    nc.EstablecerSignaturaPorDefecto();
                    nc.Origen = origen == 0 ? (byte)0 : (byte)2;
                    if (origen == 0)
                    {
                        nc.ListaMaterias = !paraEditar?this.ObtenerMateriasDeCatalogo(nc.ID, context) : null;

                        nc.ListaMateriasSeleccionables = paraEditar ? this.ObtenerMateriasSeleccionablesDeCatalogo(nc.ID, context) : null;
                        nc.ListaLugares = this.ObtenerLugaresDeCatalogo(nc.ID, context);
                    }
                    return(nc);
                }
                break;

            case 2:    //solo hist
                read = DataConnection.Instance.ExecuteQuery(
                    string.Format(SqlResource.SqlHistCatalogoResource, expr?.ToString() ?? "1=1"),
                    parameters,
                    context, 0);

                if (read.Read())
                {
                    HistCatalogoModel nc = new HistCatalogoModel();
                    nc.Fill(read);
                    if (seriesList.Count() > 0)
                    {
                        nc.SeriesNombre = seriesList.FirstOrDefault(sm => sm.ID == nc.IdSerie.GetValueOrDefault(0))?.Nombre;
                    }
                    if (string.IsNullOrEmpty(nc.Signatura))
                    {
                        nc.EstablecerSignaturaPorDefecto();
                    }
                    return(nc);
                }
                break;
            }
            return(null);
        }