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);
        }
Пример #2
0
        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);
            }
        }
Пример #3
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);
            }
        }
Пример #4
0
        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);
            }
        }