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 = "" }); }
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 = "" }); }