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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }