Esempio n. 1
0
 public List <ChatProfess> GetMensagens(PkUsuarioConversa conversa, int codigoDaPrimeiraMensagemNoChat = 0)
 {
     this._usuarioLogado.GetUsuarioLogado();
     return(this._chatProfessRepository.GetMensagens(
                codigoDoUsuario1: this._usuarioLogado.Codigo,
                tipoDoUsuario1: this._usuarioLogado.TipoDeUsuario,
                codigoDoUsuario2: conversa.Codigo,
                tipoDoUsuario2: conversa.Tipo,
                codigoDaPrimeiraMensagemNoChat: codigoDaPrimeiraMensagemNoChat).Content);
 }
Esempio n. 2
0
        public SaeResponseRepository <PkUsuarioConversa> GetAlunoParaConversa(int codigoDoAluno)
        {
            PkUsuarioConversa alunos = this._db
                                       .Alunos
                                       .Where(x => codigoDoAluno == x.Codigo)
                                       .Select(aluno => new PkUsuarioConversa
            {
                Nome   = aluno.Nome,
                Foto   = aluno.Foto,
                Status = TipoDeUsuarioDoChatTrata.Aluno,
                Codigo = aluno.Codigo,
                Tipo   = TipoDeUsuarioDoChatTrata.Aluno
            }).FirstOrDefault();

            return(new SaeResponseRepository <PkUsuarioConversa>(true, alunos));
        }
        public SaeResponseRepository <PkUsuarioConversa> GetProfessorOuCoordenadorParaConversa(int codigo)
        {
            PkUsuarioConversa professoresECoordenadores = this._db
                                                          .Cadforps
                                                          .Where(x => x.Tipo == TipoDeUsuarioDoChatTrata.Professor && x.Codigo == codigo && x.Situacao == SaeSituacao.Ativo)
                                                          .Select(cadforps => new PkUsuarioConversa
            {
                Nome   = cadforps.Nome,
                Foto   = cadforps.Foto,
                Status = cadforps.Tipo,
                Codigo = cadforps.Codigo,
                Tipo   = cadforps.Tipo
            })
                                                          .FirstOrDefault();

            return(new SaeResponseRepository <PkUsuarioConversa>(true, professoresECoordenadores));
        }
Esempio n. 4
0
        public SaeResponseRepository <PkUsuarioConversa> GetResponsavelParaConversa(int codigo)
        {
            PkUsuarioConversa responsaveis = this._db
                                             .Pessoas
                                             .Where(x => x.Codigo == codigo)
                                             .Select(aluno => new PkUsuarioConversa
            {
                Nome   = aluno.Nome,
                Foto   = aluno.Foto,
                Status = TipoDeUsuarioDoChatTrata.ResponsavelExtenso,
                Codigo = aluno.Codigo,
                Tipo   = TipoDeUsuarioDoChatTrata.Responsavel
            })
                                             .FirstOrDefault();

            return(new SaeResponseRepository <PkUsuarioConversa>(true, responsaveis));
        }
Esempio n. 5
0
        public JsonResult GetMensagens(string groupName, int codigoDaPrimeiraMensagemNoChat)
        {
            this._groupBuilder.DismantleGroupName(groupName, out int codigoDoCliente, out string tipoDeUsuario,
                                                  out int codigoDoUsuario);
            PkUsuarioConversa  usuarioParaConversa = this.GetUsuarioParaConversa(tipoDeUsuario, codigoDoUsuario);
            List <ChatProfess> mensagens           = this._chatDomain.GetMensagens(usuarioParaConversa, codigoDaPrimeiraMensagemNoChat);

            PkConversa conversa = new PkConversa(
                usuario: usuarioParaConversa,
                mensagensDoUsuario: mensagens,
                codigoDoCliente: codigoDoCliente,
                groupBuilder: this._groupBuilder,
                deveOrdenar: false);

            return(this.Json(new SaeResponse {
                Status = true, Content = conversa
            }));
        }
Esempio n. 6
0
        public JsonResult GetUsuarioParaConversa(string groupName)
        {
            this._groupBuilder.DismantleGroupName(groupName, out int codigoDoCliente, out string tipoDeUsuario,
                                                  out int codigoDoUsuario);

            PkUsuarioConversa usuarioConversa = this.GetUsuarioParaConversa(tipoDeUsuario, codigoDoUsuario);

            int codigoDaEscola = this._saeHelperCookie.GetCookie(ECookie.CodigoDoCliente).ConvertToInt32();

            List <ChatProfess> mensagens = this._chatDomain.GetMensagens(usuarioConversa);

            PkConversa conversa = new PkConversa(usuarioConversa, mensagens, codigoDaEscola, this._groupBuilder);

            return(this.Json(new SaeResponse
            {
                Status = true,
                Content = conversa
            }));
        }
Esempio n. 7
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);
        }
        private List <PkUsuarioConversa> GetResponsaveis(int codigoDoCurso, string fase, int codigoDoCliente)
        {
            List <PkUsuarioConversa> responsaveisParaRetorno = new List <PkUsuarioConversa>();
            var alunoComResponsaveis =
                (from historicoDoAluno in this._db.Histalu.Where(x =>
                                                                 x.Nseqc == codigoDoCurso && x.Fase == fase && x.Resultado == ResultadoCursos.Cursando)
                 join aluno in this._db.Alunos
                 on historicoDoAluno.CodAluh equals aluno.Codigo
                 join rf in this._db.Pessoas
                 on historicoDoAluno.CodRespfi equals rf.Codigo
                 into rfJoin
                 from responsavelFinanceiro in rfJoin.DefaultIfEmpty()
                 join p in this._db.Pessoas
                 on aluno.CodPai equals p.Codigo
                 into pJoin
                 from pai in pJoin.DefaultIfEmpty()
                 join m in this._db.Pessoas
                 on aluno.CodMae equals m.Codigo
                 into mJoin
                 from mae in mJoin.DefaultIfEmpty()
                 join rp in this._db.Pessoas
                 on aluno.CodResppe equals rp.Codigo
                 into rpJoin
                 from responsavelPedagogico in rpJoin.DefaultIfEmpty()
                 select new
            {
                codigoDoAluno = aluno.Codigo,
                nomeDoAluno = aluno.Nome,
                codigoDoResponsavelFinanceiro = (int?)responsavelFinanceiro.Codigo,
                nomeDoResponsavelFinanceiro = responsavelFinanceiro.Nome,
                fotoDoResponsavelFinanceiro = responsavelFinanceiro.Foto,
                codigoDoPai = (int?)pai.Codigo,
                nomeDoPai = pai.Nome,
                fotoDoPai = pai.Foto,
                codigoDaMae = (int?)mae.Codigo,
                nomeDaMae = mae.Nome,
                fotoDaMae = mae.Foto,
                codigoDoResponsavelPedagogico = (int?)responsavelPedagogico.Codigo,
                nomeDoResponsavelPedagogico = responsavelPedagogico.Nome,
                fotoDoResponsavelPedagogico = responsavelPedagogico.Foto,
            }).ToList();

            foreach (var aluno in alunoComResponsaveis)
            {
                string codigoEPrimeiroEUltimoNomeDoAluno = $"{aluno.codigoDoAluno} - {aluno.nomeDoAluno.GetPrimeiroEUltimoNome()}";

                List <PkUsuarioConversa> responsaveisDoAluno = new List <PkUsuarioConversa>();
                if (!SaeUtil.IsNullOrZero(aluno.codigoDoResponsavelFinanceiro))
                {
                    PkUsuarioConversa responsavelFinanceiro = new PkUsuarioConversa
                    {
                        Codigo          = aluno.codigoDoResponsavelFinanceiro ?? 0,
                        Tipo            = TipoDeUsuarioDoChatTrata.Responsavel,
                        CodigoDoCliente = codigoDoCliente,
                        Foto            = aluno.fotoDoResponsavelFinanceiro,
                        Nome            = aluno.nomeDoResponsavelFinanceiro,
                        Status          = $"Resp. Fin. do(a) {codigoEPrimeiroEUltimoNomeDoAluno}"
                    };
                    responsaveisDoAluno.Add(responsavelFinanceiro);
                }

                if (!SaeUtil.IsNullOrZero(aluno.codigoDoPai))
                {
                    PkUsuarioConversa pai = new PkUsuarioConversa
                    {
                        Codigo          = aluno.codigoDoPai ?? 0,
                        Tipo            = TipoDeUsuarioDoChatTrata.Responsavel,
                        CodigoDoCliente = codigoDoCliente,
                        Foto            = aluno.fotoDoPai,
                        Nome            = aluno.nomeDoPai,
                        Status          = $"Pai do(a) {codigoEPrimeiroEUltimoNomeDoAluno}"
                    };
                    responsaveisDoAluno.Add(pai);
                }

                if (!SaeUtil.IsNullOrZero(aluno.codigoDaMae))
                {
                    PkUsuarioConversa mae = new PkUsuarioConversa
                    {
                        Codigo          = aluno.codigoDaMae ?? 0,
                        Tipo            = TipoDeUsuarioDoChatTrata.Responsavel,
                        CodigoDoCliente = codigoDoCliente,
                        Foto            = aluno.fotoDaMae,
                        Nome            = aluno.nomeDaMae,
                        Status          = $"Mãe do(a) {codigoEPrimeiroEUltimoNomeDoAluno}"
                    };
                    responsaveisDoAluno.Add(mae);
                }

                if (!SaeUtil.IsNullOrZero(aluno.codigoDoResponsavelPedagogico))
                {
                    PkUsuarioConversa responsavelPedagogico = new PkUsuarioConversa
                    {
                        Codigo          = aluno.codigoDoResponsavelPedagogico ?? 0,
                        Tipo            = TipoDeUsuarioDoChatTrata.Responsavel,
                        CodigoDoCliente = codigoDoCliente,
                        Foto            = aluno.fotoDoResponsavelPedagogico,
                        Nome            = aluno.nomeDoResponsavelPedagogico,
                        Status          = $"Resp. Ped. do(a) {codigoEPrimeiroEUltimoNomeDoAluno}"
                    };
                    responsaveisDoAluno.Add(responsavelPedagogico);
                }

                if (responsaveisDoAluno.Any())
                {
                    var responsaveisAgrupados = responsaveisDoAluno.GroupBy(x => x.Codigo,
                                                                            (codigo, responsaveisIguais) =>
                    {
                        //Guardei numa lista para evitar múltipla enumeração
                        List <PkUsuarioConversa> responsaveisIguaisList = responsaveisIguais.ToList();
                        var relacoes = responsaveisIguaisList
                                       .Select(x => x.Status.Split(" do(a)").FirstOrDefault());

                        string relacoesJuntasESeparadasPorVirgula =
                            string.Join(", ", relacoes);
                        var primeiroIndice        = responsaveisIguaisList.FirstOrDefault();
                        string nomeDoAluno        = primeiroIndice.Status.Split("do(a)").LastOrDefault();
                        var responsavelTemporario = new PkUsuarioConversa
                        {
                            Codigo          = codigo,
                            Tipo            = TipoDeUsuarioDoChatTrata.Responsavel,
                            CodigoDoCliente = codigoDoCliente,
                            Foto            = primeiroIndice.Foto,
                            Nome            = primeiroIndice.Nome,
                            Status          = $"{relacoesJuntasESeparadasPorVirgula} do(a) {nomeDoAluno}"
                        };

                        return(responsavelTemporario);
                    }).ToList();

                    responsaveisParaRetorno.AddRange(responsaveisAgrupados);
                }
            }

            return(responsaveisParaRetorno);
        }