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();
            }
        }
Пример #2
0
        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();
        }
Пример #3
0
        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;
        }
Пример #4
0
        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);
        }
Пример #6
0
        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);
        }
Пример #8
0
        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();
        }
Пример #9
0
        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");
        }
Пример #10
0
        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;
            }
        }
Пример #11
0
        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);
        }
Пример #12
0
        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");
        }