public DTOCapacitacao AprovacoesSolucoesEducacionais(MatriculaCapacitacao matriculaCapacitacao, int pIdUsuario) { DTOCapacitacao dtoCapacitacao = new DTOCapacitacao { NomeCapacitacao = matriculaCapacitacao.Capacitacao.Nome, idMatricula = matriculaCapacitacao.ID, DataInicio = matriculaCapacitacao.DataInicio.ToString("dd/MM/yyyy"), DataFim = matriculaCapacitacao.DataFim.HasValue ? matriculaCapacitacao.DataFim.Value.ToString("dd/MM/yyyy") : "" }; var bmMatricula = new ManterMatriculaOferta(); ConsultarMeusCursos ConsultaMeusCursos = new ConsultarMeusCursos(); int totalAprovacoes = 0; int totalSolEdu = 0; var manterPreRequisito = new ManterModuloPreRequisito(); foreach (var modulo in matriculaCapacitacao.Capacitacao.ListaModulos.Distinct()) { DTOModulo dtoModulo = new DTOModulo { ID = modulo.ID, Nome = modulo.Nome, Descricao = modulo.Descricao, DataInicio = modulo.DataInicio.ToString("dd/MM/yyyy"), DataFim = modulo.DataFim.HasValue ? modulo.DataFim.Value.ToString("dd/MM/yyyy") : "" }; var lsSolucoesModulo = modulo.ListaSolucaoEducacional.Distinct(); var totalAprovadoModulo = 0; foreach (var solucao in lsSolucoesModulo) { var aprovado = bmMatricula.AprovacaoPorUsuarioESolucaoEducacional(pIdUsuario, solucao.SolucaoEducacional.ID); if (aprovado) { totalAprovacoes++; totalAprovadoModulo++; } var matOfertas = bmMatricula.ObterPorUsuarioESolucaoEducacional(pIdUsuario, solucao.SolucaoEducacional.ID).ToList(); var meusCursos = new List <DTOItemMeusCursos>(); // Se tiver Status inscrito ou pendente de confirmação segue o fluxo normal de matrículas em oferta if (matOfertas.Any(x => (x.StatusMatricula == enumStatusMatricula.Inscrito || x.StatusMatricula == enumStatusMatricula.PendenteConfirmacaoAluno))) { ConsultaMeusCursos.PreencherDTOComInformacoesDaMatriculaOferta(meusCursos, matOfertas); //dtoModulo.SolucoesModulo.Add(new DTOItemMeusCursos { Nome = solucao.SolucaoEducacional.Nome, Concluido = aprovado, IDNode = solucao.SolucaoEducacional.IdNode }); foreach (var curso in meusCursos) { dtoModulo.SolucoesModulo.Add(curso); } } // Se não tiver inscrito escreve as informações básicas else { DTOItemMeusCursos dtoItemMeusCursos = new DTOItemMeusCursos(); dtoItemMeusCursos.ID = solucao.SolucaoEducacional.ID; dtoItemMeusCursos.NomeSolucao = solucao.SolucaoEducacional.Nome; dtoItemMeusCursos.Fornecedor = solucao.SolucaoEducacional.Fornecedor.Nome; if (aprovado) { dtoItemMeusCursos.SituacaoID = 9; dtoItemMeusCursos.Situacao = "Aprovado"; } else { dtoItemMeusCursos.SituacaoID = 0; dtoItemMeusCursos.Situacao = "Você não está inscrito nesse curso"; } dtoItemMeusCursos.IDChaveExterna = solucao.SolucaoEducacional.IDChaveExterna; dtoItemMeusCursos.IDNode = solucao.SolucaoEducacional.IdNode; dtoModulo.SolucoesModulo.Add(dtoItemMeusCursos); } } var totalSeMod = modulo.ListaSolucaoEducacional.Count(); dtoModulo.PorcentagemConclusaoModulo = (int)(Math.Round((double)totalAprovadoModulo / (double)totalSeMod, 2) * 100); dtoModulo.TextoConclusaoModulo = totalAprovadoModulo.ToString() + "/" + totalSeMod.ToString(); // Verificar pré requisitos do módulo dtoModulo.PreRequisitoPendente = manterPreRequisito.VerificarPreRequisitoPendente(modulo, pIdUsuario); totalSolEdu += totalSeMod; // Insere o Módulo no DTO dtoCapacitacao.ModulosCapacitacao.Add(dtoModulo); } // CAPACITAÇÕES int diasCancelamento = int.Parse(ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.DiasCancelamentoCurso).Registro.ToString()); bool habilitaCancelamento; if (matriculaCapacitacao.Capacitacao.PermiteCancelarMatricula && matriculaCapacitacao.DataInicio.Date.AddDays(diasCancelamento) >= DateTime.Now) { habilitaCancelamento = true; } else { habilitaCancelamento = false; } int percentage = 0; // Se não tiver soluções disponíveis ou se não tiver feito nada retorna 0 if (totalAprovacoes != 0 && totalSolEdu != 0) { percentage = (int)(Math.Round((double)totalAprovacoes / (double)totalSolEdu, 2) * 100); } // Insere o resto dos dados da capacitação dtoCapacitacao.PorcentagemConclusaoCapacitacao = percentage; dtoCapacitacao.TextoConclusaoCapacitacao = totalAprovacoes.ToString() + "/" + totalSolEdu.ToString(); dtoCapacitacao.HabilitaCancelamento = habilitaCancelamento; return(dtoCapacitacao); }
public void PreencherDTOComInformacoesDaMatriculaOferta(List <DTOItemMeusCursos> resultado, IList <MatriculaOferta> listaMatriculaOferta) { try { foreach (var itemMatriculaOferta in listaMatriculaOferta) { if (itemMatriculaOferta.StatusMatricula.Equals(enumStatusMatricula.Inscrito) || itemMatriculaOferta.StatusMatricula.Equals(enumStatusMatricula.PendenteConfirmacaoAluno)) { var dtoItemMeusCursos = new DTOItemMeusCursos { ID = itemMatriculaOferta.Oferta.SolucaoEducacional.ID, NomeSolucao = itemMatriculaOferta.Oferta.SolucaoEducacional.Nome, Fornecedor = itemMatriculaOferta.Oferta.SolucaoEducacional.Fornecedor.Nome, SituacaoID = (int)itemMatriculaOferta.StatusMatricula, Situacao = itemMatriculaOferta.StatusMatriculaFormatado, IDChaveExterna = itemMatriculaOferta.Oferta.SolucaoEducacional.IDChaveExterna, IDNode = itemMatriculaOferta.Oferta.SolucaoEducacional.IdNodePortal, PrazoEmDias = itemMatriculaOferta.Oferta.DiasPrazo, // Redmine #1112 - Antes de mudar a condição abaixo verifique o redmine // Somente será enviado o link caso o IDChaveExterna seja nulo Link = itemMatriculaOferta.Oferta.IDChaveExterna == null ? itemMatriculaOferta.Oferta.Link : "" }; var matriculaTurma = itemMatriculaOferta.MatriculaTurma.FirstOrDefault(); if (matriculaTurma == null) { continue; } // Pega a última data de início nessa ordem de prioridade Data Solicitação, Data Início Turma e Data Início Oferta var dataInicio = matriculaTurma.Turma.DataInicio; if (itemMatriculaOferta.Oferta.TipoOferta == enumTipoOferta.Continua) { if (itemMatriculaOferta.MatriculaTurma.Count() > 0) { var dataMatricula = itemMatriculaOferta.MatriculaTurma[0].DataMatricula; dataInicio = dataMatricula > dataInicio ? dataMatricula : dataInicio; } } dtoItemMeusCursos.DataInicio = dataInicio.ToString("dd/MM/yyyy"); dtoItemMeusCursos.DataLimite = matriculaTurma.CalcularDataLimite().ToString("dd/MM/yyyy"); if (itemMatriculaOferta.MatriculaTurma.Count > 0) { dtoItemMeusCursos.IdTurma = matriculaTurma.Turma.ID; #region VALIDAR QUESTIONARIOS //QUESTIONARIO PRE dtoItemMeusCursos.QuestionarioPrePendente = VerificarQuestionarioPendente(matriculaTurma, itemMatriculaOferta, enumTipoQuestionarioAssociacao.Pre); if (dtoItemMeusCursos.QuestionarioPrePendente || itemMatriculaOferta.Oferta.ListaTurma.Any(t => t.DataInicio > DateTime.Now) || (matriculaTurma.Turma.DataInicio > DateTime.Now)) { dtoItemMeusCursos.LinkAcesso = string.Empty; if (dtoItemMeusCursos.QuestionarioPrePendente) { dtoItemMeusCursos.LinkSemAcesso.Add(new DTOLinkSemAcesso { MotivoLinkSemAcesso = "Responda ao Questionário para acessar o curso" }); } var dataOferta = matriculaTurma.Turma.DataInicio; var exibirData = dataOferta; if (matriculaTurma.Turma.DataInicio.Date > DateTime.Today) { var dataTurma = matriculaTurma.Turma.DataInicio; if (dataTurma > dataOferta) { { exibirData = dataTurma; } } dtoItemMeusCursos.LinkSemAcesso.Add(new DTOLinkSemAcesso { MotivoLinkSemAcesso = string.Format("Este curso será iniciado no dia {0}", exibirData.ToString("dd/MM/yyyy")) }); } } else { if (string.IsNullOrEmpty(itemMatriculaOferta.LinkAcesso)) { dtoItemMeusCursos.LinkAcesso = ConsultarLinkAcessoFornecedor( itemMatriculaOferta.Oferta.SolucaoEducacional.Fornecedor, itemMatriculaOferta.Usuario, itemMatriculaOferta.Oferta.CodigoMoodle.ToString()); } else { dtoItemMeusCursos.LinkAcesso = itemMatriculaOferta.LinkAcesso; } } } //Essa chamada é feita para realizar a sincronia com o moodle, então no momento que carrega a página de "Minhas inscrições" no portal, o sistema acessa a url do moodle, sendo assim, é feita a sincronia do usuário com o moodle. if (dtoItemMeusCursos.Fornecedor == "Moodle") { if (!string.IsNullOrEmpty(dtoItemMeusCursos.LinkAcesso)) { var thread = new Thread(() => { WebRequest request = HttpWebRequest.Create(dtoItemMeusCursos.LinkAcesso); //WebResponse response = request.GetResponse(); }) { IsBackground = true }; thread.Start(); } } dtoItemMeusCursos.IdMatricula = itemMatriculaOferta.ID; dtoItemMeusCursos.IdOferta = itemMatriculaOferta.Oferta.ID; dtoItemMeusCursos.Tipo = Constantes.CursoUC; dtoItemMeusCursos.CargaHoraria = itemMatriculaOferta.Oferta.CargaHoraria.ToString(); int diasCancelamento = int.Parse(ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.DiasCancelamentoCurso).Registro); dtoItemMeusCursos.HabilitaCancelamento = itemMatriculaOferta.DataSolicitacao.Date.AddDays(diasCancelamento) >= DateTime.Now; // Verificar questionário de cancelamento. if (dtoItemMeusCursos.HabilitaCancelamento) { dtoItemMeusCursos.QuestionarioCancelamentoPendente = false; if (itemMatriculaOferta.MatriculaTurma.Any()) { var turma = itemMatriculaOferta.MatriculaTurma[0].Turma; var associacao = turma.ListaQuestionarioAssociacao.FirstOrDefault( x => x.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Cancelamento); if (associacao != null) { dtoItemMeusCursos.QuestionarioCancelamentoPendente = true; dtoItemMeusCursos.QuestionarioRespondido = associacao.Questionario.IsRespondido(itemMatriculaOferta.Usuario, turma); } } } dtoItemMeusCursos.QuestionarioCancelamentoPendente = VerificarQuestionarioPendente(matriculaTurma, itemMatriculaOferta, enumTipoQuestionarioAssociacao.Cancelamento); if (itemMatriculaOferta.MatriculaTurma.Any()) { var turma = itemMatriculaOferta.MatriculaTurma[0].Turma; var associacao = turma.ListaQuestionarioAssociacao.FirstOrDefault( x => x.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Cancelamento); if (associacao != null) { dtoItemMeusCursos.QuestionarioCancelamentoPendente = true; dtoItemMeusCursos.QuestionarioRespondido = associacao.Questionario.IsRespondido(itemMatriculaOferta.Usuario, turma); } } dtoItemMeusCursos.QuestionarioEficaciaPendente = VerificarQuestionarioPendente(matriculaTurma, itemMatriculaOferta, enumTipoQuestionarioAssociacao.Eficacia); dtoItemMeusCursos.QuantidadeItensQuestionarioAgrupados = ConsultarQuantidadeItensQuestionarioAssociados(matriculaTurma); #endregion resultado.Add(dtoItemMeusCursos); } } } catch (Exception ex) { ErroUtil.Instancia.TratarErro(ex); } }
private void PreencherDTOComInformacoesDaMatriculaPrograma(int id_Usuario, List <DTOItemMeusCursos> resultado) { DTOItemMeusCursos dtoItemMeusCursos = null; try { IList <MatriculaCapacitacao> ListaMatriculaCapacitacao = new BMMatriculaCapacitacao().ObterPorUsuario(id_Usuario).Where(x => x.StatusMatricula.Equals(enumStatusMatricula.Inscrito)).OrderBy(x => x.Capacitacao.Programa.ID).ToList(); var manterMatCapacitacao = new ManterMatriculaCapacitacaoService(); int prevPrograma = 0; int cont = 0; double totalAprovacoesSol = 0; double totalSol = 0; foreach (var itemHistorico in ListaMatriculaCapacitacao) { BMCapacitacao bmCapacitacao = new BMCapacitacao(); // PROGRAMAS - Mudou o programa cria um novo item pai if (prevPrograma != itemHistorico.Capacitacao.Programa.ID) { totalAprovacoesSol = 0; totalSol = 0; dtoItemMeusCursos = new DTOItemMeusCursos(); dtoItemMeusCursos.ID = itemHistorico.Capacitacao.Programa.ID; dtoItemMeusCursos.NomeSolucao = itemHistorico.Capacitacao.Programa.Nome; dtoItemMeusCursos.Fornecedor = Constantes.Sebrae; dtoItemMeusCursos.TextoApresentacao = itemHistorico.Capacitacao.Programa.Apresentacao; dtoItemMeusCursos.DataInicio = itemHistorico.Capacitacao.DataInicio.ToString("dd/MM/yyyy"); dtoItemMeusCursos.DataLimite = itemHistorico.Capacitacao.DataFim.HasValue ? itemHistorico.Capacitacao.DataFim.Value.ToString("dd/MM/yyyy") : ""; dtoItemMeusCursos.Tipo = Constantes.ProgramaUC; dtoItemMeusCursos.CargaHoraria = Constantes.NaoDefinido; dtoItemMeusCursos.IdProgramaPortal = itemHistorico.Capacitacao.Programa.IdNodePortal; dtoItemMeusCursos.LinkAcesso = "";//!string.IsNullOrEmpty(itemHistorico.Capacitacao.Programa.Acesso) ? itemHistorico.Capacitacao.Programa.Acesso : ""; } DTOCapacitacao dtoCapacitacao = manterMatCapacitacao.AprovacoesSolucoesEducacionais(itemHistorico, id_Usuario); dtoItemMeusCursos.CapacitacoesPrograma.Add(dtoCapacitacao); string[] totais = dtoCapacitacao.TextoConclusaoCapacitacao.Split('/'); totalAprovacoesSol += float.Parse(totais[0]); totalSol += float.Parse(totais[1]); //dtoItemMeusCursos.LinkSemAcesso.Add(new DTOLinkSemAcesso { MotivoLinkSemAcesso = string.Format("Este curso será iniciado no dia {0}", exibirData.ToString("dd/MM/yyyy")) }); // Se o próximo programa for diferente ou for o último insere no DTO Pai os filhos if (ListaMatriculaCapacitacao.Count - 1 == cont || itemHistorico.Capacitacao.Programa.ID != ListaMatriculaCapacitacao[cont + 1].Capacitacao.Programa.ID) { dtoItemMeusCursos.PorcentagemConlusaoPrograma = (int)(Math.Round(totalAprovacoesSol / totalSol, 2) * 100); dtoItemMeusCursos.TextoConclusaoPrograma = totalAprovacoesSol + "/" + totalSol; resultado.Add(dtoItemMeusCursos); } // Atualiza a referência ao passado prevPrograma = itemHistorico.Capacitacao.Programa.ID; cont++; } } catch (Exception ex) { ErroUtil.Instancia.TratarErro(ex); } }
private void PreencherDTOComInformacoesDoUsuarioTrilha(int idUsuario, List <DTOItemMeusCursos> resultado) { try { var listaUsuarioTrilha = new BMUsuarioTrilha() .ObterPorUsuario(idUsuario) .Where(x => x.NovasTrilhas == true) .Where(x => x.DataLimite >= DateTime.Now || x.DataLimite == null); foreach (var usuarioTrilha in listaUsuarioTrilha) { if (!usuarioTrilha.StatusMatricula.Equals(enumStatusMatricula.Inscrito) && !usuarioTrilha.StatusMatricula.Equals(enumStatusMatricula.Aprovado)) { continue; } var item = new DTOItemMeusCursos { NomeSolucao = string.Concat(usuarioTrilha.TrilhaNivel.Trilha.Nome, " - ", usuarioTrilha.TrilhaNivel.Nome), Fornecedor = Constantes.Sebrae, IdTrilhaNivel = usuarioTrilha.TrilhaNivel.ID, IdTrilha = usuarioTrilha.TrilhaNivel.Trilha.IdNodePortal, DataInicio = usuarioTrilha.DataInicio.ToString("dd/MM/yyyy"), DataLimite = usuarioTrilha.DataLimite != null?usuarioTrilha.DataLimite.ToString("dd/MM/yyyy") : "", PrazoEmDias = usuarioTrilha.TrilhaNivel.QuantidadeDiasPrazo, IdMatricula = usuarioTrilha.ID, Tipo = Constantes.TrilhaUC }; var limiteCancelamentoUsuario = usuarioTrilha.TrilhaNivel.LimiteCancelamento > 0 ? usuarioTrilha.DataInicio.AddDays(usuarioTrilha.TrilhaNivel.LimiteCancelamento) : usuarioTrilha.DataInicio.AddDays(usuarioTrilha.TrilhaNivel.QuantidadeDiasPrazo); if (string.IsNullOrEmpty(item.DataLimite)) { item.DataLimite = limiteCancelamentoUsuario.ToString("dd/MM/yyyy"); } item.CargaHoraria = usuarioTrilha.TrilhaNivel.CargaHoraria.ToString(); var urlPortal = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.EnderecoPortal).Registro; item.LinkAcesso = urlPortal + (urlPortal.EndsWith("/") ? "" : "/") + string.Format( ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.UrlTrilha) .Registro, usuarioTrilha.TrilhaNivel.ID); // Aprovado ou não aprovado na prova pode cancelar a matrícula caso esteja dentro da data de cancelamento try { if (limiteCancelamentoUsuario >= DateTime.Now) { item.HabilitaCancelamento = true; } else { item.HabilitaCancelamento = false; } } catch { item.HabilitaCancelamento = false; } resultado.Add(item); } } catch (Exception ex) { ErroUtil.Instancia.TratarErro(ex); } }