Exemplo n.º 1
0
        public async Task <JsonResult> GetAllChats(ChatsDTO chat)
        {
            Result <ChatsDTO> result = new Result <ChatsDTO>();

            try
            {
                ChatsServices chatService = new ChatsServices();
                chat.CodigoPersonaOwner = UserLoggedIn().PersonaDelUsuario.Consecutivo;
                result.list             = await chatService.ListarChats(chat);

                if (result.list == null)
                {
                    return(Json(Helper.returnErrorList(UserLoggedIn().PersonaDelUsuario.CodigoIdioma), JsonRequestBehavior.AllowGet));
                }

                return(Json(result, JsonRequestBehavior.AllowGet));
            }
            catch (Exception)
            {
                return(Json(Helper.returnErrorList(UserLoggedIn().PersonaDelUsuario.CodigoIdioma), JsonRequestBehavior.AllowGet));
            }
        }
Exemplo n.º 2
0
        async Task CargarConversaciones(int skipIndex, int takeIndex, bool isRefresh = false, bool aumentarBadge = false)
        {
            if (!NoHayNadaMasParaCargar || isRefresh)
            {
                ChatsDTO buscador = new ChatsDTO
                {
                    CodigoPersonaOwner = App.Persona.Consecutivo,
                    SkipIndexBase      = skipIndex,
                    TakeIndexBase      = takeIndex,
                    ZonaHorariaGMTBase = _dateTimeHelper.DifferenceBetweenGMTAndLocalTimeZone
                };

                if (isRefresh && LastRefresh != DateTime.MinValue)
                {
                    buscador.FechaFiltroBase = LastRefresh;
                    LastRefresh = DateTime.Now;
                }

                if (IsNotConnected)
                {
                    return;
                }
                List <ChatsDTO> listaChats = await _chatsServices.ListarChats(buscador);

                if (listaChats != null)
                {
                    if (listaChats.Count > 0)
                    {
                        if (isRefresh && buscador.FechaFiltroBase != DateTime.MinValue)
                        {
                            foreach (ChatsDTO chat in listaChats)
                            {
                                if (chat.UltimoMensaje != null && chat.UltimoMensaje.FechaMensaje > buscador.FechaFiltroBase && !chat.UltimoMensaje.UltimoMensajeEsMio)
                                {
                                    chat.EsNuevoMensaje = true;
                                }
                            }
                        }

                        using (await _lockeable.LockAsync())
                        {
                            if (_chats == null)
                            {
                                _chats = new ObservableRangeCollection <ChatsDTO>(listaChats);
                            }
                            else
                            {
                                foreach (ChatsDTO chat in listaChats)
                                {
                                    ChatsDTO chatExistente = _chats.Where(x => x.Consecutivo == chat.Consecutivo).FirstOrDefault();

                                    if (chatExistente != null)
                                    {
                                        _chats.Remove(chatExistente);
                                    }

                                    _chats.Add(chat);
                                }
                            }

                            if (aumentarBadge)
                            {
                                App.InteractuarValorBadgeNotificacion(listaChats.Count);
                            }
                        }

                        RaisePropertyChanged("Chats");
                    }
                    else
                    {
                        NoHayNadaMasParaCargar = listaChats.Count <= 0 && !isRefresh;
                    }
                }
            }
        }