Exemplo n.º 1
0
        public async Task <object> MensagensNaoLidas()
        {
            try
            {
                var _u = await _context.Users.FirstOrDefaultAsync(x => x.UserName == User.Identity.Name);

                var _retorno = new List <object>();

                var _mensNaoLidas = _context
                                    .tblHubConversas
                                    .Where(x => x.Para == _u.Id && !x.Lida)
                                    .ToList();

                var _agrupadoRecebido = _context
                                        .tblHubConversas
                                        .Where(x => x.Para == _u.Id && !x.Lida)
                                        .GroupBy(e => new
                {
                    e.De,
                    e.DeCnxId,
                    e.Para,
                    e.DTHR,
                    e.Id,
                    e.Lida,
                    e.Mensagem,
                    e.ParaCnxId
                })
                                        .Select(g => g.First())
                                        .OrderByDescending(x => x.DTHR)
                                        .Distinct(d => d.De);

                foreach (var item in _agrupadoRecebido)
                {
                    var _ude = _context.Users.FirstOrDefault(x => x.Id == item.De);
                    _retorno.Add(new
                    {
                        item.Id,
                        dthr = VerificadoresRetornos.TemposAtras(item.DTHR),
                        item.De,
                        de_nome     = _ude.Nome + " " + _ude.Sobrenome,
                        de_avatar   = _ude.AvatarUsuario,
                        menscortada = item.Mensagem.Length > 80 ? item.Mensagem.Substring(0, 80) + " ..." : item.Mensagem,
                        mens        = item.Mensagem,
                        lida        = !item.Lida ? 0 : 1
                    });
                }

                return(new
                {
                    status = "ok",
                    dados = _retorno
                });
            }
            catch (Exception) { }

            return(new { status = "erro", dados = "" });
        }
Exemplo n.º 2
0
        public async Task <object> Historico(string de)
        {
            try
            {
                var _para = await _context.Users.FirstOrDefaultAsync(x => x.UserName == User.Identity.Name);

                var _retorno = new List <object>();

                var _historico = _context.tblHubConversas
                                 .Where(x => x.De == de && x.Para == _para.Id || x.Para == de && x.De == _para.Id)
                                 .OrderBy(x => x.DTHR);

                var _lista = _historico.ToList();
                foreach (var item in _lista)
                {
                    var _item = await _context.tblHubConversas
                                .FirstOrDefaultAsync(x => x.Id == item.Id);

                    if (_item != null)
                    {
                        _item.Lida = true;
                        //_context.Attach(_item).State = EntityState.Modified;
                        await _context.SaveChangesAsync();
                    }
                }

                foreach (var item in _historico)
                {
                    _retorno.Add(new
                    {
                        dthr = VerificadoresRetornos.TemposAtras(item.DTHR),
                        mens = item.Mensagem,
                        flag = item.De == de ? "R" : "E"
                    });
                }

                return(new
                {
                    status = "ok",
                    dados = _retorno
                });
            }
            catch (Exception) { }

            return(new { status = "erro", dados = "" });
        }