public List <PkConversa> GetMensagensDoUsuario(int codigoDoUsuario, string tipoDoUsuario) { List <ChatProfess> mensagens = this._chatProfessRepository.GetMensagensDoUsuario(codigoDoUsuario, tipoDoUsuario); PkCodigosDasPessoasDasMensagens codigosETipos = this .GetCodigosDosUsuariosDasMensagens(mensagens) .RemoverUsuarioLogado(codigoDoUsuario, tipoDoUsuario); int codigoDaEscola = this._helperCookie.GetCookie(ECookie.CodigoDoCliente).ConvertToInt32(); List <PkUsuarioConversa> usuariosDasConversas = new List <PkUsuarioConversa>(); List <PkConversa> conversas = new List <PkConversa>(); if (codigosETipos.CodigosDosAlunos.Any()) { List <PkUsuarioConversa> alunos = this._alunosRepository.GetAlunosDasConversas(codigosETipos.CodigosDosAlunos).Content; usuariosDasConversas.AddRange(alunos); } if (codigosETipos.CodigosDosCoordenadores.Any() || codigosETipos.CodigosDosProfessores.Any()) { List <PkUsuarioConversa> coordenadoresEProfessores = this._cadforpsRepository.GetProfessoresECoordenadoresDasConversas( codigosETipos.CodigosDosCoordenadores, codigosETipos.CodigosDosProfessores).Content; usuariosDasConversas.AddRange(coordenadoresEProfessores); } if (codigosETipos.CodigosDosResponsaveis.Any()) { List <PkUsuarioConversa> responsaveis = this._pessoasRepository .GetResponsaveisDasConversas(codigosETipos.CodigosDosResponsaveis).Content; usuariosDasConversas.AddRange(responsaveis); } if (usuariosDasConversas.Any()) { foreach (PkUsuarioConversa usuario in usuariosDasConversas) { List <ChatProfess> mensagensDoUsuario = mensagens.Where(mensagem => usuario.MensagemEhDesteUsuario(mensagem)).ToList(); conversas.Add(new PkConversa(usuario, mensagensDoUsuario, codigoDaEscola, this._groupBuilder)); } } conversas = conversas.OrderByDescending(x => x.GetDataDaUltimaMensagem()).ToList(); return(conversas); }
private PkCodigosDasPessoasDasMensagens GetCodigosDosUsuariosDasMensagens(List <ChatProfess> mensagens) { PkCodigosDasPessoasDasMensagens codigosETipos = new PkCodigosDasPessoasDasMensagens(); TipoDeUsuarioDoChatTrata.GetTipos().ForEach(tipo => { codigosETipos .Add(this.GetDestinatariosDoTipo(mensagens, tipo), tipo) .Add(this.GetOrigensDoTipo(mensagens, tipo), tipo); }); codigosETipos.CodigosDosAlunos = codigosETipos.CodigosDosAlunos.Distinct().ToList(); codigosETipos.CodigosDosCoordenadores = codigosETipos.CodigosDosCoordenadores.Distinct().ToList(); codigosETipos.CodigosDosProfessores = codigosETipos.CodigosDosProfessores.Distinct().ToList(); codigosETipos.CodigosDosResponsaveis = codigosETipos.CodigosDosResponsaveis.Distinct().ToList(); return(codigosETipos); }