public PkConversa(PkUsuarioConversa usuario, List <ChatProfess> mensagensDoUsuario, int codigoDoCliente, GroupBuilder groupBuilder, bool deveOrdenar = true) { this.Codigo = usuario.Codigo; this.Nome = usuario.Nome.GetPrimeiroEUltimoNome(); this.Foto = FotoTrata.ToBase64String(usuario.Foto); this.Status = usuario.Status; this.Tipo = usuario.Tipo; if (this.Status == this.Tipo) { this.Status = TipoDeUsuarioDoChatTrata.TipoExtenso(this.Tipo); } this.CodigoDaEscola = codigoDoCliente; this.GroupName = groupBuilder.BuildGroupName(codigoDoCliente, usuario.Tipo, usuario.Codigo); this.Mensagens = mensagensDoUsuario .Select(mensagem => new PkMensagem(mensagem, groupBuilder, codigoDoCliente)) .ToList(); if (deveOrdenar) { this.Mensagens = this.Mensagens .OrderBy(x => x.DataDaMensagem) .ToList(); } this.SetDataDaUltimaMensagem(); }
private List <PkUsuarioConversa> GetProfessoresOuCoordenadores(int codigoDoCurso, string fase, string tipo, int codigoDoCliente) { List <PkUsuarioConversa> professoresOuCoordenadores = new List <PkUsuarioConversa>(); string anoLetivo = this._historicoRepository.GetAnoLetivo().Content; List <PkHabilitacaoProfessor> habilitacoes = this._habilitaRepository .GetHabilitacoes(codigoDoCurso: codigoDoCurso, fase: fase, anoLetivo: anoLetivo) .Content .DistinctBy(x => x.CodigoDoProfessor) .ToList(); string cargo = TipoDeUsuarioDoChatTrata.TipoExtenso(tipo); professoresOuCoordenadores = (from profHabilita in habilitacoes join cadforps in this._db.Cadforps.Where(x => x.ProfNivel == tipo && x.Situacao == SaeSituacao.Ativo) on profHabilita.CodigoDoProfessor equals cadforps.Codigo join curso in this._db.Cursos.Where(x => x.Situacao == SaeSituacao.Ativo) on profHabilita.CodigoDoCurso equals curso.Nseq select new PkUsuarioConversa { Codigo = cadforps.Codigo, Tipo = TipoDeUsuarioDoChatTrata.Professor, Foto = cadforps.Foto, CodigoDoCliente = codigoDoCliente, Nome = cadforps.Nome, Status = $"{cargo} do curso: {curso.Descricao}", TipoParaExibicao = tipo, TipoDeProfessor = tipo }).ToList(); return(professoresOuCoordenadores); }
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); }
private PkUsuarioConversa GetUsuarioParaConversa(string tipoDeUsuario, int codigoDoUsuario) { PkUsuarioConversa usuarioConversa = new PkUsuarioConversa(); if (TipoDeUsuarioDoChatTrata.EhAluno(tipoDeUsuario)) { usuarioConversa = this._alunosRepository.GetAlunoParaConversa(codigoDoUsuario).Content; } else if (TipoDeUsuarioDoChatTrata.EhCoordenadorOuProfessor(tipoDeUsuario)) { usuarioConversa = this._cadforpsRepository.GetProfessorOuCoordenadorParaConversa(codigoDoUsuario) .Content; } else if (TipoDeUsuarioDoChatTrata.EhResponsavel(tipoDeUsuario)) { usuarioConversa = this._pessoasRepository.GetResponsavelParaConversa(codigoDoUsuario).Content; } return(usuarioConversa); }
public List <PkUsuarioConversa> Get(PesquisaContatosIndexModel index) { List <PkUsuarioConversa> listaParaRetorno = new List <PkUsuarioConversa>(); this._usuarioLogado.GetUsuarioLogado(); int codigoDoUsuarioLogado = this._usuarioLogado.Codigo; string tipoDeUsuarioLogado = this._usuarioLogado.TipoDeUsuario; int codigoDoCliente = this._saeHelperCookie.GetCookie(ECookie.CodigoDoCliente).ConvertToInt32(); this.ExtraiCodigoECursoSelecionado(index, out int codigoDoCurso, out string fase); List <PkUsuarioConversa> professores = new List <PkUsuarioConversa>(); List <PkUsuarioConversa> coordenadores = new List <PkUsuarioConversa>(); List <PkUsuarioConversa> alunos = new List <PkUsuarioConversa>(); List <PkUsuarioConversa> responsaveis = new List <PkUsuarioConversa>(); bool ehAluno = TipoDeUsuarioDoChatTrata.EhAluno(tipoDeUsuarioLogado); bool ehResponsavel = TipoDeUsuarioDoChatTrata.EhResponsavel(tipoDeUsuarioLogado); bool ehCoordenadorOuProfessor = TipoDeUsuarioDoChatTrata.EhCoordenadorOuProfessor(tipoDeUsuarioLogado); List <string> tiposSelecionados = index.TiposSelecionados; if (ehAluno) { if (this._usuarioLogado.Permissoes.ConversaComAluno //&& /*tiposSelecionados.Contains(TipoDeUsuarioDoChatTrata.Aluno)*/) { PkHistoricoDoAluno ultimoHistoricoDoAluno = this.GetUltimoHistoricoDoAluno(codigoDoUsuarioLogado); if (ultimoHistoricoDoAluno != null) { alunos = this.GetAlunos( ultimoHistoricoDoAluno.CodigoDoCurso, ultimoHistoricoDoAluno.Fase, codigoDoCliente) .Where(x => x.Codigo != codigoDoUsuarioLogado) .ToList(); } } if (this._usuarioLogado.Permissoes.ConversaComCoordenador //&& /*tiposSelecionados.Contains(TipoDeUsuarioDoChatTrata.Coordenador)*/) { PkHistoricoDoAluno ultimoHistoricoDoAluno = this.GetUltimoHistoricoDoAluno(codigoDoUsuarioLogado); coordenadores = this.GetProfessoresOuCoordenadores(ultimoHistoricoDoAluno, TipoDeUsuarioDoChatTrata.Coordenador, codigoDoCliente); } if (this._usuarioLogado.Permissoes.ConversaComProfessor //&& /*tiposSelecionados.Contains(TipoDeUsuarioDoChatTrata.Professor)*/) { PkHistoricoDoAluno ultimoHistoricoDoAluno = this.GetUltimoHistoricoDoAluno(codigoDoUsuarioLogado); professores = this.GetProfessoresOuCoordenadores(ultimoHistoricoDoAluno, TipoDeUsuarioDoChatTrata.Professor, codigoDoCliente); } if (this._usuarioLogado.Permissoes.ConversaComResponsavel && tiposSelecionados.Contains(TipoDeUsuarioDoChatTrata.Responsavel)) { //não vai fazer por enquanto } } else if (ehResponsavel) { if (this._usuarioLogado.Permissoes.ConversaComAluno //&& /*tiposSelecionados.Contains(TipoDeUsuarioDoChatTrata.Aluno)*/) { //não vai fazer por enquanto } PkHistoricoDoAluno historicoDoAlunoRelacionado = this.GetUltimoHistoricoDoAluno(this._usuarioLogado.RelacaoComAluno.CodigoDoAluno); if (this._usuarioLogado.Permissoes.ConversaComCoordenador //&& /*tiposSelecionados.Contains(TipoDeUsuarioDoChatTrata.Coordenador)*/) { coordenadores = this.GetProfessoresOuCoordenadores(historicoDoAlunoRelacionado, TipoDeUsuarioDoChatTrata.Coordenador, codigoDoCliente); } if (this._usuarioLogado.Permissoes.ConversaComProfessor //&& /*tiposSelecionados.Contains(TipoDeUsuarioDoChatTrata.Professor)*/) { professores = this.GetProfessoresOuCoordenadores(historicoDoAlunoRelacionado, TipoDeUsuarioDoChatTrata.Professor, codigoDoCliente); } if (this._usuarioLogado.Permissoes.ConversaComResponsavel //&& /*tiposSelecionados.Contains(TipoDeUsuarioDoChatTrata.Responsavel)*/) { responsaveis = this.GetResponsaveis(historicoDoAlunoRelacionado.CodigoDoCurso, historicoDoAlunoRelacionado.Fase, codigoDoCliente) .Where(x => x.Codigo != codigoDoUsuarioLogado) .ToList(); } } else if (ehCoordenadorOuProfessor) { if (this._usuarioLogado.Permissoes.ConversaComAluno //&& /*tiposSelecionados.Contains(TipoDeUsuarioDoChatTrata.Aluno)*/) { alunos = this.GetAlunos(codigoDoCurso, fase, codigoDoCliente).ToList(); } if (this._usuarioLogado.Permissoes.ConversaComCoordenador //&& /*tiposSelecionados.Contains(TipoDeUsuarioDoChatTrata.Coordenador)*/) { coordenadores = this.GetProfessoresOuCoordenadores(codigoDoCurso, fase, TipoDeUsuarioDoChatTrata.Coordenador, codigoDoCliente) .Where(x => x.Codigo != codigoDoUsuarioLogado) .ToList(); } if (this._usuarioLogado.Permissoes.ConversaComProfessor //&& /*tiposSelecionados.Contains(TipoDeUsuarioDoChatTrata.Professor)*/) { professores = this.GetProfessoresOuCoordenadores(codigoDoCurso, fase, TipoDeUsuarioDoChatTrata.Professor, codigoDoCliente) .Where(x => x.Codigo != codigoDoUsuarioLogado) .ToList(); } if (this._usuarioLogado.Permissoes.ConversaComResponsavel //&& /*tiposSelecionados.Contains(TipoDeUsuarioDoChatTrata.Responsavel)*/) { responsaveis = this.GetResponsaveis(codigoDoCurso, fase, codigoDoCliente); } } listaParaRetorno.AddRange(professores); listaParaRetorno.AddRange(coordenadores); listaParaRetorno.AddRange(alunos); listaParaRetorno.AddRange(responsaveis); listaParaRetorno = this.SetUltimaVezLogado(listaParaRetorno); listaParaRetorno = listaParaRetorno .OrderBy(x => x.Nome) .ThenBy(x => x.Tipo) .ToList(); return(listaParaRetorno); }