public IQueryable <Oferta> ObterOfertaPorSolucaoEducacional(int idSolucaoEducacional) { using (var bm = new BMOferta()) { return(bm.ObterTodos().Where(o => o.SolucaoEducacional.ID == idSolucaoEducacional)); } }
public DTO.Services.RetornoWebService EntrarNaFilaDeEspera(int pUsuario, int idOferta) { try { var usuario = new BMUsuario().ObterPorId(pUsuario); var oferta = new BMOferta().ObterPorId(idOferta); if (EstaInscrito(pUsuario, idOferta)) { return(new DTO.Services.RetornoWebService { Erro = 0, Mensagem = "Já Inscrito" }); } var matriculaOferta = new MatriculaOferta { Usuario = usuario, Oferta = oferta, StatusMatricula = enumStatusMatricula.FilaEspera, UF = usuario.UF, NivelOcupacional = usuario.NivelOcupacional, DataSolicitacao = DateTime.Now, Auditoria = new Auditoria(usuario.CPF) }; new BMMatriculaOferta().Salvar(matriculaOferta); var matriculaTurma = new MatriculaTurma { Turma = oferta.ListaTurma.FirstOrDefault(), MatriculaOferta = matriculaOferta, DataMatricula = DateTime.Now, Auditoria = new Auditoria(usuario.CPF) }; matriculaTurma.DataLimite = matriculaTurma.CalcularDataLimite(matriculaOferta.Oferta); new BMMatriculaTurma().Salvar(matriculaTurma); EnvialEmailFilaEspera(usuario); return(new DTO.Services.RetornoWebService { Erro = 0, Mensagem = "Success" }); } catch (Exception ex) { return(new DTO.Services.RetornoWebService { Erro = 1, Mensagem = "Falha", Stack = ex.Message }); } }
public DTOSolucoes ConsultarTurmaPorSolucaoEducacional(int idSolucaoEducacional, int idOferta, string cpfUsuario) { DTOSolucoes retorno = new DTOSolucoes(); var usuario = new BMUsuario().ObterPorCPF(cpfUsuario); List <int> permissoesOfertas = new BMOferta().ObterListaDePermissoes(usuario.ID).Select(f => f.IdOferta).Distinct().ToList(); var solucaoEducacional = new ManterSolucaoEducacional().ObterSolucaoEducacionalPorId(idSolucaoEducacional); IList <Oferta> ofertas = RecuperarOfertasValidas(solucaoEducacional, permissoesOfertas); if (idOferta > 0) { ofertas = ofertas.Where(f => f.ID == idOferta).ToList(); } var se = new DTOCurso(); se.IDSolucaoEducacional = solucaoEducacional.ID; foreach (var oferta in ofertas) { var o = new DTOOfertas { IDOferta = oferta.ID, PermiteAlterarStatusPeloGestor = (oferta.AlteraPeloGestorUC.HasValue ? oferta.AlteraPeloGestorUC.Value : true) }; var turmas = oferta.ListaTurma.Where( f => (f.DataFinal == null || f.DataFinal.Value.Date > DateTime.Today) && f.InAberta).ToList(); foreach (var turma in turmas) { o.ListaTurma.Add(new DTOOfertaTurma { IdTurma = turma.ID, Nome = turma.Nome }); } se.Ofertas.Add(o); } if (se.Ofertas.Count() > 0) { retorno.Cursos.Add(se); } return(retorno); }
protected void btnEnviarObservacao_OnClick(object sender, EventArgs e) { bool aprovar = rblAprovar.SelectedValue.Contains("Aprovar"); BMOfertaGerenciadorVaga bmOfertaGerenciadorVaga = new BMOfertaGerenciadorVaga(); OfertaGerenciadorVaga dados = null; if (aprovar) { dados = bmOfertaGerenciadorVaga.ObterPorID(OfertaGerenciadorVagaEmAlteracao.ID); dados.Contemplado = true; dados.Resposta = txtResposta.Text; } else { if (string.IsNullOrEmpty(txtResposta.Text)) { WebFormHelper.ExibirMensagem(enumTipoMensagem.Alerta, "Para cancelar a recusa você deve informar um motivo"); } else { dados = bmOfertaGerenciadorVaga.ObterPorID(OfertaGerenciadorVagaEmAlteracao.ID); dados.Contemplado = false; dados.Vigente = false; dados.Resposta = txtResposta.Text; var oferta = new BMOferta().ObterPorId(dados.Oferta.ID); var permissaoUF = oferta.ListaPermissao.FirstOrDefault(x => x.Uf != null && x.Uf == dados.UF); if (permissaoUF != null) { permissaoUF.QuantidadeVagasPorEstado = dados.VagasAnteriores; new BMOfertaPermissao().Salvar(permissaoUF); } } } if (dados != null) { dados.Auditoria = new Auditoria(bmUsuario.ObterUsuarioLogado().CPF); bmOfertaGerenciadorVaga.Alterar(dados); WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, "Dados alterados com sucesso", "GerenciarOfertaRecusaVaga.aspx"); } }
public void ValidarQuantidadeDeInscricoes(int idOferta, int idUsuario, List <int> pListaIdMetaIndividualAssociada, List <int> pListaIdMetaInstitucionalAssociada, AuthenticationRequest autenticacao) { Oferta oferta = new BMOferta().ObterPorId(idOferta); if (oferta == null) { throw new AcademicoException("Erro: Oferta não encontrada"); } if (oferta.TipoOferta.Equals(enumTipoOferta.Continua)) { ValidarOfertaContinua(oferta, idUsuario, pListaIdMetaIndividualAssociada, pListaIdMetaInstitucionalAssociada, autenticacao); } if (oferta.TipoOferta.Equals(enumTipoOferta.Normal)) { ValidarOfertaNormal(oferta, idUsuario, pListaIdMetaIndividualAssociada, pListaIdMetaInstitucionalAssociada, autenticacao); } }
public void IncluirMatriculaTurma(MatriculaTurma matriculaTurma) { try { matriculaTurma.DataMatricula = DateTime.Now; if (matriculaTurma.ID == 0) { //Se if tipooferta == normal || exclusiva var bmOferta = new BMOferta(); var oferta = bmOferta.ObterPorTurma(matriculaTurma.Turma.ID); if (oferta != null) { matriculaTurma.DataLimite = matriculaTurma.CalcularDataLimite(oferta); } //Insere, ou seja, matricula o usuário na turma bmMatriculaTurma.Salvar(matriculaTurma); } else { //Atualiza var turmaAnterior = bmMatriculaTurma.ObterMatriculaTurma(matriculaTurma.MatriculaOferta.Usuario.ID, matriculaTurma.TurmaAnterior.ID); if (turmaAnterior != null) { //Passa os dados de uma Turma para a nova Turma //this.TransferirInformacoesDeUmaTurmaParaOutra(turmaAnterior, pMatriculaTurma); turmaAnterior.Turma = new BMTurma().ObterPorID(matriculaTurma.Turma.ID); bmMatriculaTurma.Salvar(matriculaTurma); } } } catch (AcademicoException ex) { throw ex; } }
public IQueryable <Oferta> ObterOfertas(int idSolucaoEducacional, int idUF = 0) { using (var bmO = new BMOferta()) { var retorno = bmO.ObterTodos(); if (idSolucaoEducacional != 0) { retorno = retorno.Where(x => x.SolucaoEducacional.ID == idSolucaoEducacional); } if (idUF > 0) { retorno = retorno.Where( x => x.ListaPermissao.All(c => c.Uf != null) || x.ListaPermissao.Any(c => c.Uf != null && c.Uf.ID == idUF)); } return(retorno); } }
public DTOCursosPorCategoria ConsultarCursosPorCategoria(int idNoCategoriaConteudo, string cpf, string nome, bool somenteComInscricoesAbertas) { var retorno = new DTOCursosPorCategoria { Categoria = new DTOCategoriaConteudo(), ListaCursos = new List <DTOSolucaoEducacional>() }; var categoria = new BMCategoriaConteudo().ObterPorIdNode(idNoCategoriaConteudo); retorno.Categoria.ID = categoria.ID; retorno.Categoria.Nome = categoria.Nome; var usuario = new BMUsuario().ObterPorCPF(cpf); var permissoesSe = new BMSolucaoEducacional().ObterListaDePermissoes(usuario.ID, 0) .Select(x => x.SolucaoEducacional.ID) .ToList(); var permissoesOf = new BMOferta().ObterListaDePermissoes(usuario.ID).Select(x => x.IdOferta).ToList(); var solucoesEducacionais = new BMSolucaoEducacional().ObterTodos().AsEnumerable() .Where(x => x.Nome.ToLower().Contains(nome.ToLower()) && x.CategoriaConteudo != null && x.Ativo && x.CategoriaConteudo.IdNode == idNoCategoriaConteudo && //(x.IdNode.HasValue || !string.IsNullOrEmpty(x.Link)) && permissoesSe.Contains(x.ID) && x.ListaOferta != null && x.ListaOferta.Any(o => permissoesOf.Contains(o.ID)) && x.ListaOferta.Any(o => o.TipoOferta != enumTipoOferta.Exclusiva) ).ToList(); foreach (var item in solucoesEducacionais) { var obj = new DTOSolucaoEducacional { ID = item.ID, IDChaveExterna = item.IDChaveExterna, IdNode = item.IdNode, Nome = item.Nome, InscricoesAbertas = false }; if ( item.ListaOferta.Any( x => x.DataInicioInscricoes.HasValue && x.DataFimInscricoes.HasValue && x.DataInicioInscricoes.Value <= DateTime.Today && x.DataFimInscricoes.Value >= DateTime.Today)) { foreach (var oferta in item.ListaOferta) { if (string.IsNullOrEmpty(obj.Link)) { obj.Link = (item.Fornecedor.ID == (int)enumFornecedor.FGVOCW || item.Fornecedor.ID == (int)enumFornecedor.FGVSiga) && !string.IsNullOrEmpty(oferta.Link) ? oferta.Link : ""; } obj.InscricoesAbertas = oferta.ListaTurma.Any(x => x.DataInicio <= DateTime.Today && x.DataFinal.HasValue && x.DataFinal.Value >= DateTime.Today); } } else { obj.InscricoesAbertas = false; } bool adicionar = true; if (somenteComInscricoesAbertas) { adicionar = obj.InscricoesAbertas; } if (adicionar) { retorno.ListaCursos.Add(obj); } } return(retorno); }
public DTOSolucoes ConsultarDisponibilidadeMatriculaPorUsuario(int pIdUsuario, int idSolucaoEducacional, int cargaHoraria) { var retorno = new DTOSolucoes(); var usuario = new ManterUsuario().ObterUsuarioPorID(pIdUsuario); if (usuario != null) { var permissoesSoculaoEducacional = new BMSolucaoEducacional().ObterListaDePermissoes(usuario.ID, idSolucaoEducacional) .Select(f => f.SolucaoEducacional.ID) .Distinct() .ToList(); var permissoesOfertas = new BMOferta().ObterListaDePermissoes(usuario.ID).Select(f => f.IdOferta).Distinct().ToList(); if (idSolucaoEducacional > 0 && permissoesSoculaoEducacional.Contains(idSolucaoEducacional)) { permissoesSoculaoEducacional.Clear(); permissoesSoculaoEducacional.Add(idSolucaoEducacional); } var solucoes = new ManterSolucaoEducacional().ObterPorFiltroPesquisa(new SolucaoEducacional(), true, permissoesSoculaoEducacional); foreach (var solucaoEducacional in solucoes) { var ofertas = solucaoEducacional.ListaOferta.Where( x => (x.DataInicioInscricoes.HasValue && x.DataInicioInscricoes.Value.Date <= DateTime.Today) && x.DataFimInscricoes.HasValue && x.DataFimInscricoes.Value.Date >= DateTime.Today && permissoesOfertas.Contains(x.ID) && //x.ListaPermissao.Any(f=>f.Uf.ID == usuario.UF.ID) && !(x.ListaTurma.Any( f => (f.DataFinal == null || f.DataFinal.Value.Date > DateTime.Today) && // Remover turmas canceladas das possibilidades de matrícula. #2997 f.Status != enumStatusTurma.Cancelada && f.InAberta == false))); if (cargaHoraria > 0) { ofertas = ofertas.Where(f => f.CargaHoraria == cargaHoraria); } var se = new DTOCurso { IDSolucaoEducacional = solucaoEducacional.ID }; foreach (var oferta in ofertas.OrderBy(x => x.DataInicioInscricoes)) { if (oferta.TipoOferta.Equals(enumTipoOferta.Exclusiva)) { break; } //Verificando se existe alguma matricula na SE if (ExisteAlgumaMatriculaComoInscrito(usuario.ListaMatriculaOferta, se.IDSolucaoEducacional)) { break; } //VALIDAR SE O USUARIO POSSUI ACESSO A SE: 205 (permissão a se) //VALIDADO NA BUSCA //VALIDAR SE O USUARIO ESTA CURSANDO OUTRA SE //VERIFICA O LIMITE DE CURSOS SIMULTANEOS int cursosEmAndamento = usuario.ListaMatriculaOferta.Where( x => x.StatusMatricula.Equals(enumStatusMatricula.Inscrito)).Count(); int limteCursosSimultaneos = int.Parse( ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.CursosSimultaneos) .Registro); if (cursosEmAndamento >= limteCursosSimultaneos) { break; } //VALIDAR SE O USUARIO ESTA COM ALGUM ABANDONO ATIVO if (new BMUsuarioAbandono().ValidarAbandonoAtivo(usuario.ID)) { break; } //VERIFICA SE A OFERTA INFORMADA FOI ENCONTRADA //NO CADASTRO if (oferta.TipoOferta.Equals(enumTipoOferta.Continua)) { } if (oferta.TipoOferta.Equals(enumTipoOferta.Normal)) { } var qtdInscritosNaOferta = oferta.ListaMatriculaOferta.Count( x => (x.StatusMatricula != enumStatusMatricula.CanceladoAdm && x.StatusMatricula != enumStatusMatricula.CanceladoAluno)); if (qtdInscritosNaOferta >= oferta.QuantidadeMaximaInscricoes && !oferta.FiladeEspera) { break; } var trancadoPorNaoPagante = false; if (oferta.ListaNiveisTrancados != null && oferta.ListaNiveisTrancados.Any(x => x.ID == usuario.NivelOcupacional.ID)) { if (!VerificarTrancadoParaPagante(usuario)) { trancadoPorNaoPagante = true; } } se.Ofertas.Add(new DTOOfertas { IDOferta = oferta.ID, CargaHoraria = oferta.CargaHoraria, TrancadoPorNaoPagamento = trancadoPorNaoPagante, Nome = oferta.Nome }); } if (se.Ofertas.Any()) { retorno.Cursos.Add(se); } } } return(retorno); }
public DTOConsultarOfertasPorPeriodo ConsultarOfertasPorPeriodo(DateTime dataInicio, DateTime dataFim) { var dados = new DTOConsultarOfertasPorPeriodo(); var ofertas = new BMOferta().ConsultarOfertasPorPeriodo(dataInicio, dataFim); foreach (var item in ofertas) { var dtoOferta = new DTODadosOferta { ID = item.ID, Nome = item.Nome }; var turma = item.ListaTurma.OrderByDescending(x => x.AcessoWifi).FirstOrDefault(); switch (turma.AcessoWifi.Value) { case 1: dtoOferta.AcessoWifi = "Asa Norte"; break; case 2: dtoOferta.AcessoWifi = "Asa Sul"; break; case 3: dtoOferta.AcessoWifi = "Asa Norte e Asa Sul"; break; } if (!string.IsNullOrEmpty(item.EmailResponsavel)) { dtoOferta.Responsavel.Email = item.EmailResponsavel; var buscarResponsavelPorEmail = new BMUsuario().ObterPorEmail(item.EmailResponsavel); if (buscarResponsavelPorEmail != null) { dtoOferta.Responsavel.CPF = buscarResponsavelPorEmail.CPF; dtoOferta.Responsavel.Email = buscarResponsavelPorEmail.Email; dtoOferta.Responsavel.Nome = buscarResponsavelPorEmail.Nome; dtoOferta.Responsavel.UF = buscarResponsavelPorEmail.UF.Sigla; } } dtoOferta.ListaDadosMatriculados.AddRange( item.ListaMatriculaOferta.Select( x => new DTODadosMatriculados { CPF = x.Usuario.CPF, DataNascimento = x.Usuario.DataNascimento, Email = x.Usuario.Email, Matricula = x.Usuario.Matricula, Nome = x.Usuario.Nome, UF = x.Usuario.UF.Sigla })); dados.ListaDadosOferta.Add(dtoOferta); } return(dados); }
public DTOManterOferta ConsultaOferta(string idsOfertas, string idChaveExternaOferta, string idChaveExternaSolucaoEducacional, AuthenticationProviderRequest pAutenticacao) { DTOManterOferta ofResult = null; try { this.RegistrarLogExecucaoFornecedor((new BMFornecedor()).ObterPorFiltro(new Fornecedor() { Login = pAutenticacao.Login }).FirstOrDefault(), "ConsultaOferta"); using (ofertaBM = new BMOferta()) { IList <int> lsIdsOfertas = null; if (!string.IsNullOrEmpty(idsOfertas)) { lsIdsOfertas = idsOfertas.Split(',').Select(Int32.Parse).ToList(); } var oferta = ofertaBM.ObterOfertaPorFornecedor(lsIdsOfertas, pAutenticacao.Login, idChaveExternaOferta, idChaveExternaSolucaoEducacional); if (oferta == null) { throw new AcademicoException("Oferta não encontrada"); } var existeProximaOferta = false; // #1855 - Caso o fornecedor seja Moodle e caso a oferta esteja vencida, // remover o ID da Chave Externa e continuar buscando a oferta atual. if (oferta.SolucaoEducacional.Fornecedor.ID == (int)enumFornecedor.MoodleSebrae) { if (lsIdsOfertas == null) { lsIdsOfertas = new List <int>(); } lsIdsOfertas.Add(oferta.ID); if (oferta.ListaMatriculaOferta.Any(p => p.StatusMatricula != enumStatusMatricula.Inscrito)) { oferta.IDChaveExterna = null; ofertaBM.Salvar(oferta); } var proximaOferta = ofertaBM.ObterOfertaPorFornecedor(lsIdsOfertas, pAutenticacao.Login, idChaveExternaOferta, idChaveExternaSolucaoEducacional); existeProximaOferta = proximaOferta != null && proximaOferta.ID != oferta.ID; } ofResult = new DTOManterOferta { IDChaveExternaOferta = oferta.IDChaveExterna, DataFimInscricoes = oferta.DataFimInscricoes, DataInicioInscricoes = oferta.DataInicioInscricoes, FiladeEspera = oferta.FiladeEspera, TipoOferta = oferta.TipoOferta.ToString(), IDChaveExternaSolucaoEducacional = oferta.SolucaoEducacional.IDChaveExterna, ListaMatriculaAlunoOferta = new List <DTOMatriculaSE>(), ListaTurmasOferta = new List <DTOManterTurma>(), NomedaOferta = oferta.Nome, QuantidadeMaximaInscricoes = oferta.QuantidadeMaximaInscricoes, QTCargaHoraria = oferta.CargaHoraria, InscricaoOnline = oferta.InscricaoOnline, QTDiasPrazo = oferta.DiasPrazo, CodigoMoodle = oferta.CodigoMoodle.ToString(), ProximaOferta = existeProximaOferta, IDOferta = oferta.ID }; foreach (var mo in oferta.ListaMatriculaOferta) { var dtoMatriculaSE = new DTOMatriculaSE { IdMatriculaOferta = mo.ID, Nome = mo.Usuario.Nome, NivelOcupacional = mo.Usuario.NivelOcupacional.Nome, UF = mo.Usuario.UF.Nome, Cpf = mo.Usuario.CPF, DataNascimento = mo.Usuario.DataNascimento, Email = mo.Usuario.Email, Telefone = mo.Usuario.TelefoneExibicao, Endereco = mo.Usuario.Endereco, Cidade = mo.Usuario.Cidade, Estado = mo.Usuario.Estado, Cep = mo.Usuario.Cep, StatusMatricula = mo.StatusMatricula.ToString(), DataSolicitacao = mo.DataSolicitacao, DataStatusMatricula = mo.DataStatusMatricula, LinkAcesso = mo.LinkAcesso, LinkCertificado = mo.LinkCertificado }; if (mo.MatriculaTurma != null && mo.MatriculaTurma.Count > 0) { var matriculaTurma = mo.MatriculaTurma.First(); dtoMatriculaSE.IDTurma = matriculaTurma.Turma.ID; dtoMatriculaSE.IDChaveExternaTurma = matriculaTurma.Turma.IDChaveExterna; dtoMatriculaSE.NomeTurma = matriculaTurma.Turma.Nome; dtoMatriculaSE.DataMatriculaTurma = matriculaTurma.DataMatricula; dtoMatriculaSE.DataLimite = matriculaTurma.DataLimite; dtoMatriculaSE.Nota1 = matriculaTurma.Nota1; dtoMatriculaSE.Nota2 = matriculaTurma.Nota2; dtoMatriculaSE.MediaFinal = matriculaTurma.MediaFinal; dtoMatriculaSE.NotaOnline = matriculaTurma.ValorNotaProvaOnline; dtoMatriculaSE.DataSolicitacao = mo.DataSolicitacao; dtoMatriculaSE.ValorNotaMinima = matriculaTurma.Turma.NotaMinima; dtoMatriculaSE.AcessoAposConclusao = matriculaTurma.Turma.AcessoAposConclusao ? 1 : 0; } ofResult.ListaMatriculaAlunoOferta.Add(dtoMatriculaSE); } //Listando as turmas vinculadas à Oferta. using (var bmTurma = new BMTurma()) { ofResult.ListaTurmasOferta = new BMTurma() .ObterTodos() .Where(turma => turma.Oferta.ID == oferta.ID) .ToList() .Select(MapearListaParaDtoManterTurma()) .ToList(); } } } catch (AcademicoException ex) { throw new AcademicoException(ex.Message); } catch (Exception ex) { ErroUtil.Instancia.TratarErro(ex); } return(ofResult); }
public static string FormatarTextoCertificadoTutor(string texto, int idOferta, int idTurma, int idUsuario) { var tI = new CultureInfo("pt-Br", true).TextInfo; if (idOferta > 0 && idUsuario > 0) { var oferta = new BMOferta().ObterPorId(idOferta); var professor = new BMUsuario().ObterPorId(idUsuario); if (oferta == null || professor == null) { return("Erro ao gerar o certificado"); } var turma = new BMTurma().ObterPorID(idTurma); if (turma == null) { return("Erro ao gerar o certificado"); } var dataInicioTurma = turma.DataInicio.ToString("dd/MM/yyyy"); string dataFimTurma = turma.DataFinal.HasValue ? turma.DataFinal.Value.ToString("dd/MM/yyyy") : ""; var nomeUsuario = tI.ToTitleCase(professor.Nome.ToLower()); int totalHoras = oferta.SolucaoEducacional.ListaItemTrilha .Where(x => x.Aprovado == enumStatusSolucaoEducacionalSugerida.Aprovado) .Sum(x => x.CargaHoraria); return(texto .Replace("#DATASISTEMAEXTENSO", DateTime.Now.ToLongDateString()) .Replace("#DATASISTEMA", DateTime.Now.ToString("dd/MM/yyyy")) .Replace("#DATAHORASISTEMA", DateTime.Now.ToString("dd/MM/yyyy HH:mm")) .Replace("#PROFESSOR", nomeUsuario != null ? nomeUsuario : string.Empty) .Replace("#LOCAL", turma.Local != null ? turma.Local : "Sem Local") .Replace("#CPF", WebFormHelper.FormatarCPF(professor.CPF)) .Replace("#EMAILPROFESSOR", professor.Email) .Replace("#OFERTA", oferta.Nome) .Replace("#CARGAHORARIA", oferta.CargaHoraria.ToString()) .Replace("#NOMESE", oferta.SolucaoEducacional.Nome) .Replace("#EMENTA", oferta.SolucaoEducacional.Ementa) .Replace("#DATEGERACAOCERTIFICADO", DateTime.Now.ToString("dd/MM/yyyy")) .Replace("#DATAGERACAOCERTIFICADO", DateTime.Now.ToString("dd/MM/yyyy")) .Replace("#CODIGOCERTIFICADO", oferta.CertificadoTemplateProfessor.ObterCodigoCertificadoTutor(idOferta, idTurma, idUsuario)) .Replace("#DATAINICIOTURMA", dataInicioTurma) .Replace("#DATAFIMTURMA.", dataFimTurma) .Replace("#TEXTOPORTAL", oferta.SolucaoEducacional.Apresentacao != null ? Regex.Replace(oferta.SolucaoEducacional.Apresentacao, "<.*?>", string.Empty) : string.Empty) .Replace("#INFORMACOESADICIONAIS", oferta.InformacaoAdicional != null ? Regex.Replace(oferta.InformacaoAdicional, "<.*?>", string.Empty) : string.Empty) .Replace("#AREATEMATICA", oferta.SolucaoEducacional.ListaAreasTematicas.Any() ? string.Join(", ", oferta.SolucaoEducacional.ListaAreasTematicas.Select(x => x.AreaTematica.Nome).ToArray()) : string.Empty) .Replace("#CARGAHORARIASOLUCAOSEBRAE", totalHoras.ToString())); } return("Erro ao gerar o certificado"); }
public ManterOferta() : base() { bmOferta = new BMOferta(); }
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); }
public void ManterOfertaFornecedor(DTOManterOferta dtoOferta, AuthenticationProviderRequest pAutenticacao) { Fornecedor fornecedor = new BMFornecedor().ObterPorFiltro(new Fornecedor() { Login = pAutenticacao.Login }).FirstOrDefault(); try { this.RegistrarLogExecucaoFornecedor(fornecedor, "ManterOferta"); using (ofertaBM = new BMOferta()) { ValidarCamposObrigatoriosOferta(dtoOferta); SolucaoEducacional solucaoEducacional = new BMSolucaoEducacional().ObterSolucaoEducacionalPorFornecedor(pAutenticacao.Login, dtoOferta.IDChaveExternaSolucaoEducacional); if (solucaoEducacional == null) { throw new AcademicoException("Não foi possível encontrar a Solução Educacional"); } Oferta oferta = ofertaBM.ObterOfertaPorFornecedor(null, fornecedor.Login, dtoOferta.IDChaveExternaOferta, dtoOferta.IDChaveExternaSolucaoEducacional); if (oferta == null) { oferta = new Oferta(); oferta.IDChaveExterna = dtoOferta.IDChaveExternaOferta; oferta.SolucaoEducacional = solucaoEducacional; try { oferta.TipoOferta = (enumTipoOferta)Enum.Parse(typeof(enumTipoOferta), dtoOferta.TipoOferta.ToString()); } catch { throw new AcademicoException("Não foi possível encontrar o Tipo da Oferta"); } oferta.ListaMatriculaOferta = new List <MatriculaOferta>(); } else { if (!string.IsNullOrEmpty(dtoOferta.IDChaveExternaOfertaNova)) { oferta.IDChaveExterna = dtoOferta.IDChaveExternaOfertaNova; } } oferta.DataFimInscricoes = dtoOferta.DataFimInscricoes; oferta.DataInicioInscricoes = dtoOferta.DataInicioInscricoes; oferta.FiladeEspera = dtoOferta.FiladeEspera; oferta.InscricaoOnline = dtoOferta.InscricaoOnline; oferta.Nome = dtoOferta.NomedaOferta; if (dtoOferta.IdCertificado > 0) { oferta.CertificadoTemplate = new BMCertificadoTemplate().ObterPorID(dtoOferta.IdCertificado); } int codigoMoodle = 0; if (int.TryParse(dtoOferta.CodigoMoodle, out codigoMoodle)) { oferta.CodigoMoodle = codigoMoodle; } if (dtoOferta.QTDiasPrazo.HasValue) { oferta.DiasPrazo = dtoOferta.QTDiasPrazo.Value; } else { oferta.DiasPrazo = 30; } oferta.QuantidadeMaximaInscricoes = dtoOferta.QuantidadeMaximaInscricoes; oferta.Auditoria = new Auditoria(pAutenticacao.Login); oferta.CargaHoraria = dtoOferta.QTCargaHoraria; if (dtoOferta.ListaMatriculaAlunoOferta != null && dtoOferta.ListaMatriculaAlunoOferta.Count > 0) { var manterItemTrilhaParticipacao = new BP.ManterItemTrilhaParticipacao(); foreach (var dtoMatriculaSE in dtoOferta.ListaMatriculaAlunoOferta) { if (string.IsNullOrWhiteSpace(dtoMatriculaSE.Cpf)) { throw new AcademicoException("O CPF do aluno é obrigatório"); } if (string.IsNullOrWhiteSpace(dtoMatriculaSE.StatusMatricula)) { throw new AcademicoException("O status da matrícula do aluno é obrigatório"); } enumStatusMatricula statusMatricula; try { statusMatricula = (enumStatusMatricula)Enum.Parse(typeof(enumStatusMatricula), dtoMatriculaSE.StatusMatricula); } catch { throw new AcademicoException("Status da matrícula inválido"); } if (statusMatricula == enumStatusMatricula.CanceladoAdm || statusMatricula == enumStatusMatricula.CanceladoAluno) { continue; } MatriculaOferta matriculaOferta = null; Usuario usuario = null; if (dtoMatriculaSE.IdMatriculaOferta > 0) { matriculaOferta = oferta.ListaMatriculaOferta.Where(x => x.ID == dtoMatriculaSE.IdMatriculaOferta).FirstOrDefault(); usuario = matriculaOferta.Usuario; } else { matriculaOferta = new MatriculaOferta(); usuario = (new BMUsuario()).ObterPorCPF(dtoMatriculaSE.Cpf); if (usuario == null) { throw new AcademicoException("Não foi possível encontrar o aluno"); } matriculaOferta.Oferta = oferta; matriculaOferta.Usuario = usuario; matriculaOferta.UF = usuario.UF; matriculaOferta.NivelOcupacional = usuario.NivelOcupacional; } if (matriculaOferta.ID == 0) { //Criar Matricula Oferta matriculaOferta.StatusMatricula = statusMatricula; matriculaOferta.Auditoria = new Auditoria(pAutenticacao.Login); matriculaOferta.DataSolicitacao = dtoMatriculaSE.DataSolicitacao; matriculaOferta.DataStatusMatricula = dtoMatriculaSE.DataStatusMatricula; matriculaOferta.LinkAcesso = dtoMatriculaSE.LinkAcesso; matriculaOferta.LinkCertificado = dtoMatriculaSE.LinkCertificado; if (!string.IsNullOrWhiteSpace(dtoMatriculaSE.IDChaveExternaTurma)) { //Criar matricula Turma Turma turma = new BMTurma().ObterTurmaPorFornecedor(fornecedor.Login, dtoMatriculaSE.IDChaveExternaTurma); if (turma != null) { MatriculaTurma matriculaTurma = new MatriculaTurma() { Turma = turma, MatriculaOferta = matriculaOferta, DataMatricula = dtoMatriculaSE.DataMatriculaTurma.Value, DataLimite = dtoMatriculaSE.DataLimite.Value, Nota1 = dtoMatriculaSE.Nota1, Nota2 = dtoMatriculaSE.Nota2, MediaFinal = dtoMatriculaSE.MediaFinal, ValorNotaProvaOnline = dtoMatriculaSE.NotaOnline, Auditoria = new Auditoria(pAutenticacao.Login), }; if (matriculaOferta.MatriculaTurma == null) { matriculaOferta.MatriculaTurma = new List <MatriculaTurma>(); } matriculaOferta.MatriculaTurma.Add(matriculaTurma); } } } else { //Alterar Dados da Matricula Oferta bool terminou = false; if (matriculaOferta.StatusMatricula != statusMatricula && (statusMatricula == enumStatusMatricula.Aprovado || statusMatricula == enumStatusMatricula.Concluido)) { terminou = true; } matriculaOferta.StatusMatricula = statusMatricula; matriculaOferta.DataStatusMatricula = dtoMatriculaSE.DataStatusMatricula; matriculaOferta.LinkAcesso = dtoMatriculaSE.LinkAcesso; matriculaOferta.LinkCertificado = dtoMatriculaSE.LinkCertificado; matriculaOferta.Auditoria = new Auditoria(pAutenticacao.Login); //matriculaOferta.DataSolicitacao = dtoMatriculaSE.DataSolicitacao; if (!string.IsNullOrWhiteSpace(dtoMatriculaSE.IDChaveExternaTurma)) { if (matriculaOferta.MatriculaTurma != null && matriculaOferta.MatriculaTurma.Count > 0) { matriculaOferta.MatriculaTurma[0].DataMatricula = dtoMatriculaSE.DataMatriculaTurma.Value; matriculaOferta.MatriculaTurma[0].DataLimite = dtoMatriculaSE.DataLimite.Value; matriculaOferta.MatriculaTurma[0].Nota1 = dtoMatriculaSE.Nota1; matriculaOferta.MatriculaTurma[0].Nota2 = dtoMatriculaSE.Nota2; matriculaOferta.MatriculaTurma[0].MediaFinal = dtoMatriculaSE.MediaFinal; matriculaOferta.MatriculaTurma[0].ValorNotaProvaOnline = dtoMatriculaSE.NotaOnline; if (terminou) { matriculaOferta.MatriculaTurma[0].DataTermino = DateTime.Now; manterItemTrilhaParticipacao.AtualizarStatusParticipacoesTrilhas(matriculaOferta); } matriculaOferta.MatriculaTurma[0].Auditoria = new Auditoria(pAutenticacao.Login); } else { Turma turma = new BMTurma().ObterTurmaPorFornecedor(fornecedor.Login, dtoMatriculaSE.IDChaveExternaTurma); if (turma != null) { MatriculaTurma matriculaTurma = new MatriculaTurma() { Turma = turma, MatriculaOferta = matriculaOferta, DataMatricula = dtoMatriculaSE.DataMatriculaTurma.Value, DataLimite = dtoMatriculaSE.DataLimite.Value, Nota1 = dtoMatriculaSE.Nota1, Nota2 = dtoMatriculaSE.Nota2, MediaFinal = dtoMatriculaSE.MediaFinal, ValorNotaProvaOnline = dtoMatriculaSE.NotaOnline, Auditoria = new Auditoria(pAutenticacao.Login) }; if (matriculaOferta.MatriculaTurma == null) { matriculaOferta.MatriculaTurma = new List <MatriculaTurma>(); } matriculaOferta.MatriculaTurma.Add(matriculaTurma); } } } } if (matriculaOferta.ID == 0) { oferta.ListaMatriculaOferta.Add(matriculaOferta); } } } if (oferta.ID != 0) { ofertaBM.EvictOferta(oferta); } ofertaBM.Salvar(oferta); } } catch (AcademicoException ex) { throw new AcademicoException(ex.Message); } catch (Exception ex) { ErroUtil.Instancia.TratarErro(ex); } }
public DTOGestorUC ConsultarDisponibilidadeGestorUC(int idSolucaoEducacional, string cpf, string nome, int idOferta, int turmaId, string cpfGestor) { Usuario usuario = new BMUsuario().ObterPorCPF(cpfGestor); if (usuario == null) { throw new AcademicoException("CPF não localizado na base"); } if (usuario.ListaPerfil == null) { throw new AcademicoException("Usuário sem permissão de acesso à funcionalidade"); } if (!usuario.ListaPerfil.Any(x => x.Perfil.ID == (int)enumPerfil.GestorUC)) { throw new AcademicoException("Usuário sem perfil de gestor"); } var listaDTOPermissaoOfertas = new BMOferta().ObterListaDePermissoes(usuario.ID); if (listaDTOPermissaoOfertas == null || !listaDTOPermissaoOfertas.Any()) { throw new AcademicoException("Não há ofertas disponíveis"); } var idOfertas = listaDTOPermissaoOfertas.Where(x => x.PermiteGestorUC && ((x.DataFim.HasValue && x.DataFim.Value.Date >= DateTime.Today) || (!x.DataFim.HasValue)) && (x.DataInicioInscricoes.HasValue && x.DataInicioInscricoes.Value.Date <= DateTime.Today) && x.IdSolucaoEducacional == idSolucaoEducacional) .OrderBy(x => x.DataInicio) .Select(x => x.IdOferta).Distinct().ToList(); if (idOfertas == null || idOfertas.Count() == 0) { throw new AcademicoException("Não há ofertas disponíveis"); } if (idOferta == 0) { idOferta = idOfertas.FirstOrDefault(); } Oferta oferta = new BMOferta().ObterPorId(idOferta); //if (usuario.UF.ID > 1 && !(oferta.ListaPermissao.Any(x => x.Uf.ID == usuario.UF.ID))) // oferta = null; if (oferta == null) { throw new AcademicoException("Erro ao recuperar oferta"); } int qtdInscritosNaOferta = oferta.ListaMatriculaOferta.Where(x => (x.StatusMatricula != enumStatusMatricula.CanceladoAdm || x.StatusMatricula != enumStatusMatricula.CanceladoAluno) || x.StatusMatricula != enumStatusMatricula.FilaEspera).Count(); DTOGestorUC retorno = new DTOGestorUC(); foreach (var item in idOfertas) { var objOferta = new Sebrae.Academico.BP.DTO.Dominio.DTOOferta(); var objOfertaRecuperada = new BMOferta().ObterPorId(item); if (item == idOferta) { objOferta.ID = oferta.ID; objOferta.Nome = oferta.Nome; } else { objOferta.ID = objOfertaRecuperada.ID; objOferta.Nome = objOfertaRecuperada.Nome; } retorno.ListaOfertas.Add(objOferta); } retorno.IdOferta = oferta.ID; retorno.NomeOferta = oferta.Nome; retorno.DataInicioInscricoes = oferta.DataInicioInscricoes; retorno.DataFimInscricoes = oferta.DataFimInscricoes; retorno.QtdVagasDisponiveis = oferta.QuantidadeMaximaInscricoes - qtdInscritosNaOferta; retorno.PermiteAlterarStatusPeloGestor = (oferta.AlteraPeloGestorUC.HasValue ? oferta.AlteraPeloGestorUC.Value : true); if (retorno.QtdVagasDisponiveis < 0) { retorno.QtdVagasDisponiveis = 0; } IList <MatriculaOferta> listaMatriculaOferta = oferta.ListaMatriculaOferta.Where(f => f.StatusMatricula != enumStatusMatricula.CanceladoAdm).ToList(); if (usuario.UF.ID == 1) { listaMatriculaOferta = oferta.ListaMatriculaOferta; } else if (usuario.UF.ID > 1) { listaMatriculaOferta = oferta.ListaMatriculaOferta.Where(f => f.Usuario.UF.ID == usuario.UF.ID).ToList(); } if (oferta.ListaMatriculaOferta != null && oferta.ListaMatriculaOferta.Count > 0) { if (!string.IsNullOrEmpty(nome)) { listaMatriculaOferta = listaMatriculaOferta.Where(f => (f.Usuario.Nome.Contains(nome) || f.Usuario.Nome.Contains(nome.ToUpper()))).ToList(); } if (!string.IsNullOrEmpty(cpf)) { listaMatriculaOferta = listaMatriculaOferta.Where(f => f.Usuario.CPF.Contains(cpf)).ToList(); } if (turmaId > 0) { listaMatriculaOferta = listaMatriculaOferta.Where(f => f.MatriculaTurma.Any(c => c.Turma.ID == turmaId)).ToList(); } } foreach (MatriculaOferta matriculaOferta in listaMatriculaOferta.OrderBy(x => x.Usuario.Nome)) { DTOGestorUCUsuario usuarioInscrito = new DTOGestorUCUsuario(); usuarioInscrito.NomeUsuario = matriculaOferta.Usuario.Nome; usuarioInscrito.CPFUsuario = matriculaOferta.Usuario.CPF; usuarioInscrito.DataSolicitacao = matriculaOferta.DataSolicitacao; usuarioInscrito.IdMatriculaOferta = matriculaOferta.ID; usuarioInscrito.NivelOcupacional = matriculaOferta.Usuario.NivelOcupacional.Nome; usuarioInscrito.StatusMatriculaID = (int)matriculaOferta.StatusMatricula; usuarioInscrito.StatusMatricula = matriculaOferta.StatusMatriculaFormatado; usuarioInscrito.UF = matriculaOferta.Usuario.UF.Sigla; if (matriculaOferta.StatusMatricula == enumStatusMatricula.Inscrito) { usuarioInscrito.PermiteCancelamento = true; } else { usuarioInscrito.PermiteCancelamento = false; } if (matriculaOferta.MatriculaTurma != null && matriculaOferta.MatriculaTurma.Count() > 0) { usuarioInscrito.Turma.ID = matriculaOferta.MatriculaTurma.FirstOrDefault().Turma.ID; usuarioInscrito.Turma.IDChaveExternaTurma = matriculaOferta.MatriculaTurma.FirstOrDefault().Turma.IDChaveExterna; usuarioInscrito.Turma.Nome = matriculaOferta.NomeTurma; } retorno.ListaMatriculados.Add(usuarioInscrito); } return(retorno); }
public ManterFormacaoDeMultiplicadores() { _bmMatriculaOferta = new BMMatriculaOferta(); _bmOferta = new BMOferta(); }