/// <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"); } }
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); } } }
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); }
/// <summary> /// Método Construtor da classe /// </summary> public ManterQuestionarioParticipacao() : base() { questionarioParticipacao = new BMQuestionarioParticipacao(); }
/// <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()); }
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); }