async Task CargarItemsNotificaciones(int skipIndex, int takeIndex, bool isRefresh = false, bool aumentarBadge = false) { if (App.Persona != null && App.Usuario != null && (!NoHayNadaMasParaCargar || isRefresh)) { BuscadorDTO buscador = new BuscadorDTO { IdiomaBase = App.IdiomaPersona, ConsecutivoPersona = App.Persona.Consecutivo, TipoDePerfil = App.Persona.TipoPerfil, CodigoPlanUsuario = App.Usuario.CodigoPlanUsuario, SkipIndexBase = skipIndex, TakeIndexBase = takeIndex, ZonaHorariaGMTBase = _dateTimeHelper.DifferenceBetweenGMTAndLocalTimeZone }; if (isRefresh && LastRefresh != DateTime.MinValue) { buscador.FechaFiltroBase = LastRefresh; LastRefresh = DateTime.Now; } if (IsNotConnected) { return; } List <TimeLineNotificaciones> listaTimeLine = await _noticiasService.ListaTimeLineNotificaciones(buscador); if (listaTimeLine != null) { if (listaTimeLine.Count > 0) { listaTimeLine = BuildearNotificacionesTraducidas(listaTimeLine); using (await _lockeable.LockAsync()) { if (TimeLine == null) { TimeLine = new ObservableRangeCollection <TimeLineNotificaciones>(listaTimeLine); } else { if (isRefresh) { // Reverso la lista para mantener el orden listaTimeLine.Reverse(); foreach (var timeLine in listaTimeLine) { if (timeLine.CreacionNotificacion > buscador.FechaFiltroBase) { timeLine.EsNuevoMensaje = true; } TimeLine.Insert(0, timeLine); } } else { TimeLine.AddRange(listaTimeLine); } } if (aumentarBadge) { App.InteractuarValorBadgeNotificacion(listaTimeLine.Count); } } } else { NoHayNadaMasParaCargar = listaTimeLine.Count <= 0 && !isRefresh; } } } }
async Task CargarItemsTimeLine(int skipIndex, int takeIndex, bool isRefresh = false) { if (!NoHayNadaMasParaCargar || isRefresh) { BuscadorDTO buscador = new BuscadorDTO { IdiomaBase = App.IdiomaPersona, SkipIndexBase = skipIndex, TakeIndexBase = takeIndex, EsConsultaEnLaApp = true, //PaisesParaBuscar = new List<int> { App.Persona.CodigoPais }, //CategoriasParaBuscar = CategoriasDelPerfil(App.Persona), ZonaHorariaGMTBase = _dateTimeHelper.DifferenceBetweenGMTAndLocalTimeZone }; if (isRefresh && LastRefresh != DateTime.MinValue) { buscador.FechaInicio = LastRefresh; LastRefresh = DateTime.Now; } if (IsNotConnected) { return; } List <TimeLineNoticias> listaTimeLine = await _noticiasServices.ListarTimeLine(buscador); if (listaTimeLine != null) { if (listaTimeLine.Count > 0) { if (TimeLine == null) { TimeLine = new ObservableRangeCollection <TimeLineNoticias>(listaTimeLine); } else { // Filtro para evitar tener publicaciones repetidas listaTimeLine = listaTimeLine.Where(x => !TimeLine.Any(y => y.TipoPublicacion == x.TipoPublicacion && y.ConsecutivoPublicacion == x.ConsecutivoPublicacion)).ToList(); if (isRefresh) { // Reverso la lista para mantener el orden listaTimeLine.Reverse(); foreach (var timeLine in listaTimeLine) { TimeLine.Insert(0, timeLine); } } else { if (listaTimeLine.Count <= 0) { NoHayNadaMasParaCargar = true; } else { TimeLine.AddRange(listaTimeLine); } } } } else { NoHayNadaMasParaCargar = listaTimeLine.Count <= 0 && !isRefresh; } } } }