public override void ReverseInit(object returnData) { base.ReverseInit(returnData); if (returnData is PublicacionModel) { PublicacionModel publicacionSeleccionada = returnData as PublicacionModel; BiografiaTimeLineModel nuevoTimeLine = new BiografiaTimeLineModel(publicacionSeleccionada); if (_timeLine == null) { _timeLine = new ObservableRangeCollection <BiografiaTimeLineModel>(); } BiografiaTimeLineModel biografiaVieja = _timeLine.Where(x => x.CodigoPublicacion == nuevoTimeLine.CodigoPublicacion).FirstOrDefault(); if (publicacionSeleccionada.FueBorrado) { if (biografiaVieja != null) { _timeLine.Remove(biografiaVieja); } } else { if (biografiaVieja != null) { int viejoIndice = _timeLine.IndexOf(biografiaVieja); _timeLine.Remove(biografiaVieja); RaisePropertyChanged("TimeLine"); _timeLine.Insert(viejoIndice, nuevoTimeLine); } else { _timeLine.Insert(0, nuevoTimeLine); } } RaisePropertyChanged("TimeLine"); } else if (returnData is ImagenEditorModel) { ImagenEditorModel imagenModel = returnData as ImagenEditorModel; if (imagenModel.EsImagenPerfil) { ImagenPerfil = imagenModel.Source; Persona.CodigoArchivoImagenPerfil = imagenModel.CodigoArchivoCreado; App.Persona.CodigoArchivoImagenPerfil = imagenModel.CodigoArchivoCreado; } else { ImagenBanner = imagenModel.Source; Persona.CodigoArchivoImagenBanner = imagenModel.CodigoArchivoCreado; App.Persona.CodigoArchivoImagenBanner = imagenModel.CodigoArchivoCreado; } } }
async Task CargarContactos(int skipIndex, int takeIndex, bool isRefresh = false) { if (Persona != null && !NoHayNadaMasParaCargarContactos) { List <BiografiaTimeLineModel> listaTimeLine = new List <BiografiaTimeLineModel>(); ContactosDTO contacto = new ContactosDTO { CodigoPersonaOwner = Persona.Consecutivo, SkipIndexBase = skipIndex, TakeIndexBase = takeIndex }; if (IsNotConnected) { return; } List <ContactosDTO> listaContactos = await _chatServices.ListarContactos(contacto); listaTimeLine = BiografiaTimeLineModel.CrearListaBiografiaTimeLine(listaContactos); if (listaTimeLine != null) { if (listaTimeLine.Count > 0) { if (_timeLine == null) { _timeLine = new ObservableRangeCollection <BiografiaTimeLineModel>(listaTimeLine); } else { _timeLine.AddRange(listaTimeLine); } NumeroContactosBuscados = listaContactos.Count; RaisePropertyChanged(nameof(TimeLine)); } else { NoHayNadaMasParaCargarContactos = listaTimeLine.Count <= 0; } } } }
async Task CargarItemsEnTimeLineSegunPerfil(int skipIndex, int takeIndex, bool isRefresh = false) { if (Persona != null && !NoHayNadaMasParaCargarPublicacion) { List <BiografiaTimeLineModel> listaTimeLine = new List <BiografiaTimeLineModel>(); if (Persona.TipoPerfil == TipoPerfil.Candidato && Persona.CandidatoDeLaPersona != null) { CandidatosVideosDTO candidatoVideo = new CandidatosVideosDTO { CodigoCandidato = Persona.CandidatoDeLaPersona.Consecutivo, SkipIndexBase = skipIndex, TakeIndexBase = takeIndex, ZonaHorariaGMTBase = _dateTimeHelper.DifferenceBetweenGMTAndLocalTimeZone }; if (isRefresh && LastRefresh != DateTime.MinValue) { candidatoVideo.FechaFiltroBase = LastRefresh; LastRefresh = DateTime.Now; } if (IsNotConnected) { return; } listaTimeLine = BiografiaTimeLineModel.CrearListaBiografiaTimeLine(await _candidatosServices.ListarCandidatosVideosDeUnCandidato(candidatoVideo)); } else if (Persona.TipoPerfil == TipoPerfil.Grupo && Persona.GrupoDeLaPersona != null) { BuscadorDTO grupoEvento = new BuscadorDTO { ConsecutivoPerfil = Persona.GrupoDeLaPersona.Consecutivo, SkipIndexBase = skipIndex, TakeIndexBase = takeIndex, ZonaHorariaGMTBase = _dateTimeHelper.DifferenceBetweenGMTAndLocalTimeZone }; if (isRefresh && LastRefresh != DateTime.MinValue) { grupoEvento.FechaFiltroBase = LastRefresh; LastRefresh = DateTime.Now; } if (IsNotConnected) { return; } listaTimeLine = BiografiaTimeLineModel.CrearListaBiografiaTimeLine(await _gruposServices.ListarEventosDeUnGrupo(grupoEvento)); } if (listaTimeLine != null) { if (listaTimeLine.Count > 0) { if (_timeLine == null) { _timeLine = new ObservableRangeCollection <BiografiaTimeLineModel>(listaTimeLine); } else { // Filtro para evitar tener publicaciones repetidas listaTimeLine = listaTimeLine.Where(x => !_timeLine.Any(y => y.CodigoPublicacion == x.CodigoPublicacion && y.TipoTimeLine == TipoItemTimeLine.Publicacion)).ToList(); if (isRefresh) { // Reverso la lista para mantener el orden listaTimeLine.Reverse(); foreach (var timeLine in listaTimeLine) { _timeLine.Insert(0, timeLine); } } else { _timeLine.AddRange(listaTimeLine); } } RaisePropertyChanged(nameof(TimeLine)); } else { NoHayNadaMasParaCargarPublicacion = listaTimeLine.Count <= 0 && !isRefresh; } } } }