Пример #1
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);
        }
Пример #2
0
        private void ValidarAvaliacao(bool aprovar)
        {
            try
            {
                var turma = ObterTurma();

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

                if (UsuarioPodeValidarAvaliacao(turma, usuarioLogado))
                {
                    var avaliacao = turma.Avaliacoes.FirstOrDefault();

                    if (avaliacao != null)
                    {
                        var manterMatriculaOferta = new ManterMatriculaOferta();
                        var manterAvaliacao       = new ManterAvaliacao();

                        var emailsAlunos = new List <string>();

                        // Alterar status das matrículas.
                        foreach (var respostaId in avaliacao.Respostas.Where(x => x.Questao.Tipo == enumTipoQuestao.Resultado).Select(x => x.ID))
                        {
                            // Busca a resposta denovo do banco pois o NHibernate tá pirando com o Lazy.
                            var resposta = manterAvaliacao.ObterQuestaoRespostaPorId(respostaId);

                            var matricula = resposta.MatriculaTurma.MatriculaOferta;

                            // Adicionar emails para envio posterior.
                            if (aprovar && !string.IsNullOrWhiteSpace(matricula.Usuario.Email))
                            {
                                emailsAlunos.Add(matricula.Usuario.Email);
                            }

                            if (resposta.StatusMatricula != null)
                            {
                                matricula.StatusMatricula = (enumStatusMatricula)resposta.StatusMatricula.ID;

                                manterMatriculaOferta.Salvar(matricula);
                            }
                        }

                        // Mandar e-mail aos alunos caso a avaliação seja aprovada.
                        if (aprovar)
                        {
                            var manterEmail = new ManterEmail();

                            var template = new ManterTemplate().ObterTemplatePorID((int)enumTemplate.ResultadoAvaliacao);

                            var thread = new Thread(() =>
                            {
                                foreach (var email in emailsAlunos)
                                {
                                    manterEmail.EnviarEmail(email, template.Assunto ?? template.DescricaoTemplate, template.TextoTemplate);
                                }
                            })
                            {
                                IsBackground = true
                            };

                            thread.Start();
                        }

                        // Finalizar status da avaliação e setar o usuário que analisou.
                        avaliacao.Status   = aprovar ? enumStatusAvaliacao.Aprovada : enumStatusAvaliacao.AguardandoResposta;
                        avaliacao.Analista = usuarioLogado;

                        manterAvaliacao.Salvar(avaliacao);

                        WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso,
                                                     "Avaliação " + (!aprovar ? "não" : "") + " aprovada com sucesso",
                                                     "GerenciamentoMatricula.aspx?oferta=" + turma.Oferta.ID);
                        return;
                    }
                }
            }
            catch (Exception)
            {
                // ignored.
            }

            WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro,
                                         "Houve um erro na validação da avaliação. Tente novamente.");
        }