Ejemplo n.º 1
0
        public async Task <List <TimeLineNoticias> > ListarTimeLine(BuscadorDTO buscador)
        {
            using (SportsGoEntities context = new SportsGoEntities(false))
            {
                NoticiasRepository       noticiaRepo    = new NoticiasRepository(context);
                GruposRepository         grupoRepo      = new GruposRepository(context);
                AnunciantesRepository    anuncianteRepo = new AnunciantesRepository(context);
                DateTimeHelperNoPortable helper         = new DateTimeHelperNoPortable();

                if (buscador.FechaInicio != DateTime.MinValue)
                {
                    buscador.FechaInicio = helper.ConvertDateTimeFromAnotherTimeZone(buscador.ZonaHorariaGMTBase, helper.DifferenceBetweenGMTAndLocalTimeZone, buscador.FechaInicio);
                }

                List <GruposEventosDTO> listaEventos = await grupoRepo.ListarEventos(buscador, true);

                List <AnunciosDTO> listaAnuncios = await anuncianteRepo.ListarAnuncios(buscador, true);

                List <NoticiasDTO> listaNoticias = await noticiaRepo.ListarNoticiasNoNotificaciones(buscador, true);

                List <TimeLineNoticias> listaTimeLine = TimeLineNoticias.CrearListaTimeLine(listaEventos, listaAnuncios, listaNoticias);

                List <int> listaCodigoAnunciosConsultados = listaAnuncios.Select(x => x.Consecutivo).ToList();

                if (!buscador.EsConsultaEnLaApp && buscador.SkipIndexBase == 0)
                {
                    List <AnunciosDTO> listaAnunciosLaterales = await anuncianteRepo.ListarAnunciosLaterales(buscador);

                    List <TimeLineNoticias> listaAnunciosLateralesParaAdicionar = TimeLineNoticias.CrearListaTimeLine(null, listaAnunciosLaterales, null);

                    listaCodigoAnunciosConsultados.AddRange(listaAnunciosLaterales.Select(x => x.Consecutivo));

                    if (listaAnunciosLateralesParaAdicionar != null && listaAnunciosLateralesParaAdicionar.Count > 0)
                    {
                        listaTimeLine.AddRange(listaAnunciosLateralesParaAdicionar);
                    }
                }

                if (listaCodigoAnunciosConsultados.Count > 0)
                {
                    await anuncianteRepo.ModificarControlAnuncio(listaCodigoAnunciosConsultados);
                }

                if (listaTimeLine != null && listaTimeLine.Count > 0)
                {
                    foreach (var timeLine in listaTimeLine)
                    {
                        timeLine.FechaPublicacion = helper.ConvertDateTimeFromAnotherTimeZone(buscador.ZonaHorariaGMTBase, helper.DifferenceBetweenGMTAndLocalTimeZone, timeLine.FechaPublicacion);
                    }
                }

                return(listaTimeLine);
            }
        }