Exemple #1
0
        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);
        }