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); }
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."); }