コード例 #1
0
        /// <summary>
        /// Método utilizado para exclusão de matrículas em trilhas.
        /// </summary>
        /// <param name="idUsuariotrilha"></param>
        /// <param name="autenticacao"></param>
        public void CancelarMatriculaTrilhaExcluindo(int idUsuariotrilha, AuthenticationRequest autenticacao)
        {
            var bmUserTrilha = new BMUsuarioTrilha();

            var usuarioTrilha = bmUserTrilha.ObterPorId(idUsuariotrilha);

            // Caso esteja inscrito ou não aprovado na prova pode ser cancelada a sua matrícula
            if (usuarioTrilha != null &&
                (usuarioTrilha.StatusMatricula == enumStatusMatricula.Inscrito ||
                 usuarioTrilha.StatusMatricula == enumStatusMatricula.Reprovado))
            {
                DateTime limiteCancelamentoUsuario = usuarioTrilha.TrilhaNivel.LimiteCancelamento > 0
                                   ? usuarioTrilha.DataInicio.AddDays(usuarioTrilha.TrilhaNivel.LimiteCancelamento)
                                   : usuarioTrilha.DataInicio.AddDays(usuarioTrilha.TrilhaNivel.QuantidadeDiasPrazo);

                if (DateTime.Now > limiteCancelamentoUsuario)
                {
                    //Passou do Limite para cancelamento
                    throw new AcademicoException("O prazo de cancelamento expirou");
                }

                BMQuestionarioParticipacao questPart = new BMQuestionarioParticipacao();
                questPart.ExcluiParticipacoes(questPart.ObterPorUsuarioTrilhaNivel(usuarioTrilha.Usuario,
                                                                                   usuarioTrilha.TrilhaNivel));

                // Exclui a matrícula do usuário no banco
                bmUserTrilha.ExcluirSemValidacao(usuarioTrilha);
            }
            else
            {
                throw new AcademicoException("Não foi encontrada nenhuma matrícula com cancelamento permitido");
            }
        }
コード例 #2
0
        public IList <DTORelatorioHistoricoAtividadeDiagnostico> ConsultarHistoricoAtividadeDiagnostico(int pIdUsuarioTrilha)
        {
            using (BMUsuarioTrilha utBM = new BMUsuarioTrilha())
            {
                UsuarioTrilha ut = utBM.ObterPorId(pIdUsuarioTrilha);
                using (BMQuestionarioAssociacao qaBM = new BMQuestionarioAssociacao())
                {
                    List <QuestionarioParticipacao> qps = new BMQuestionarioParticipacao().ObterPorUsuario(ut.Usuario).Where(
                        x => x.TrilhaNivel != null &&
                        x.TrilhaNivel.ID == ut.TrilhaNivel.ID &&
                        x.Evolutivo == true).ToList();

                    List <DTORelatorioHistoricoAtividadeDiagnostico> retorno = new List <DTORelatorioHistoricoAtividadeDiagnostico>();
                    foreach (QuestionarioParticipacao qp in qps)
                    {
                        foreach (ItemQuestionarioParticipacao iq in qp.ListaItemQuestionarioParticipacao)
                        {
                            DTORelatorioHistoricoAtividadeDiagnostico atual = retorno.FirstOrDefault(x => x.ObjetivoItem == iq.Feedback);
                            if (atual == null)
                            {
                                atual = new DTORelatorioHistoricoAtividadeDiagnostico();
                                atual.ObjetivoItem = iq.Feedback;
                                atual.NotaPosItemI = qp.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Pos ? iq.ListaOpcoesParticipacao.FirstOrDefault(x => x.RespostaSelecionada == true && x.TipoDiagnostico == enumTipoDiagnostico.Importancia).Nome : string.Empty;
                                atual.NotaPreItemI = qp.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Pre ? iq.ListaOpcoesParticipacao.FirstOrDefault(x => x.RespostaSelecionada == true && x.TipoDiagnostico == enumTipoDiagnostico.Importancia).Nome : string.Empty;
                                atual.NotaPosItemD = qp.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Pos ? iq.ListaOpcoesParticipacao.FirstOrDefault(x => x.RespostaSelecionada == true && x.TipoDiagnostico == enumTipoDiagnostico.Dominio).Nome : string.Empty;
                                atual.NotaPreItemD = qp.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Pre ? iq.ListaOpcoesParticipacao.FirstOrDefault(x => x.RespostaSelecionada == true && x.TipoDiagnostico == enumTipoDiagnostico.Dominio).Nome : string.Empty;
                                retorno.Add(atual);
                            }
                            else
                            {
                                atual.ObjetivoItem = iq.Feedback;
                                atual.NotaPosItemI = qp.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Pos ? iq.ListaOpcoesParticipacao.FirstOrDefault(x => x.RespostaSelecionada == true && x.TipoDiagnostico == enumTipoDiagnostico.Importancia).Nome : atual.NotaPosItemI;
                                atual.NotaPreItemI = qp.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Pre ? iq.ListaOpcoesParticipacao.FirstOrDefault(x => x.RespostaSelecionada == true && x.TipoDiagnostico == enumTipoDiagnostico.Importancia).Nome : atual.NotaPreItemI;
                                atual.NotaPosItemD = qp.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Pos ? iq.ListaOpcoesParticipacao.FirstOrDefault(x => x.RespostaSelecionada == true && x.TipoDiagnostico == enumTipoDiagnostico.Dominio).Nome : atual.NotaPosItemD;
                                atual.NotaPreItemD = qp.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Pre ? iq.ListaOpcoesParticipacao.FirstOrDefault(x => x.RespostaSelecionada == true && x.TipoDiagnostico == enumTipoDiagnostico.Dominio).Nome : atual.NotaPreItemD;
                            }
                        }
                    }
                    return(retorno);
                }
            }
        }
コード例 #3
0
        public IList <DTOQuestionarioAvaliacao> ConsultarQuestionarioAvaliacao(ItemTrilha pTrilha)
        {
            IList <DTOQuestionarioAvaliacao> retorno = null;


            //TB_ITEM_QUESTIONARIO_PARTICIPACAO
            //TB_ItemQuestionarioParticipacaoOpcoes

            var        questionarioComParticipacao = new BMQuestionarioParticipacao().ObterTodosQuestionariosComParticipacao();
            List <int> cpfsParticipantes           = new BMQuestionarioParticipacao().ObterTodosUsuarios().ToList();

            Usuario filtro = new Usuario();
            var     usuarioQueResponderam = new BMUsuario().ObterUsuariosQueResponderamItensTrilha(filtro, cpfsParticipantes);

            foreach (var item in questionarioComParticipacao)
            {
            }

            foreach (var usuario in usuarioQueResponderam)
            {
                foreach (var itemTrilha in usuario.ListaMatriculasNaTrilha.ToList())
                {
                    foreach (var itemTrilhaParticipacao in itemTrilha.ListaItemTrilhaParticipacao.ToList())
                    {
                        DTOQuestionarioAvaliacao m = new DTOQuestionarioAvaliacao();

                        m.Questionario.Add(new DTOQuestionarioAvaliacaoQuestionario {
                            Questionario = itemTrilhaParticipacao.ItemTrilha.Descricao, Nota = (itemTrilhaParticipacao.UsuarioTrilha.QTEstrelas.HasValue ? int.Parse(itemTrilhaParticipacao.UsuarioTrilha.QTEstrelas.Value.ToString()) : 0)
                        });
                        retorno.Add(m);
                    }
                }
            }

            return(retorno);
        }
コード例 #4
0
 /// <summary>
 /// Método Construtor da classe
 /// </summary>
 public ManterQuestionarioParticipacao()
     : base()
 {
     questionarioParticipacao = new BMQuestionarioParticipacao();
 }
コード例 #5
0
        /// <summary>
        /// Em resumo: buscar status "utilizados" em questionários.
        /// Não resumindo: Obter, de forma bem dispendiosa, status que são utilizados em MatriculaTurma e
        /// UsuarioTrilha, cujos ID_Turma e ID_TrilhaNivel existam em QuestionarioParticipacao.
        /// </summary>
        /// <returns></returns>
        public List <StatusMatricula> ObterTodosQuePossuemQuestionarios()
        {
            var questionariosTrilhaNivel =
                new BMQuestionarioParticipacao().ObterTodosQuestionariosComParticipacaoQueryble()
                .Where(x => x.TrilhaNivel != null)
                .Select(x => new QuestionarioParticipacao
            {
                Usuario =
                    new Usuario
                {
                    ID = x.Usuario.ID
                },
                TrilhaNivel =
                    x.TrilhaNivel != null
                                ? new TrilhaNivel
                {
                    ID = x.TrilhaNivel.ID
                }
                                : null
            }).ToList();

            var questionariosTurma =
                new BMQuestionarioParticipacao().ObterTodosQuestionariosComParticipacaoQueryble()
                .Where(x => x.Turma != null)
                .Select(x => new QuestionarioParticipacao
            {
                Usuario =
                    new Usuario
                {
                    ID = x.Usuario.ID
                },
                Turma =
                    x.Turma != null
                                ? new Turma
                {
                    ID = x.Turma.ID
                }
                                : null,
            }).ToList();

            var usuariosTrilha = new BMUsuarioTrilha().ObterTodosIQueryable()
                                 .Select(x =>
                                         new UsuarioTrilha
            {
                ID = x.ID,
                StatusMatricula = x.StatusMatricula,
                Usuario         = new Usuario
                {
                    ID = x.Usuario.ID
                },
                TrilhaNivel = new TrilhaNivel
                {
                    ID = x.TrilhaNivel.ID
                }
            }).ToList();

            var matriculasTurma = new BMMatriculaTurma().ObterTodosIQueryable().Select(x =>
                                                                                       new MatriculaTurma
            {
                ID    = x.ID,
                Turma =
                    new Turma
                {
                    ID = x.Turma.ID
                },
                MatriculaOferta =
                    new MatriculaOferta
                {
                    ID      = x.MatriculaOferta.ID,
                    Usuario = new Usuario {
                        ID = x.MatriculaOferta.Usuario.ID
                    },
                    StatusMatricula = x.MatriculaOferta.StatusMatricula
                }
            }).ToList();


            return
                (_bmStatusMatricula.ObterTodosIncluindoEspecificos()
                 .Where(
                     status =>
                     matriculasTurma.Any(
                         mt =>
                         (int)mt.MatriculaOferta.StatusMatricula == status.ID &&
                         questionariosTurma.Any(
                             qt =>
                             qt.Usuario.ID == mt.MatriculaOferta.Usuario.ID && qt.Turma.ID == mt.Turma.ID)) ||
                     usuariosTrilha.Any(
                         ut =>
                         (int)ut.StatusMatricula == status.ID &&
                         questionariosTrilhaNivel.Any(
                             qt => qt.Usuario.ID == ut.Usuario.ID && qt.TrilhaNivel.ID == ut.TrilhaNivel.ID))
                     )
                 .ToList());
        }
コード例 #6
0
        private List <DTOItemHistoricoAcademico> PreencherDTOComInformacoesDaMatriculaOferta(IList <MatriculaOferta> listaMatriculaOferta, int idUsuario)
        {
            List <DTOItemHistoricoAcademico> resultado = new List <DTOItemHistoricoAcademico>();

            var usuario = (new BMUsuario()).ObterPorId(idUsuario);

            foreach (var itemHistorico in listaMatriculaOferta)
            {
                // Usado para ordenar os objetos corretamente
                itemHistorico.MatriculaTurma = itemHistorico.MatriculaTurma.OrderByDescending(x => x.DataMatricula).ToList();

                var itemMatriculaTurma = itemHistorico.MatriculaTurma.FirstOrDefault();

                if (itemMatriculaTurma == null)
                {
                    continue;
                }

                var item = new DTOItemHistoricoAcademico
                {
                    NomeSolucao = itemHistorico.Oferta.SolucaoEducacional.Nome,
                    Instituicao = Constantes.UCSebrae
                };

                ObterQuestionariosCancelamentoAbandono(itemHistorico, item);

                if (itemHistorico.MatriculaTurma != null && itemHistorico.MatriculaTurma.Count > 0)
                {
                    preencherDataInicioDataFimCurso(itemMatriculaTurma, itemHistorico.Oferta, ref item);

                    //A FGV QUE EFETUA A CORREÇÃO NÃO ATUALIZA O CAMPO QUE NÃO É UTILIZADO NO MÉTODO, ENTÃO PRECISAMOS CRIAR ESTA CONDIÇÃO
                    if (itemHistorico.StatusMatricula == enumStatusMatricula.Aprovado ||
                        itemHistorico.StatusMatricula == enumStatusMatricula.Concluido)
                    {
                        if (!itemMatriculaTurma.DataTermino.HasValue)
                        {
                            if (itemHistorico.Oferta.SolucaoEducacional.Fornecedor.ID == (int)enumFornecedor.FGVOCW)
                            {
                                if (itemHistorico.DataStatusMatricula.HasValue)
                                {
                                    item.DataFim = itemHistorico.DataStatusMatricula.Value.ToString("dd/MM/yyyy");
                                }
                            }
                        }
                    }

                    item.IdTurma = itemMatriculaTurma.Turma.ID;

                    var turma = new BMTurma().ObterPorID((int)item.IdTurma);

                    var questionarioAssociacao = new BMQuestionarioAssociacao().ObterPorTurma(turma).Select(x => x.DataDisparoLinkEficacia);

                    foreach (var itemQuestionarioAssociacao in questionarioAssociacao)
                    {
                        DateTime dateTime;
                        if (DateTime.TryParse(itemQuestionarioAssociacao.ToString(), out dateTime))
                        {
                            item.DataDisparoLinkEficacia = dateTime;
                        }
                    }

                    // VALIDAR QUESTIONARIOS
                    if (itemMatriculaTurma.Turma.ListaQuestionarioAssociacao.Count > 0 && !itemHistorico.IsOuvinte())
                    // Alunos com status Ouvinte não podem responder questionáris.
                    {
                        //QUESTIONARIO POS
                        var itemQuestionarioAssociacaoPos =
                            itemMatriculaTurma.Turma.ListaQuestionarioAssociacao.FirstOrDefault(
                                x => x.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Pos);

                        if (itemQuestionarioAssociacaoPos != null)
                        {
                            var temParticipacao = new BMQuestionarioParticipacao()
                                                  .ObterPorUsuario(itemHistorico.Usuario).Any(
                                x =>
                                x.TipoQuestionarioAssociacao != null &&
                                x.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Pos &&
                                x.Turma.ID == itemMatriculaTurma.Turma.ID && x.DataParticipacao != null);

                            // Usado para exibir o quesitonário pós
                            item.DataDisparoLinkPesquisa = !temParticipacao
                                ? itemQuestionarioAssociacaoPos.DataDisparoLinkPesquisa
                                : null;

                            if (UsuarioAprovado(itemHistorico.StatusMatricula))
                            {
                                if (!temParticipacao)
                                {
                                    item.QuestionarioPosPendente = true;
                                    item.DataDisparoLinkPesquisa =
                                        itemQuestionarioAssociacaoPos.DataDisparoLinkPesquisa ??
                                        itemMatriculaTurma.DataTermino;
                                }
                            }
                        }

                        //QUESTIONARIO EFICACIA
                        var itemQuestionarioAssociacaoEficacia =
                            itemMatriculaTurma.Turma.ListaQuestionarioAssociacao.FirstOrDefault(
                                x => x.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Eficacia);
                        if (itemQuestionarioAssociacaoEficacia != null)
                        {
                            var temParticipacao = new BMQuestionarioParticipacao()
                                                  .ObterPorUsuario(itemHistorico.Usuario).Any(
                                x =>
                                x.TipoQuestionarioAssociacao != null &&
                                x.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Eficacia &&
                                x.Turma.ID == itemMatriculaTurma.Turma.ID && x.DataParticipacao != null);

                            if (!temParticipacao)
                            {
                                item.QuestionarioEficaciaPendente = true;
                                int quantidadeItens = ConsultarQuantidadeItensQuestionarioAssociados(itemMatriculaTurma);
                                item.QuantidadeItensQuestionarioAgrupados = quantidadeItens > 0 ? quantidadeItens : (int?)null;
                            }
                        }
                    }
                }
                else
                {
                    var matriculaTurma = itemHistorico.MatriculaTurma.FirstOrDefault();
                    preencherDataInicioDataFimCurso(matriculaTurma, matriculaTurma.MatriculaOferta.Oferta, ref item);
                }

                item.IdMatricula = itemHistorico.ID;
                item.Situacao    = itemHistorico.StatusMatriculaFormatado;
                item.Tipo        = Constantes.CursoUC;

                if (itemHistorico.MatriculaTurma != null)
                {
                    var matTurma = (new ManterMatriculaTurma()).ObterMatriculaTurmaPorId(itemMatriculaTurma.ID);
                    item.Feedback = (matTurma.Feedback ?? "").Trim();
                }

                PreencherCertificado(itemHistorico, item, usuario);

                resultado.Add(item);
            }

            return(resultado);
        }