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); } }
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 List <DTOCapacitacao> ConsultarCapacitacoes(int idUsuario, int idCapacitacao = 0, int idPrograma = 0, string nome = "") { Usuario usuario = new BMUsuario().ObterPorId(idUsuario); if (usuario == null) { throw new AcademicoException("Usuário não localizado na base"); } Capacitacao objCapacitacao = new Capacitacao(); if (idPrograma > 0) { objCapacitacao.Programa.ID = idPrograma; } if (!string.IsNullOrEmpty(nome)) { objCapacitacao.Nome = nome; } if (idCapacitacao > 0) { objCapacitacao.ID = idCapacitacao; } IList <Capacitacao> ListaCapacitacoes = new BMCapacitacao().ObterPorFiltroNoPeriodoInscricoes(objCapacitacao); if (ListaCapacitacoes.Count == 0 || ListaCapacitacoes == null) { throw new AcademicoException("Não há capacitações disponíveis"); } List <DTOCapacitacao> retorno = new List <DTOCapacitacao>(); IList <MatriculaCapacitacao> capacitacoesJaMatriculado = new BMMatriculaCapacitacao().ObterPorUsuario(usuario.ID); foreach (var cap in ListaCapacitacoes) { DTOCapacitacao listReturn = new DTOCapacitacao(); listReturn.jaInscrito = false; if (capacitacoesJaMatriculado.Count > 0) { var jaInscrito = capacitacoesJaMatriculado.Where(x => x.Capacitacao.ID == cap.ID).ToList(); if (jaInscrito.Count > 0) { listReturn.jaInscrito = true; } } listReturn.ID = cap.ID; listReturn.NomeCapacitacao = cap.Nome; listReturn.DataInicio = cap.DataInicio.ToString("dd/MM/yyyy"); listReturn.DataFim = cap.DataFim.HasValue ? cap.DataFim.Value.ToString("dd/MM/yyyy") : ""; listReturn.DataInicioInscricoes = cap.DataInicioInscricao.HasValue ? cap.DataInicioInscricao.Value.ToString("dd/MM/yyyy") : ""; listReturn.DataFimInscricoes = cap.DataFimInscricao.HasValue ? cap.DataFimInscricao.Value.ToString("dd/MM/yyyy") : ""; listReturn.Programa.ID = cap.Programa.ID; listReturn.Programa.Nome = cap.Programa.Nome; listReturn.Programa.Ativo = cap.Programa.Ativo; listReturn.descricao = cap.Descricao; listReturn.TurmaCapacitacao = cap.ListaTurmas.Select(f => new DTOTurmaCapacitacao { ID = f.ID, Nome = f.Nome }).ToList(); listReturn.PodeRealizarIscricao = cap.DataInicioInscricao.HasValue && cap.DataFimInscricao.HasValue && (DateTime.Now > cap.DataInicioInscricao.Value && DateTime.Now < cap.DataFimInscricao.Value); retorno.Add(listReturn); } return(retorno); }