Esempio n. 1
0
        protected void btnEnviar_Click(object sender, EventArgs e)
        {
            try
            {
                MatriculaTurma       matriculaTurma       = this.ObterObjetoMatriculaTurma();
                ManterMatriculaTurma manterMatriculaTurma = new ManterMatriculaTurma();

                validaNotasMatricula(matriculaTurma);

                if (matriculaTurma.Turma.Oferta.TipoOferta != enumTipoOferta.Continua && matriculaTurma.DataTermino > matriculaTurma.DataLimite)
                {
                    throw new AcademicoException("A Data de Conclusão não pode ser maior que a Data Limite da Turma.");
                }

                var usuarioLogado = new ManterUsuario().ObterUsuarioLogado();
                matriculaTurma.Auditoria = new Auditoria(usuarioLogado.CPF);

                manterMatriculaTurma.AlterarMatriculaTurma(matriculaTurma);

                if (MatriculouAlunoEmUmaTurma != null)
                {
                    MatriculouAlunoEmUmaTurma(this, new MatricularAlunoEmUmaTurmaEventArgs(matriculaTurma));
                }
            }
            catch (AcademicoException ex)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
                return;
            }
        }
Esempio n. 2
0
        public RetornoWebService NotificarAlunosAprovadosTurmaQuestionarioPos()
        {
            var retorno = new RetornoWebService();

            var matriculasTurma = new ManterMatriculaTurma().ObterDeHoje();
            var mail            = new ManterEmail();
            var notificacao     = new ManterNotificacao();
            var confSistema     = new ManterConfiguracaoSistema().ObterConfiguracaoSistemaPorID((int)enumConfiguracaoSistema.EnderecoPortal30Dev);


            foreach (var matriculaTurma in matriculasTurma)
            {
                var turma      = matriculaTurma.Turma.Nome;
                var idTurma    = matriculaTurma.Turma.ID;
                var email      = matriculaTurma.MatriculaOferta.Usuario.Email;
                var usuario    = matriculaTurma.MatriculaOferta.Usuario.Nome;
                var idUsuario  = matriculaTurma.MatriculaOferta.Usuario.ID;
                var sidUsuario = matriculaTurma.MatriculaOferta.Usuario.SID_Usuario;

                var linkRedirect = string.Format("minhasinscricoes/questionario/{0}/turma/{1}", (int)enumTipoQuestionarioAssociacao.Pos, idTurma);
                var link         = string.Format("{0}networkLoginAuto/{1}/{2}",
                                                 confSistema.Registro,
                                                 System.Web.HttpContext.Current.Server.UrlEncode(Base64Encode(InfraEstrutura.Core.Helper.CriptografiaHelper.Criptografar(sidUsuario))),
                                                 Base64Encode(linkRedirect));

                var mensagem = ObterCorpo(usuario, turma, link);
                var assunto  = "Questionário de avaliação do curso: " + turma;
                mail.EnviarEmail(email, assunto, mensagem);

                notificacao.PublicarNotificacao(linkRedirect, mensagem, idUsuario);
            }

            return(retorno);
        }
Esempio n. 3
0
        private void ExibirInformacoesDeUmaMatriculaTurma(int idMatriculaTurma)
        {
            var matriculaTurma = new ManterMatriculaTurma().ObterMatriculaTurmaPorId(idMatriculaTurma);

            if (matriculaTurma != null)
            {
                CarregarDadosDaMatriculaTurmaDeUmAluno(matriculaTurma);
            }
        }
        //Notifica os Alunos de Primeiro envio
        //Em seguida inserir no fluxo de Log de Envio de e-mail.
        public void InserirAlunosPrimeiroEnvio(enumStatusMatricula?statusMatricula = null)
        {
            var matriculasTurma = new ManterMatriculaTurma().ObterPorIntervalo(Intervalo, statusMatricula);
            var manterQuestionarioAssociacaoEnvio = new ManterQuestionarioAssociacaoEnvio();

            foreach (var matriculaTurma in matriculasTurma)
            {
                manterQuestionarioAssociacaoEnvio.Inserir(matriculaTurma);
            }
        }
Esempio n. 5
0
        protected void btnSalvarModalDataConclusao_OnClick(object sender, EventArgs e)
        {
            try
            {
                if (!string.IsNullOrEmpty(hdfModalDataConclusaoIdMatriculaTurma.Value))
                {
                    var manterMatriculaTurma = new ManterMatriculaTurma();
                    var idMatriculaTurma     = Convert.ToInt32(hdfModalDataConclusaoIdMatriculaTurma.Value);
                    var matriculaTurma       = manterMatriculaTurma.ObterMatriculaTurmaPorId(idMatriculaTurma);

                    var dataConclusao = DateTime.Now;

                    if (!DateTime.TryParse(txtModalDataConclusao.Text, out dataConclusao))
                    {
                        throw new AcademicoException("Informe uma data válida para conclusão do aluno.");
                    }

                    matriculaTurma.DataTermino = dataConclusao;

                    var data = matriculaTurma.Turma.DataFinal;

                    if (data.HasValue)
                    {
                        if (matriculaTurma.DataTermino.Value.Date > data.Value.Date)
                        {
                            throw new AcademicoException(string.Format("Data de conclusão não pode ser maior que a data final da turma ({0}).", data.Value.ToString("dd/MM/yyyy")));
                        }
                    }

                    manterMatriculaTurma.AlterarMatriculaTurma(matriculaTurma);

                    var manterMatriculaOferta = new ManterMatriculaOferta();
                    var matriculaOferta       = manterMatriculaOferta.ObterMatriculaOfertaPorID(matriculaTurma.MatriculaOferta.ID);

                    AtualizarStatusDaOferta((enumStatusMatricula)Convert.ToInt32(hdfModalDataConclusaoIdStatusMatriculaOferta.Value), matriculaOferta, ref manterMatriculaOferta);

                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, "O Status da Matrícula da Turma foi Atualizado com Sucesso !");

                    consultarMatriculasUsuario();

                    AtualizarStatusUsuarioTurma(matriculaTurma);
                }

                OcultarModalDataConclusao();
            }
            catch (PoliticaConsequenciaException ex)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
            }
            catch (AcademicoException ex)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
            }
        }
Esempio n. 6
0
        private void TratarComboTurma(GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.TableSection = TableRowSection.TableHeader;
            }

            //Procura o dropdownlist de turma nas linhas da grid
            var ddlTurma = (DropDownList)e.Row.FindControl("ddlTurma");

            //Se encontrou o dropdownlist de turma, seta o status da matricula turma com o status da oferta
            if (ddlTurma != null)
            {
                var matriculaOferta = (classes.MatriculaOferta)e.Row.DataItem;

                if (matriculaOferta != null)
                {
                    // Preencher dropdown de turmas de acordo com a seleção do usuário.
                    PreencherDropDownTurma(ddlTurma, matriculaOferta);

                    classes.MatriculaTurma matriculaTurma = null;

                    if (matriculaOferta.MatriculaTurma == null && matriculaOferta.Oferta != null &&
                        matriculaOferta.Oferta.ListaTurma.Count > 0)
                    {
                        var lista  = new List <classes.MatriculaTurma>();
                        var mTurma =
                            new ManterMatriculaTurma().ObterMatriculaTurmaPorIdUsuarioIdTurma(
                                matriculaOferta.Usuario.ID, matriculaOferta.Oferta.ListaTurma.FirstOrDefault().ID);

                        if (mTurma != null)
                        {
                            lista.Add(mTurma);
                        }

                        matriculaOferta.MatriculaTurma = lista;
                    }

                    if (matriculaOferta.MatriculaTurma != null && matriculaOferta.MatriculaTurma.Count > 0)
                    {
                        matriculaTurma = matriculaOferta.MatriculaTurma.FirstOrDefault();
                    }

                    if (matriculaTurma != null)
                    {
                        WebFormHelper.SetarValorNaCombo(matriculaTurma.Turma.ID.ToString(), ddlTurma);
                    }
                }
            }
        }
Esempio n. 7
0
        public void AtualizarMatriculas()
        {
            try
            {
                // Atualiza as matrículas de acordo com a data atual
                var presencas = ObterPresencasEventoFinalizado(DateTime.Now);

                AtualizarPresencas(presencas);

                using (var manter = new ManterMatriculaTurma())
                {
                    // Filtrando matriculas que contem algum dos eventos vinculado
                    var matriculasTurma = manter.ObterMatriculasComEventos(presencas.ToList());

                    foreach (var matricula in matriculasTurma)
                    {
                        var evento = presencas.FirstOrDefault(x => x.UsuarioCPF == matricula.MatriculaOferta.Usuario.CPF &&
                                                              x.ID == matricula.MatriculaOferta.Oferta.SolucaoEducacional.IDEvento);

                        if (evento != null)
                        {
                            if (evento.Presencas == 0)
                            {
                                matricula.MatriculaOferta.StatusMatricula = enumStatusMatricula.Abandono;
                            }

                            if (evento.Presencas < evento.PresencasMinimas)
                            {
                                matricula.MatriculaOferta.StatusMatricula = enumStatusMatricula.Reprovado;
                            }

                            if (evento.Presencas > evento.PresencasMinimas)
                            {
                                matricula.MatriculaOferta.StatusMatricula = enumStatusMatricula.Aprovado;
                            }
                        }
                    }

                    manter.Salvar(matriculasTurma.ToList());
                }
            }
            catch (Exception)
            {
            }
        }
Esempio n. 8
0
        /// <summary>
        /// Atualiza Matriculas de acordo com os dados dos eventos do sistema de credenciamento
        /// </summary>
        /// <param name="presencas"></param>
        private void AtualizarPresencas(IEnumerable <DTOEvento> presencas)
        {
            using (var manter = new ManterMatriculaTurma())
            {
                // Filtrando matriculas que contem algum dos eventos vinculado
                var matriculasTurma = manter.ObterMatriculasComEventos(presencas.ToList());

                foreach (var matricula in matriculasTurma)
                {
                    var evento = presencas.FirstOrDefault(x => x.ID == matricula.MatriculaOferta.Oferta.SolucaoEducacional.IDEvento);

                    matricula.Presencas      = evento.Presencas;
                    matricula.TotalPresencas = evento.PresencasMinimas != null ? evento.PresencasMinimas.Value : 0;
                }

                manter.Salvar(matriculasTurma.ToList());
            }
        }
Esempio n. 9
0
        protected void btnSimModalConfirmacaoStatusInscrito_OnClick(object sender, EventArgs e)
        {
            try
            {
                if (!string.IsNullOrEmpty(hdfModalConfirmacaoStatusInscritoIdMatriculaTurma.Value))
                {
                    var manterMatriculaTurma = new ManterMatriculaTurma();
                    var idMatriculaTurma     = Convert.ToInt32(hdfModalConfirmacaoStatusInscritoIdMatriculaTurma.Value);
                    var matriculaTurma       = manterMatriculaTurma.ObterMatriculaTurmaPorId(idMatriculaTurma);
                    if (matriculaTurma != null)
                    {
                        matriculaTurma.DataTermino = null;

                        manterMatriculaTurma.Salvar(matriculaTurma);

                        var manterMatriculaOferta = new ManterMatriculaOferta();
                        var matriculaOferta       =
                            manterMatriculaOferta.ObterMatriculaOfertaPorID(matriculaTurma.MatriculaOferta.ID);

                        AtualizarStatusDaOferta(enumStatusMatricula.Inscrito, matriculaOferta, ref manterMatriculaOferta);

                        WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso,
                                                     "O Status da Matrícula da Turma foi Atualizado com Sucesso !");

                        consultarMatriculasUsuario();
                        AtualizarStatusUsuarioTurma(matriculaTurma);
                    }
                }

                OcultarModalConfirmacaoStatusInscrito();
            }
            catch (PoliticaConsequenciaException ex)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
            }
            catch (AcademicoException ex)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
            }
        }
Esempio n. 10
0
        public void SalvarQuestionario()
        {
            try
            {
                QuestionarioParticipacao questionarioParticipacao;

                if (!string.IsNullOrWhiteSpace(hdnIdQuestionarioParticipacao.Value))
                {
                    questionarioParticipacao = new ManterQuestionarioParticipacao().ObterQuestionarioParticipacaoPorId(int.Parse(hdnIdQuestionarioParticipacao.Value));
                }
                else
                {
                    var questionario = new ManterQuestionario().ObterQuestionarioPorID(int.Parse(hdnIdQuestionario.Value));

                    var usuarioLogado = new ManterUsuario().ObterUsuarioLogado();

                    questionarioParticipacao = new QuestionarioParticipacao
                    {
                        Questionario               = questionario,
                        DataGeracao                = DateTime.Now,
                        Usuario                    = usuarioLogado,
                        DataParticipacao           = DateTime.Now,
                        TipoQuestionarioAssociacao = new ManterTipoQuestionarioAssociacao().ObterTipoQuestionarioAssociacaoPorID(5),
                        TextoEnunciadoPre          = questionario.TextoEnunciado,
                        Evolutivo                  = false,
                        NivelOcupacional           = new NivelOcupacional {
                            ID = usuarioLogado.NivelOcupacional.ID
                        },
                        Uf = new Uf {
                            ID = usuarioLogado.UF.ID
                        },
                        Turma = new Turma {
                            ID = int.Parse(hdnIdTurma.Value)
                        }
                    };
                }

                var listaItemQuestionarioParticipacao = new List <ItemQuestionarioParticipacao>();

                // Obter respostas dissertivas do questionário.
                foreach (Control row in rptQuestionario.Controls)
                {
                    var hdnIdItemQuestionario = (HiddenField)row.FindControl("hdnIdItemQuestionario");

                    if (hdnIdItemQuestionario == null)
                    {
                        throw new AcademicoException("Questionário mal formatado ou alterado, atualize a página e tente novamente.");
                    }

                    int idItemQuestionario;
                    int.TryParse(hdnIdItemQuestionario.Value, out idItemQuestionario);

                    var itemQuestionario = new ManterItemQuestionario().ObterItemQuestionarioPorID(idItemQuestionario);

                    if (itemQuestionario == null)
                    {
                        throw new AcademicoException("Questionário mal formatado ou alterado, atualize a página e tente novamente.");
                    }

                    var txtResposta = (TextBox)row.FindControl("txtResposta");

                    if (txtResposta == null)
                    {
                        throw new AcademicoException("Questionário mal formatado ou alterado, atualize a página e tente novamente.");
                    }

                    var itemQuestionarioParticipacao = Mapper.Map <ItemQuestionarioParticipacao>(itemQuestionario);

                    itemQuestionarioParticipacao.QuestionarioParticipacao = questionarioParticipacao;

                    if (itemQuestionarioParticipacao.TipoItemQuestionario.ID == (int)enumTipoItemQuestionario.Discursiva)
                    {
                        // Validação do campo em branco.
                        if (string.IsNullOrWhiteSpace(txtResposta.Text))
                        {
                            throw new AcademicoException(string.Format("A questão \"{0}\" é obrigatória",
                                                                       string.IsNullOrWhiteSpace(itemQuestionarioParticipacao.Ordem.ToString())
                                    ? itemQuestionarioParticipacao.Questao
                                    : itemQuestionarioParticipacao.Ordem.ToString()));
                        }

                        itemQuestionarioParticipacao.Resposta = txtResposta.Text;
                    }

                    listaItemQuestionarioParticipacao.Add(itemQuestionarioParticipacao);
                }

                questionarioParticipacao.ListaItemQuestionarioParticipacao = listaItemQuestionarioParticipacao;

                // Executar lógica para questionário de cancelamento.
                if (questionarioParticipacao.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Cancelamento)
                {
                    var matriculasTurmasIds = hdnIdMatriculaTurma.Value.Split(',');

                    foreach (var matriculaIdString in matriculasTurmasIds)
                    {
                        int matriculaId;

                        if (int.TryParse(matriculaIdString, out matriculaId))
                        {
                            var matriculaTurma       = new MatriculaTurma();
                            var manterMatriculaTurma = new ManterMatriculaTurma();

                            if (matriculaId > 0)
                            {
                                matriculaTurma = manterMatriculaTurma.ObterMatriculaTurmaPorId(matriculaId);

                                // Caso seja Gestor, só altera a matrícula caso seja da sua UF.
                                if (matriculaTurma != null)
                                {
                                    questionarioParticipacao.Turma = matriculaTurma.Turma;
                                }
                            }

                            // Alterar Status da matrícula.
                            if (matriculaTurma != null && matriculaTurma.ID != 0)
                            {
                                var manterMatriculaOferta = new ManterMatriculaOferta();

                                var matriculaOferta = manterMatriculaOferta.ObterMatriculaOfertaPorID(matriculaTurma.MatriculaOferta.ID);

                                matriculaOferta.StatusMatricula = (enumStatusMatricula)int.Parse(hdnIdStatusMatricula.Value);

                                // Salvar Data de conclusão e nota final em lote
                                if ((!string.IsNullOrWhiteSpace(txtDataConclusao.Text) ||
                                     !string.IsNullOrWhiteSpace(hdnNotaFinal.Value)) &&
                                    matriculaOferta.Oferta.SolucaoEducacional.FormaAquisicao.Presencial)
                                {
                                    var dataConclusao = CommonHelper.TratarData(txtDataConclusao.Text,
                                                                                "Data Conclusão do lote");

                                    double?notaFinal = null;

                                    double n;

                                    if (double.TryParse(hdnNotaFinal.Value.Trim(), out n))
                                    {
                                        notaFinal = n;
                                    }

                                    foreach (var mt in matriculaOferta.MatriculaTurma)
                                    {
                                        if (dataConclusao.HasValue &&
                                            (!mt.Turma.DataFinal.HasValue || mt.Turma.DataFinal.Value >= dataConclusao))
                                        {
                                            mt.DataTermino = dataConclusao;
                                        }

                                        if (notaFinal.HasValue)
                                        {
                                            mt.MediaFinal = notaFinal;
                                        }
                                    }
                                }

                                manterMatriculaOferta.AtualizarMatriculaOferta(matriculaOferta, false);

                                matriculaTurma.DataTermino = !string.IsNullOrEmpty(txtDataConclusao.Text) ? DateTime.Parse(txtDataConclusao.Text) : DateTime.Now;

                                manterMatriculaTurma.AlterarMatriculaTurma(matriculaTurma);
                            }
                        }
                    }
                }

                // Salvar participação no questionário.
                new ManterQuestionarioParticipacao().Salvar(questionarioParticipacao);

                WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, "Questionário respondido com Sucesso.");
            }
            catch (AcademicoException ex)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
            }
        }
Esempio n. 11
0
        private void EfetuarMatricula(Usuario usuarioLogado, Dominio.Classes.Oferta oferta, Usuario usuario, ManterMatriculaOferta manterMatriculaOferta, ManterMatriculaTurma manterMatriculaTurma)
        {
            var novaMatriculaOferta = new MatriculaOferta
            {
                Auditoria       = new Auditoria(usuarioLogado.CPF),
                Oferta          = oferta,
                Usuario         = usuario,
                StatusMatricula = enumStatusMatricula.Inscrito,
                UF = usuario.UF,
                NivelOcupacional = usuario.NivelOcupacional,
                DataSolicitacao  = DateTime.Today
            };

            manterMatriculaOferta.Salvar(novaMatriculaOferta);

            var novaMatriculaTurma = new MatriculaTurma
            {
                Auditoria = new Auditoria(usuarioLogado.CPF),
                Turma     =
                    oferta.ListaTurma.FirstOrDefault(t => Helpers.Util.ObterVigente(t.DataInicio, t.DataFinal)),
                MatriculaOferta = novaMatriculaOferta,
                DataMatricula   = DateTime.Today
            };

            novaMatriculaTurma.DataLimite = novaMatriculaTurma.CalcularDataLimite();

            manterMatriculaTurma.Salvar(novaMatriculaTurma);
        }
Esempio n. 12
0
        private void EfetuarMatriculas(IList <SolucaoEducacionalObrigatoria> solucoesObrigatorias, IQueryable <Usuario> usuariosTodosNiveis)
        {
            // Obtém somente os campos que serão utilizados abaixo;
            var usuarioLogado = new ManterUsuario().ObterUsuarioLogado();

            var manterMatriculaOferta = new ManterMatriculaOferta();
            var manterMatriculaTurma  = new ManterMatriculaTurma();

            // Matricular usuário.
            var thread = new Thread(() =>
            {
                var currentThread = Thread.CurrentThread;

                try
                {
                    if (solucoesObrigatorias != null)
                    {
                        foreach (var obrigatorio in solucoesObrigatorias)
                        {
                            try
                            {
                                // Obter usuários do nível ocupacional da solução obrigatória.
                                var listaUsuariosNivelOcupacional =
                                    usuariosTodosNiveis.Where(x => x.NivelOcupacional.ID == obrigatorio.NivelOcupacional.ID);

                                // Obter somente os usuários que NÃO estão matriculados na solução.
                                listaUsuariosNivelOcupacional =
                                    listaUsuariosNivelOcupacional.Where(
                                        x =>
                                        x.ListaMatriculaOferta.All(
                                            y => y.Oferta.SolucaoEducacional.ID != obrigatorio.SolucaoEducacional.ID));

                                var oferta =
                                    obrigatorio.SolucaoEducacional.ListaOferta.FirstOrDefault(
                                        x =>
                                        Helpers.Util.ObterVigente(x.DataInicioInscricoes, x.DataFimInscricoes) &&
                                        x.ListaTurma.Any(t => Helpers.Util.ObterVigente(t.DataInicio, t.DataFinal)));

                                // Caso não exista oferta vigente com turma vigente, pula a solução.
                                if (oferta == null)
                                {
                                    currentThread.Abort();
                                }

                                // Seleciona somente os campos necessários.
                                listaUsuariosNivelOcupacional = listaUsuariosNivelOcupacional.Select(x => new Usuario
                                {
                                    ID = x.ID,
                                    UF = x.UF,
                                    NivelOcupacional     = x.NivelOcupacional,
                                    ListaMatriculaOferta = x.ListaMatriculaOferta
                                });

                                foreach (var usuario in listaUsuariosNivelOcupacional)
                                {
                                    try
                                    {
                                        EfetuarMatricula(usuarioLogado, oferta, usuario, manterMatriculaOferta,
                                                         manterMatriculaTurma);
                                    }
                                    catch (Exception)
                                    {
                                        // ignored.
                                    }
                                }
                            }
                            catch (Exception)
                            {
                                // ignored.
                            }
                        }
                    }

                    currentThread.Abort();
                }
                catch (ThreadAbortException)
                {
                    // ignored
                }
            });

            thread.IsBackground = true;

            thread.Start();
        }
Esempio n. 13
0
        public DTOAgenda ObterAgenda(int idUsuario, int mes, int ano)
        {
            var listaErros = new List <string>();

            var dataInicioMes = (new DateTime(ano, mes, 1));
            var dataFimMes    = dataInicioMes.AddMonths(1).AddDays(-1);
            var diaSemana     = ((int)DateTime.Now.DayOfWeek);

            if (diaSemana == 0)
            {
                diaSemana = 6;
            }
            else
            {
                diaSemana = diaSemana - 1;
            }

            var diaSemanaInicioMes = (int)dataInicioMes.DayOfWeek;

            if (diaSemanaInicioMes == 0)
            {
                diaSemanaInicioMes = 6;
            }
            else
            {
                diaSemanaInicioMes = diaSemanaInicioMes - 1;
            }
            var      listaEventos         = new List <DTOEventoAgenda>();
            var      manterMatriculaTurma = new ManterMatriculaTurma();
            DateTime?dataInicio           = DateTime.Now.Date;
            DateTime?dataFim = DateTime.Now.Date;
            IList <MatriculaTurma> listaCursoInscritos;
            var anoInicial = DateTime.Now.Year;

            try
            {
                listaCursoInscritos = manterMatriculaTurma.ObterMatriculasInscritas(idUsuario);
            }
            catch (Exception ex)
            {
                listaErros.Add(ex.ToString());
                listaCursoInscritos = new List <MatriculaTurma>();
                //TODO: LOGAR ERROR
                //TODO: MELHORAR TRATAMENTO DE COMO RECUPERAR OS DADOS
            }
            //TODO: MELHORAR pois não achei melhor solução

            try
            {
                foreach (var matriculaTurma in listaCursoInscritos)
                {
                    var data = matriculaTurma.Turma.DataInicio;

                    if (data.Year < anoInicial)
                    {
                        anoInicial = data.Year;
                    }
                    try
                    {
                        data = matriculaTurma.MatriculaOferta.DataSolicitacao.Date > data.Date
                            ? matriculaTurma.MatriculaOferta.DataSolicitacao.Date
                            : data;

                        if (data.Date.Between(dataInicioMes.Date, dataFimMes.Date))
                        {
                            listaEventos.Add(new DTOEventoAgenda
                            {
                                TipoEvento           = (int)enumTipoEventoAgenda.Inicio,
                                Data                 = data.ToString("dd/MM/yyyy"),
                                Nome                 = matriculaTurma.Turma.Oferta.SolucaoEducacional.Nome,
                                IdSolucaoEducacional = matriculaTurma.Turma.Oferta.SolucaoEducacional.ID,
                                IdTurma              = matriculaTurma.Turma.ID,
                                IdOferta             = matriculaTurma.Turma.Oferta.ID,
                                IdMatriculaOferta    = matriculaTurma.MatriculaOferta.ID,
                                IdMatriculaTurma     = matriculaTurma.ID.ToString()
                            });
                        }
                    }
                    catch (Exception ex)
                    {
                        listaErros.Add(ex.ToString());
                    }

                    dataInicio = dataInicio.Value.Date > data.Date ? data.Date : dataInicio;

                    try
                    {
                        data = matriculaTurma.CalcularDataLimite();

                        if (data.Date.Between(dataInicioMes.Date, dataFimMes.Date))
                        {
                            listaEventos.Add(new DTOEventoAgenda
                            {
                                TipoEvento           = (int)enumTipoEventoAgenda.Fim,
                                Data                 = data.ToString("dd/MM/yyyy"),
                                Nome                 = matriculaTurma.Turma.Oferta.SolucaoEducacional.Nome,
                                IdSolucaoEducacional = matriculaTurma.Turma.Oferta.SolucaoEducacional.ID,
                                IdTurma              = matriculaTurma.Turma.ID,
                                IdOferta             = matriculaTurma.Turma.Oferta.ID,
                                IdMatriculaOferta    = matriculaTurma.MatriculaOferta.ID,
                                IdMatriculaTurma     = matriculaTurma.ID.ToString()
                            });
                        }
                    }
                    catch (Exception ex)
                    {
                        listaErros.Add(ex.ToString());
                    }
                    dataFim = dataFim.Value.Date < data.Date ? data.Date : dataFim;
                }
            }
            catch (Exception ex)
            {
                listaErros.Add(ex.ToString());
            }

            try
            {
                var listaUsuarioTrilha =
                    (new BMUsuarioTrilha()).ObterPorUsuario(idUsuario)
                    .Where(p => p.StatusMatricula == enumStatusMatricula.Inscrito)
                    .ToList();
                foreach (var item in listaUsuarioTrilha)
                {
                    var data = item.DataInicio;
                    if (data.Year < anoInicial)
                    {
                        anoInicial = data.Year;
                    }
                    if (data.Date.Between(dataInicioMes.Date, dataFimMes.Date))
                    {
                        listaEventos.Add(new DTOEventoAgenda
                        {
                            TipoEvento           = (int)enumTipoEventoAgenda.Inicio,
                            Data                 = data.ToString("dd/MM/yyyy"),
                            Nome                 = string.Concat(item.TrilhaNivel.Trilha.Nome, " - ", item.TrilhaNivel.Nome),
                            IdSolucaoEducacional = 0,
                            IdTurma              = 0,
                            IdOferta             = 0,
                            IdMatriculaOferta    = 0,
                            IdMatriculaTurma     = item.ID + "000" + item.TrilhaNivel.ID
                        });
                    }
                    data = item.DataFim.HasValue
                        ? item.DataFim.Value
                        : (item.TrilhaNivel.LimiteCancelamento > 0
                            ? item.DataInicio.AddDays(item.TrilhaNivel.LimiteCancelamento)
                            : item.DataInicio.AddDays(item.TrilhaNivel.QuantidadeDiasPrazo));
                    if (data.Date.Between(dataInicioMes.Date, dataFimMes.Date))
                    {
                        listaEventos.Add(new DTOEventoAgenda
                        {
                            TipoEvento           = (int)enumTipoEventoAgenda.Fim,
                            Data                 = data.ToString("dd/MM/yyyy"),
                            Nome                 = string.Concat(item.TrilhaNivel.Trilha.Nome, " - ", item.TrilhaNivel.Nome),
                            IdSolucaoEducacional = 0,
                            IdTurma              = 0,
                            IdOferta             = 0,
                            IdMatriculaOferta    = 0,
                            IdMatriculaTurma     = item.ID + "000" + item.TrilhaNivel.ID
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                listaErros.Add(ex.ToString());
            }

            try
            {
                var listaMatriculaCapacitacao =
                    new BMMatriculaCapacitacao().ObterPorUsuario(idUsuario)
                    .Where(x => x.StatusMatricula.Equals(enumStatusMatricula.Inscrito))
                    .ToList();
                var manterMatCapacitacao = new ManterMatriculaCapacitacaoService();
                var culture = new CultureInfo("pt-BR");
                foreach (var itemHistorico in listaMatriculaCapacitacao)
                {
                    var dtoCapacitacao = manterMatCapacitacao.AprovacoesSolucoesEducacionais(itemHistorico, idUsuario);
                    foreach (var item in dtoCapacitacao.ModulosCapacitacao)
                    {
                        DateTime data;
                        if (!string.IsNullOrEmpty(item.DataInicio))
                        {
                            data = Convert.ToDateTime(item.DataInicio, culture);
                            if (data.Year < anoInicial)
                            {
                                anoInicial = data.Year;
                            }
                            if (data.Date.Between(dataInicioMes.Date, dataFimMes.Date))
                            {
                                listaEventos.Add(new DTOEventoAgenda
                                {
                                    TipoEvento           = (int)enumTipoEventoAgenda.Inicio,
                                    Data                 = data.ToString("dd/MM/yyyy"),
                                    Nome                 = string.Concat(itemHistorico.Capacitacao.Programa.Nome, " - ", item.Nome),
                                    IdSolucaoEducacional = 0,
                                    IdTurma              = 0,
                                    IdOferta             = 0,
                                    IdMatriculaOferta    = 0,
                                    IdMatriculaTurma     =
                                        itemHistorico.ID + itemHistorico.Capacitacao.Programa.ID.ToString() +
                                        itemHistorico.Capacitacao.ID.ToString() + "000" + item.ID
                                });
                            }
                        }
                        if (string.IsNullOrEmpty(item.DataFim))
                        {
                            continue;
                        }
                        data = Convert.ToDateTime(item.DataFim, culture);
                        if (data.Date.Between(dataInicioMes.Date, dataFimMes.Date))
                        {
                            listaEventos.Add(new DTOEventoAgenda
                            {
                                TipoEvento           = (int)enumTipoEventoAgenda.Fim,
                                Data                 = data.ToString("dd/MM/yyyy"),
                                Nome                 = string.Concat(itemHistorico.Capacitacao.Programa.Nome, " - ", item.Nome),
                                IdSolucaoEducacional = 0,
                                IdTurma              = 0,
                                IdOferta             = 0,
                                IdMatriculaOferta    = 0,
                                IdMatriculaTurma     =
                                    itemHistorico.ID + itemHistorico.Capacitacao.Programa.ID.ToString() +
                                    itemHistorico.Capacitacao.ID.ToString() + "000" + item.ID
                            });
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                listaErros.Add(ex.ToString());
            }

            return(new DTOAgenda
            {
                DataAtual = DateTime.Now.ToString("dd/MM/yyyy"),
                DataInicioMes = dataInicioMes.ToString("dd/MM/yyyy"),
                DataFimMes = dataFimMes.ToString("dd/MM/yyyy"),
                DiaSemana = diaSemana.ToString(),
                DiaSemanaInicioMes = diaSemanaInicioMes.ToString(),
                Eventos = listaEventos.OrderByDescending(x => x.TipoEvento).ToList(),
                AnoInicial = anoInicial,
                AnoFinal = dataFim.Value.Year,
                Erros = listaErros
            });
        }