Exemplo n.º 1
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);
        }