private void ObterOferta(int solucaoEducacionalId) { var manterSolucaoEducacional = new ManterOferta(); var listaSolucaoEducacional = manterSolucaoEducacional.ObterOfertaPorSolucaoEducacional(new classes.SolucaoEducacional { ID = solucaoEducacionalId }).ToList(); listaSolucaoEducacional.Insert(0, new classes.Oferta { Nome = "::Selecione::" }); ddlOferta.DataSource = listaSolucaoEducacional; ddlOferta.DataValueField = "ID"; ddlOferta.DataTextField = "Nome"; ddlOferta.DataBind(); // Na troca de solução educacional caso tenha itens no combo de turma zera a sua listagem if (ddlTurma.Items.Count > 0) { IList <classes.Turma> ListaTurma = new List <classes.Turma>(); ListaTurma.Insert(0, new classes.Turma { Nome = "::Selecione::" }); ddlTurma.DataSource = ListaTurma; ddlTurma.DataValueField = "ID"; ddlTurma.DataTextField = "Nome"; ddlTurma.DataBind(); } }
private void IniciarThreadGeral() { var manterSe = new ManterSolucaoEducacional(); var manterOferta = new ManterOferta(); var manterPr = new ManterPrograma(); var manterCp = new ManterCapacitacao(); var manterTr = new ManterTrilha(); var bmConfiguracaoSistema = new BMConfiguracaoSistema(); var bmLogSincronia = new BMLogSincronia(); var usuarioLogado = new ManterUsuario().ObterUsuarioLogado(); var somenteNaoSincronizados = ckbSomenteNaoSincronizados.Checked; var thread = new Thread(() => { EnviarSolucoes(manterSe, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado, somenteNaoSincronizados); EnviarOfertas(manterOferta, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado, somenteNaoSincronizados); EnviarProgramasCapacitacoes(manterPr, manterCp, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado, somenteNaoSincronizados); EnviarTrilhas(manterTr, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado, somenteNaoSincronizados); }) { IsBackground = true, Name = Guid.NewGuid().ToString() }; thread.Start(); }
private void ObterOferta(int solucaoEducacionalId) { var ofertas = new ManterOferta().ObterOfertasPorGestor(solucaoEducacionalId); txtOferta.Text = ""; ViewState["_Oferta"] = solucaoEducacionalId == 0 ? null : Helpers.Util.ObterListaAutocomplete(ofertas); txtTurma.Text = ""; ViewState["_Turma"] = null; }
private void BuscarOfertasJson(int solucaoId) { var turmasSelecionadas = ObterTurmasSelecionadas(false).Select(x => x.ID).ToList(); // Buscar ofertas da SE e remover ofertas cujas todas as turmas já estejam selecionadas. var ofertas = new ManterOferta().ObterOfertaPorSolucaoEducacional(solucaoId).Where(x => x.ListaTurma.Any() && !x.ListaTurma.Select(t => t.ID).All(turmaId => turmasSelecionadas.Contains(turmaId))); ViewState["_Oferta"] = Helpers.Util.ObterListaAutocomplete(ofertas); }
private void ObterInformacoesDaOfertaPorSolucaoEducacional(int idSolucaoEducacional) { var solucaoEducacional = new SolucaoEducacional() { ID = idSolucaoEducacional }; var listaOferta = new ManterOferta().ObterOfertaPorSolucaoEducacional(solucaoEducacional); WebFormHelper.PreencherLista(listaOferta, ddlOferta, false, true); }
public IQueryable <Oferta> ListaOferta(DTOFiltroRelatorioQuestionario filtro) { if (filtro.IdSolucaoEducacional == null) { return(null); } if (filtro.IsRelatorioTutor) { if (filtro.IdProfessor == null) { return(null); } // Obtém os ids das Ofertas da SE informada que possuem o professor informado e que possuam turmas com questionários pós de pesquisa. var ofertas = new ManterTurmaProfessor().ObterTurmaProfessorPorProfessor(filtro.IdProfessor.Value).Where(x => x.Turma.Oferta.SolucaoEducacional.ID == filtro.IdSolucaoEducacional.Value && x.Turma.ListaQuestionarioAssociacao.Any( qa => qa.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Pos && qa.Questionario.TipoQuestionario.ID == (int)enumTipoQuestionario.Pesquisa)) .Select(x => x.Turma.Oferta.ID) .Distinct() .ToList(); // Tem que consultar novamente porque o Distinct não funciona acima porque a tabela possui campo text, que não pode ser distinguível. return(new ManterOferta().ObterTodasOfertas().Where(x => ofertas.Contains(x.ID))); } var retorno = new ManterOferta().ObterOfertaPorSolucaoEducacional(new SolucaoEducacional { ID = filtro.IdSolucaoEducacional.Value }); if (filtro.IdQuestionario > 0) { retorno = retorno.Where(x => x.ListaTurma.Any(t => t.ListaQuestionarioAssociacao.Any(q => q.Questionario.ID == filtro.IdQuestionario))); } return(retorno.Where(x => x.ListaTurma.Any(t => t.ListaQuestionarioAssociacao.Any())).OrderBy(x => x.Nome).AsQueryable()); }
private static bool VerificarDisponibilidadeOfertasPorPermissoes(Usuario usuario, int solucaoId, ref DTODisponibilidadeSolucaoEducacional retorno) { var manterOferta = new ManterOferta(); //var ofertas = manterOferta.ObterOfertaPorSolucaoEducacional(solucaoId).Where( // x => // ((x.DataFim.HasValue && x.DataFim.Value.Date >= DateTime.Today) || (!x.DataFim.HasValue)) && // (x.DataInicioInscricoes.HasValue && x.DataInicioInscricoes.Value.Date <= DateTime.Today) && // (x.TipoOferta == enumTipoOferta.Continua || // (x.DataFimInscricoes.HasValue && x.DataFimInscricoes.Value.Date >= DateTime.Today)) && // // Seria sábio utilizar o método PossuiTurmasDisponiveis() da Oferta.cs, se o NHibernte não pirasse. // x.ListaTurma.Any(t => t.Status != enumStatusTurma.Cancelada && t.InAberta)) // .ToList() // // Somente usuários que possuem permissão de inscrição. // .Where(x => x.UsuarioPossuiPermissao(usuario)) // .OrderBy(x => x.DataInicio) // .ToList(); var ofertas = manterOferta.ObterOfertaPorSolucaoEducacional(solucaoId).Where( x => (x.DataInicioInscricoes.HasValue && x.DataInicioInscricoes.Value.Date <= DateTime.Today) && (x.TipoOferta == enumTipoOferta.Continua || (x.DataFimInscricoes.HasValue && x.DataFimInscricoes.Value.Date >= DateTime.Today)) && // Seria sábio utilizar o método PossuiTurmasDisponiveis() da Oferta.cs, se o NHibernte não pirasse. x.ListaTurma.Any(t => (!t.Status.HasValue || t.Status != enumStatusTurma.Cancelada) && t.InAberta)) .ToList() // Somente usuários que possuem permissão de inscrição. .Where(x => x.UsuarioPossuiPermissao(usuario)) .OrderBy(x => x.DataInicioInscricoes) .ToList(); foreach (var oferta in ofertas) { VerificarDisponibilidadeOferta(usuario, oferta, ref retorno); } if (retorno.IdOferta.HasValue || retorno.OfertasDisponiveis.Any()) { return(true); } return(false); }
private void IniciarThreadOfertas() { var manterOferta = new ManterOferta(); var bmConfiguracaoSistema = new BMConfiguracaoSistema(); var bmLogSincronia = new BMLogSincronia(); var usuarioLogado = new ManterUsuario().ObterUsuarioLogado(); var somenteNaoSincronizados = ckbSomenteNaoSincronizados.Checked; var thread = new Thread( () => EnviarOfertas(manterOferta, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado, somenteNaoSincronizados)) { IsBackground = true, Name = Guid.NewGuid().ToString() }; thread.Start(); }
protected void btnSincronizarOferta_Click(object sender, EventArgs e) { var manter = new ManterOferta(); var lista = manter.ObterTodasOfertas() .Where( p => p.SolucaoEducacional.ListaAreasTematicas.Any() && p.DataInicioInscricoes.HasValue && p.DataInicioInscricoes.Value.Year == DateTime.Now.Year) .ToList(); foreach (var item in lista) { try { manter.AlterarOferta(item); } catch (Exception) { } } WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, "Sincronia Realizada: " + lista.Count + " registros"); }
private void EnviarOfertas(ManterOferta manterOferta, BMConfiguracaoSistema bmConfiguracaoSistema, BMLogSincronia bmLogSincronia, Usuario usuarioLogado, bool somenteNaoSincronizados) { try { var ofertas = manterOferta.ObterTodasOfertas() .Where( x => x.DataInicioInscricoes.HasValue && x.DataFimInscricoes.HasValue && x.SolucaoEducacional.Ativo && x.SolucaoEducacional.FormaAquisicao != null && x.SolucaoEducacional.FormaAquisicao.EnviarPortal && x.SolucaoEducacional.ListaAreasTematicas.Any() && (somenteNaoSincronizados == false || !x.IdNodePortal.HasValue)) .OrderBy(x => x.Nome).ToList(); foreach (var oferta in ofertas) { try { oferta.IdNodePortal = null; manterOferta.AtualizarNodeIdDrupal(oferta, bmConfiguracaoSistema, bmLogSincronia, usuarioLogado); } catch (Exception) { // ignored; } } } catch (Exception) { throw; } }
public string MatriculaSolucaoEducacionalGestorUC(int idOferta, string cpf, int idStatusMatricula, int idTurma, string solicitante, string dataInscricao = "", string dataConclusao = "") { var manterUsuario = new ManterUsuario(); var usuario = manterUsuario.ObterPorCPF(cpf); var usuarioLogado = new BMUsuario().ObterPorCPF(solicitante); if (!(idStatusMatricula == 2 || idStatusMatricula == 6 || idStatusMatricula == 8)) { throw new AcademicoException("Status da matrícula inválido"); } if (usuario == null) { throw new AcademicoException("CPF não localizado na base"); } var oferta = new BMOferta().ObterPorId(idOferta); if (oferta == null) { throw new AcademicoException("Oferta não localizada na base"); } if (oferta.ListaMatriculaOferta == null) { oferta.ListaMatriculaOferta = new List <MatriculaOferta>(); } if (oferta.ListaMatriculaOferta.Any(x => x.Usuario.ID == usuario.ID && (x.StatusMatricula == enumStatusMatricula.Inscrito || x.StatusMatricula == enumStatusMatricula.PendenteConfirmacaoAluno))) { throw new AcademicoException("Usuário já inscrito nesta oferta"); } //VERIFICA PRÉ-REQUISITO if (oferta.SolucaoEducacional.ListaPreRequisito.Any()) { var aprovados = new List <enumStatusMatricula> { enumStatusMatricula.Aprovado, enumStatusMatricula.Concluido }; foreach (var item in oferta.SolucaoEducacional.ListaPreRequisito) { if (!usuario.ListaMatriculaOferta.Any(x => aprovados.Contains(x.StatusMatricula) && x.Oferta.SolucaoEducacional.ID == item.PreRequisito.ID)) { throw new AcademicoException("Erro: Existem soluções como pré-requisito que não estão cursadas"); } } } if (usuarioLogado.UF.ID != (int)enumUF.NA) { if (usuario.UF.ID != usuarioLogado.UF.ID) { throw new AcademicoException("Este usuário não é do seu estado"); } } var ofertaEstado = oferta.ListaPermissao.FirstOrDefault(f => f.Uf != null && f.Uf.ID == usuario.UF.ID); if (ofertaEstado == null) { throw new AcademicoException("Erro: A vaga não é permitida para o seu estado"); } if (ofertaEstado.QuantidadeVagasPorEstado > 0) { var qtdMatriculaOfertaPorEstado = oferta.ListaMatriculaOferta.Count(x => !x.IsUtilizado() && x.UF.ID == ofertaEstado.Uf.ID); if (qtdMatriculaOfertaPorEstado >= ofertaEstado.QuantidadeVagasPorEstado && !oferta.FiladeEspera) { throw new AcademicoException("Erro: As vagas já foram preenchidas para o seu estado"); } } if (usuario.ListaMatriculaOferta.Any(x => x.Usuario.ID == usuario.ID && x.Oferta.ID == oferta.ID && x.Oferta.SolucaoEducacional.ID == oferta.SolucaoEducacional.ID && (x.StatusMatricula == enumStatusMatricula.Inscrito || x.StatusMatricula == enumStatusMatricula.PendenteConfirmacaoAluno || x.StatusMatricula == enumStatusMatricula.Aprovado || x.StatusMatricula == enumStatusMatricula.Concluido ))) { throw new AcademicoException("Usuário já cursou esta Solução Educacional"); } var matriculaOferta = new MatriculaOferta { Usuario = usuario, Oferta = oferta, DataSolicitacao = DateTime.Now, StatusMatricula = (enumStatusMatricula)idStatusMatricula, UF = usuario.UF, NivelOcupacional = usuario.NivelOcupacional, Auditoria = new Auditoria(solicitante) }; (new ManterMatriculaOferta()).VerificarPoliticaDeConsequencia(matriculaOferta); if (matriculaOferta.StatusMatricula == enumStatusMatricula.Inscrito) { Turma turma; if (idTurma > 0) { turma = oferta.ListaTurma.FirstOrDefault(x => x.ID == idTurma); if (turma == null) { throw new AcademicoException("A turma informada não pertence a oferta informada"); } } else { turma = oferta.ListaTurma.FirstOrDefault(); } if (turma != null) { if (!turma.InAberta) { throw new AcademicoException("A turma não está aberta para inscrições"); } if (!usuarioLogado.IsGestor() && (turma.Oferta.DataInicioInscricoes > DateTime.Now || (turma.Oferta.DataFimInscricoes.HasValue && turma.Oferta.DataFimInscricoes.Value < DateTime.Now))) { throw new AcademicoException("A oferta selecionada está fora do período de inscrição"); } //Verifica se a quantidade de matriculas para a turma foi preenchida. if (turma.QuantidadeMaximaInscricoes > 0 && turma.QuantidadeAlunosMatriculadosNaTurma >= turma.QuantidadeMaximaInscricoes) { throw new AcademicoException("Todas as vagas para esta turma foram preenchidas"); } var matriculaTurma = new MatriculaTurma { Turma = turma, MatriculaOferta = matriculaOferta, DataMatricula = DateTime.Now, Auditoria = new Auditoria(solicitante) }; matriculaTurma.DataLimite = matriculaTurma.CalcularDataLimite(matriculaOferta.Oferta); matriculaTurma.DataMatricula = DateTime.Now; if (!usuarioLogado.IsGestor() && matriculaOferta.Oferta.DataInicioInscricoes.HasValue && matriculaOferta.Oferta.DataFimInscricoes.HasValue && !matriculaTurma.DataMatricula.Date.Between(matriculaOferta.Oferta.DataInicioInscricoes.Value, matriculaOferta.Oferta.DataFimInscricoes.Value)) { throw new AcademicoException( "Data de matrícula fora do periodo de inscrição da turma que é de " + matriculaTurma.Turma.DataInicio.ToString("dd/MM/yyyy") + " a " + (matriculaTurma.Turma.DataFinal != null ? matriculaTurma.Turma.DataFinal.Value.ToString("dd/MM/yyyy") : "")); } if (matriculaOferta.MatriculaTurma == null) { matriculaOferta.MatriculaTurma = new List <MatriculaTurma>(); } matriculaOferta.MatriculaTurma.Add(matriculaTurma); } } new BMMatriculaOferta().Salvar(matriculaOferta); try { if (matriculaOferta.StatusMatricula == enumStatusMatricula.PendenteConfirmacaoAluno) { var templateMensagemEmailOfertaExclusiva = TemplateUtil.ObterInformacoes(enumTemplate.EnvioEmailParaPendenteDeConfirmacao); var assuntoDoEmail = templateMensagemEmailOfertaExclusiva.Assunto; var corpoEmail = templateMensagemEmailOfertaExclusiva.TextoTemplate; var emailDoDestinatario = matriculaOferta.Usuario.Email; if (matriculaOferta.StatusMatricula == enumStatusMatricula.PendenteConfirmacaoAluno) { assuntoDoEmail = assuntoDoEmail.Replace("#NOME_CURSO", matriculaOferta.NomeSolucaoEducacional); corpoEmail = new ManterOferta().CorpoEmail(corpoEmail, matriculaOferta); EmailUtil.Instancia.EnviarEmail(emailDoDestinatario.Trim(), assuntoDoEmail, corpoEmail); } } } catch { // ignored } return(string.Empty); }
protected void btnSalvar_Click(object sender, EventArgs e) { string mensagemRetorno; try { var manterOferta = new ManterOferta(); if (Request["Id"] == null) { Dominio.Classes.Oferta oferta = ucOferta1.ObterObjetoOferta(); oferta.Sequencia = manterOferta.ObterProximoCodigoSequencial(oferta.SolucaoEducacional); manterOferta.IncluirOferta(oferta); ofertaEdicao = oferta; ucOferta1.ValidarSubAreasSelecionadas(ofertaEdicao); mensagemRetorno = "Oferta cadastrada com sucesso."; } else if (!string.IsNullOrEmpty(Request["Republicar"])) { var oferta = new Dominio.Classes.Oferta(); oferta = ucOferta1.ObterObjetoOferta(true); oferta.Sequencia = manterOferta.ObterProximoCodigoSequencial(oferta.SolucaoEducacional); ucOferta1.ValidarSubAreasSelecionadas(ofertaEdicao); manterOferta.IncluirOferta(oferta); ofertaEdicao = oferta; mensagemRetorno = "Oferta atualizada com sucesso."; } else { ofertaEdicao = ucOferta1.ObterObjetoOferta(); if (ofertaEdicao.ID != 0 && manterOferta.AlterouSolucaoEducacional(ofertaEdicao.ID, ofertaEdicao.SolucaoEducacional)) { ofertaEdicao.Sequencia = manterOferta.ObterProximoCodigoSequencial(ofertaEdicao.SolucaoEducacional); } ucOferta1.ValidarSubAreasSelecionadas(ofertaEdicao); manterOferta.AlterarOferta(ofertaEdicao); mensagemRetorno = "Oferta atualizada com sucesso."; } // Sincronizar Oferta e SE. if (ofertaEdicao.SolucaoEducacional.Fornecedor.ID == (int)enumFornecedor.MoodleSebrae) { if (manterOferta.SincronizarOfertaComMoodle(ofertaEdicao, ofertaEdicao.SolucaoEducacional)) { mensagemRetorno = string.Format("Oferta {0} e sincronizada com sucesso.", Request["Id"] == null ? "cadastrada" : "alterada"); } } } catch (Exception ex) { WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message); return; } WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, mensagemRetorno, "ListarOferta.aspx"); }