예제 #1
0
        public void IncluirOferta(Oferta pOferta)
        {
            try
            {
                pOferta.NomeSalvo = (pOferta.SolucaoEducacional.CategoriaConteudo.Sigla + ".SE" + pOferta.SolucaoEducacional.Sequencia + ".OF" + pOferta.Sequencia);
                this.PreencherInformacoesDeAuditoria(pOferta);
                bmOferta.Salvar(pOferta);

                AtualizarNodeIdDrupal(pOferta);

                //Notificar o Usuário
                this.NotificarUsuariosQueDesejamReceberNotificacaoOferta(pOferta);
            }
            catch (AcademicoException ex)
            {
                throw ex;
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
            }
        }
예제 #4
0
        protected void btnObterChaveExterna_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txtIDCurso.Text) ||
                ddlSolucaoEducacional.SelectedIndex <= 0 ||
                ddlOferta.SelectedIndex <= 0)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Alerta, "Você deve informar o ID do curso no Moodle a Solução Educacional e a Oferta");
            }
            else
            {
                var solucaoEducacional = bmSolucaoEducacional.ObterPorId(int.Parse(ddlSolucaoEducacional.SelectedValue));

                if (solucaoEducacional.Fornecedor.ID != (int)enumFornecedor.MoodleSebrae)
                {
                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Este curso não é fornecido pelo Moodle");
                }
                else
                {
                    var oferta = bmOferta.ObterPorId(int.Parse(ddlOferta.SelectedValue));

                    int idCurso = int.Parse(txtIDCurso.Text);

                    var curso = bmCurso.ObterPorID(idCurso);

                    if (curso != null)
                    {
                        var sgusMoodleCurso = bmSgusMoodleCurso.ObterPorCodigoCurso(curso.ID);
                        if (sgusMoodleCurso == null)
                        {
                            sgusMoodleCurso = new SgusMoodleCurso();
                            sgusMoodleCurso.CodigoCategoria = curso.CodigoCategoria;
                            sgusMoodleCurso.CodigoCurso     = curso.ID;
                            sgusMoodleCurso.Nome            = curso.NomeCompleto;
                            sgusMoodleCurso.DataCriacao     = DateTime.Now;
                            sgusMoodleCurso.DataAtualizacao = DateTime.Now;
                            sgusMoodleCurso.Desabilitado    = 1;
                            bmSgusMoodleCurso.Cadastrar(sgusMoodleCurso);
                        }

                        var sgusMoodelOferta = bmSgusMoodleOferta.ObterPorCodigoCurso(curso.ID);
                        if (sgusMoodelOferta == null)
                        {
                            sgusMoodelOferta = new SgusMoodleOferta();
                            sgusMoodelOferta.CodigoCategoria = curso.CodigoCategoria;
                            sgusMoodelOferta.CodigoCurso     = curso.ID;
                            sgusMoodelOferta.Nome            = curso.NomeCompleto;
                            sgusMoodelOferta.DataCriacao     = DateTime.Now;
                            sgusMoodelOferta.DataAtualizacao = DateTime.Now;
                            sgusMoodelOferta.Desabilitado    = 1;
                            bmSgusMoodleOferta.Cadastrar(sgusMoodelOferta);
                        }

                        if (string.IsNullOrEmpty(solucaoEducacional.IDChaveExterna))
                        {
                            solucaoEducacional.IDChaveExterna = curso.CodigoCategoria.ToString();
                            bmSolucaoEducacional.Salvar(solucaoEducacional);
                        }

                        bool alterouOferta = false;
                        if (string.IsNullOrEmpty(oferta.IDChaveExterna))
                        {
                            oferta.IDChaveExterna = sgusMoodelOferta.ID.ToString();
                            alterouOferta         = true;
                        }

                        if (oferta.CodigoMoodle.HasValue == false)
                        {
                            oferta.CodigoMoodle = sgusMoodelOferta.CodigoCurso;
                            alterouOferta       = true;
                        }

                        if (alterouOferta)
                        {
                            bmOferta.Salvar(oferta);
                        }

                        dvResumo.Visible = true;
                        string resumo = string.Empty;

                        resumo += "Chave Externa da Solução Educacional: " + sgusMoodleCurso.CodigoCategoria + "<br>";
                        resumo += "Chave Externa da Oferta: " + sgusMoodelOferta.ID + "<br>";
                        resumo += "Código Moodle da Oferta: " + sgusMoodelOferta.CodigoCurso + "<br><hr>";

                        litResumo.Text = resumo;
                    }
                    else
                    {
                        WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Este curso não foi encontrado no Moodle");
                    }
                }
            }
        }