예제 #1
0
        private void EnviarMensagematrasoPorMatriculaTurma(MensageriaParametros pMensgrParametro)
        {
            try
            {
                IList <MatriculaTurma> lstMatriculaTurma = new BMMatriculaTurma().ObterMatriculasDataExpiracao(pMensgrParametro.DiaAviso);

                BMMensageriaRegistro mensageriaRegistroBM = new BMMensageriaRegistro();

                foreach (MatriculaTurma mt in lstMatriculaTurma)
                {
                    if (!mensageriaRegistroBM.ValidarComunicacaoEfetuada(mt))
                    {
                        MensageriaRegistro mr = new MensageriaRegistro()
                        {
                            Auditoria           = new Auditoria(null),
                            MatriculaTurma      = mt,
                            MensageriaParametro = pMensgrParametro,
                            DataEnvio           = DateTime.Now,
                            Usuario             = mt.MatriculaOferta.Usuario
                        };

                        mr.TextoEnviado = TextoTemplateMensagem(mr);
                        //EnviarMensagem(mr);

                        mensageriaRegistroBM.Salvar(mr);
                    }
                }
            }
            catch (Exception ex)
            {
                ErroUtil.Instancia.TratarErro(ex);
            }
        }
예제 #2
0
        private void VerificarStatus(Turma turma, enumStatusTurma?statusAnterior)
        {
            var exceptionCancelamento = string.Empty;

            var matriculasTurma = new BMMatriculaTurma().ObterPorTurma(turma);

            if (turma.Status == enumStatusTurma.Cancelada)
            {
                try
                {
                    NotificarCancelamento(turma);
                }
                catch (AcademicoException ex)
                {
                    exceptionCancelamento = ex.Message;
                }

                // Alterar status das matrículas para Cancelado ADM.
                foreach (var matricula in matriculasTurma)
                {
                    matricula.MatriculaOferta.StatusMatricula = enumStatusMatricula.CanceladoTurma;
                    new ManterMatriculaOferta().Salvar(matricula.MatriculaOferta);
                    new ManterItemTrilhaParticipacao().AtualizarStatusParticipacoesTrilhas(matricula.MatriculaOferta);
                }
            }

            // Caso a turma esteja sendo alterada de cancelamento para prevista, altera as matrículas para Inscrito.
            if (statusAnterior == enumStatusTurma.Cancelada && turma.Status == enumStatusTurma.Prevista)
            {
                // Alterar status das matrículas para Inscrito.
                foreach (var matricula in matriculasTurma)
                {
                    matricula.MatriculaOferta.StatusMatricula = enumStatusMatricula.Inscrito;
                    new ManterMatriculaOferta().Salvar(matricula.MatriculaOferta);
                    new ManterItemTrilhaParticipacao().AtualizarStatusParticipacoesTrilhas(matricula.MatriculaOferta);
                }
            }

            if (turma.Status == enumStatusTurma.Confirmada)
            {
                try
                {
                    NotificarConfirmacao(turma);
                }
                catch (AcademicoException ex)
                {
                    throw new AcademicoException(
                              "Turma salva com sucesso, porém ocorreram os seguintes erros no envio de e-mail: " +
                              Environment.NewLine +
                              (!string.IsNullOrWhiteSpace(exceptionCancelamento)
                            ? exceptionCancelamento
                            : "") + Environment.NewLine + ex.Message);
                }
            }
        }
예제 #3
0
        public void RegistrarAbandono()
        {
            try
            {
                //Executando para Matrícula Turma
                IList <MatriculaTurma> lstMT = new BMMatriculaTurma().ObterVencidos();

                foreach (MatriculaTurma mt in lstMT)
                {
                    BMUsuarioAbandono usuarioAbandonoBM = new BMUsuarioAbandono();

                    //if (usuarioAbandonoBM.ValidarAbandonoAtivo(mt.MatriculaOferta.Usuario.ID))
                    //    continue;
                    //else if (mt.Turma.Oferta.ListaMatriculaOferta.Where(x => x.StatusMatricula != enumStatusMatricula.Inscrito).Count() > 0 ||
                    //        mt.MatriculaOferta.StatusMatricula == enumStatusMatricula.Inscrito)
                    //    continue;

                    if (!mt.MediaFinal.HasValue || mt.MediaFinal.Value == 0)
                    {
                        MatriculaOferta mof = mt.MatriculaOferta;

                        usuarioAbandonoBM.Salvar(new UsuarioAbandono()
                        {
                            DataFimAbandono    = DateTime.Now.Date.AddDays(int.Parse(ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.LimiteAlertaInscricaoOferta).Registro)),
                            DataInicioAbandono = DateTime.Now.Date,
                            Desconsiderado     = false,
                            Usuario            = new BMUsuario().ObterPorId(mt.MatriculaOferta.Usuario.ID),
                            Origem             = "Abandono SE: " + mof.Oferta.SolucaoEducacional.Nome
                        });

                        if (mof != null)
                        {
                            mof.StatusMatricula = enumStatusMatricula.Abandono;
                            new BMMatriculaOferta().Salvar(mof);
                        }
                    }
                    else
                    {
                    }
                }


                //Executando para Usuário trilha
                IList <UsuarioTrilha> lstUserTrilha = new BMUsuarioTrilha().ObterVencidos();

                foreach (UsuarioTrilha ut in lstUserTrilha)
                {
                    BMUsuarioAbandono usuarioAbandonoBM = new BMUsuarioAbandono();

                    if (usuarioAbandonoBM.ValidarAbandonoAtivo(ut.Usuario.ID))
                    {
                        continue;
                    }


                    if (usuarioAbandonoBM.ObterPorUsuario(new BMUsuario().ObterPorId(ut.Usuario.ID)) == null)
                    {
                        //usuarioAbandonoBM.Salvar(new UsuarioAbandono()
                        //{
                        //    DataFimAbandono = DateTime.Now.Date.AddDays(ParametrosSistema.DiasFinalAbandono),
                        //    DataInicioAbandono = DateTime.Now.Date,
                        //    Desconsiderado = false,
                        //    Usuario = new BMUsuario().ObterPorId(ut.Usuario.ID)
                        //});


                        ut.StatusMatricula = enumStatusMatricula.Abandono;
                        new BMUsuarioTrilha().Salvar(ut);
                    }
                }
            }
            catch (Exception ex)
            {
                ErroUtil.Instancia.TratarErro(ex);
            }
        }
예제 #4
0
        public bool ManterMatriculaTurma(int idMatriculaOferta, int idTurma, double mediaFinal, AuthenticationProviderRequest autenticacao)
        {
            try
            {
                RegistrarLogExecucaoFornecedor((new BMFornecedor()).ObterPorFiltro(new Fornecedor()
                {
                    Login = autenticacao.Login
                }).FirstOrDefault(), "ManterMatriculaTurma");

                var bmMatriculaTurma  = new BMMatriculaTurma();
                var bmMatriculaOferta = new BMMatriculaOferta();
                var bmTurma           = new BMTurma();

                MatriculaTurma matriculaTurma = new MatriculaTurma();
                matriculaTurma.MatriculaOferta    = new MatriculaOferta();
                matriculaTurma.Turma              = new Turma();
                matriculaTurma.MatriculaOferta.ID = idMatriculaOferta;
                matriculaTurma.Turma.ID           = idTurma;

                matriculaTurma = bmMatriculaTurma.ObterPorFiltro(matriculaTurma).FirstOrDefault();

                if (matriculaTurma != null)
                {
                    MatriculaOferta matriculaOferta = bmMatriculaOferta.ObterPorID(idMatriculaOferta);
                    Turma           turma           = bmTurma.ObterPorID(idTurma);

                    matriculaTurma.MediaFinal = matriculaOferta.StatusMatricula == enumStatusMatricula.Abandono
                        ? null
                        : (double?)mediaFinal;

                    if (matriculaTurma.MediaFinal == 0)
                    {
                        matriculaTurma.MediaFinal = null;
                    }

                    if (!matriculaTurma.DataTermino.HasValue)
                    {
                        matriculaTurma.DataTermino = DateTime.Now;
                    }

                    decimal notaMinima = turma.NotaMinima.HasValue ? turma.NotaMinima.Value : 7;
                    decimal notaFinal  = matriculaTurma.MediaFinal.HasValue ? Convert.ToDecimal(matriculaTurma.MediaFinal.Value) : decimal.Zero;

                    if (notaFinal >= notaMinima)
                    {
                        matriculaOferta.StatusMatricula = enumStatusMatricula.Aprovado;
                    }
                    else
                    {
                        // Se já tiver terminada a turma vamos reprovar o aluno e ele não obteve nota para ser aprovado vamos reprovar ele
                        if (matriculaTurma.DataLimite < DateTime.Now)
                        {
                            // Se não obteve nenhuma nota é abandono
                            if (notaFinal == 0)
                            {
                                matriculaOferta.StatusMatricula = enumStatusMatricula.Abandono;
                            }
                            // Do contrário é deve ser reprovado
                            else
                            {
                                matriculaOferta.StatusMatricula = enumStatusMatricula.Reprovado;
                            }
                        }
                    }

                    matriculaTurma.Auditoria.UsuarioAuditoria = matriculaOferta.Auditoria.UsuarioAuditoria = autenticacao.Login;
                    matriculaOferta.Auditoria.DataAuditoria   = matriculaTurma.Auditoria.DataAuditoria = DateTime.Now;

                    bmMatriculaTurma.Salvar(matriculaTurma);
                    bmMatriculaOferta.Salvar(matriculaOferta);

                    //CASO A OFERTA FOR CONTINUA, VERIFICA E ATUALIZA O ITEM TRILHA DO USUARIO
                    new BP.ManterItemTrilhaParticipacao().vinculaMatriculaOferta(matriculaOferta);

                    new BP.ManterItemTrilhaParticipacao().AtualizarStatusParticipacoesTrilhas(matriculaOferta);
                }

                return(true);
            }
            catch
            {
                return(false);
            }
        }
예제 #5
0
        /// <summary>
        /// Em resumo: buscar status "utilizados" em questionários.
        /// Não resumindo: Obter, de forma bem dispendiosa, status que são utilizados em MatriculaTurma e
        /// UsuarioTrilha, cujos ID_Turma e ID_TrilhaNivel existam em QuestionarioParticipacao.
        /// </summary>
        /// <returns></returns>
        public List <StatusMatricula> ObterTodosQuePossuemQuestionarios()
        {
            var questionariosTrilhaNivel =
                new BMQuestionarioParticipacao().ObterTodosQuestionariosComParticipacaoQueryble()
                .Where(x => x.TrilhaNivel != null)
                .Select(x => new QuestionarioParticipacao
            {
                Usuario =
                    new Usuario
                {
                    ID = x.Usuario.ID
                },
                TrilhaNivel =
                    x.TrilhaNivel != null
                                ? new TrilhaNivel
                {
                    ID = x.TrilhaNivel.ID
                }
                                : null
            }).ToList();

            var questionariosTurma =
                new BMQuestionarioParticipacao().ObterTodosQuestionariosComParticipacaoQueryble()
                .Where(x => x.Turma != null)
                .Select(x => new QuestionarioParticipacao
            {
                Usuario =
                    new Usuario
                {
                    ID = x.Usuario.ID
                },
                Turma =
                    x.Turma != null
                                ? new Turma
                {
                    ID = x.Turma.ID
                }
                                : null,
            }).ToList();

            var usuariosTrilha = new BMUsuarioTrilha().ObterTodosIQueryable()
                                 .Select(x =>
                                         new UsuarioTrilha
            {
                ID = x.ID,
                StatusMatricula = x.StatusMatricula,
                Usuario         = new Usuario
                {
                    ID = x.Usuario.ID
                },
                TrilhaNivel = new TrilhaNivel
                {
                    ID = x.TrilhaNivel.ID
                }
            }).ToList();

            var matriculasTurma = new BMMatriculaTurma().ObterTodosIQueryable().Select(x =>
                                                                                       new MatriculaTurma
            {
                ID    = x.ID,
                Turma =
                    new Turma
                {
                    ID = x.Turma.ID
                },
                MatriculaOferta =
                    new MatriculaOferta
                {
                    ID      = x.MatriculaOferta.ID,
                    Usuario = new Usuario {
                        ID = x.MatriculaOferta.Usuario.ID
                    },
                    StatusMatricula = x.MatriculaOferta.StatusMatricula
                }
            }).ToList();


            return
                (_bmStatusMatricula.ObterTodosIncluindoEspecificos()
                 .Where(
                     status =>
                     matriculasTurma.Any(
                         mt =>
                         (int)mt.MatriculaOferta.StatusMatricula == status.ID &&
                         questionariosTurma.Any(
                             qt =>
                             qt.Usuario.ID == mt.MatriculaOferta.Usuario.ID && qt.Turma.ID == mt.Turma.ID)) ||
                     usuariosTrilha.Any(
                         ut =>
                         (int)ut.StatusMatricula == status.ID &&
                         questionariosTrilhaNivel.Any(
                             qt => qt.Usuario.ID == ut.Usuario.ID && qt.TrilhaNivel.ID == ut.TrilhaNivel.ID))
                     )
                 .ToList());
        }
        public RetornoWebService AtualizarNotaAlunoMoodle(string chaveExternaSolucao, string chaveExternaTurma,
                                                          string codCurso, string idUsuario, string nota, string dataConclusao)
        {
            try
            {
                //Pega a última turma
                var turma = new BMTurma().ObterUltimaTurmaPorChaveExterna(chaveExternaTurma);

                //Pega o id do pelo cpf(idUsuario) usuário
                var usuario = new BMUsuario().ObterPorCPF(idUsuario);

                if (usuario?.ID > 0)
                {
                    //Pegar a MatriculaOferta
                    var bmMatriculaOrfeta = new BMMatriculaOferta();
                    var matriculaOferta   = bmMatriculaOrfeta.ObterPorOfertaEUsuario(turma.Oferta.ID, usuario.ID);

                    //Pegar a MatriculaTurma
                    var matriculaTurma = new BMMatriculaTurma().ObterMatriculaTurma(usuario.ID, turma.Oferta.ID);

                    double notaFinal;

                    if (double.TryParse(nota, out notaFinal))
                    {
                        matriculaTurma.MediaFinal = notaFinal;
                    }

                    matriculaTurma.DataTermino = DateTime.Now;

                    new BMMatriculaTurma().Salvar(matriculaTurma);

                    if (notaFinal >= 7)
                    {
                        matriculaOferta.StatusMatricula = enumStatusMatricula.Aprovado;
                    }
                    else
                    {
                        matriculaOferta.StatusMatricula = enumStatusMatricula.Reprovado;
                    }

                    bmMatriculaOrfeta.Salvar(matriculaOferta);

                    return(new RetornoWebService()
                    {
                        Erro = 0, Mensagem = string.Empty
                    });
                }

                return(new RetornoWebService()
                {
                    Erro = 1, Mensagem = "usuario não encontrado"
                });
            }
            catch (Exception ex)
            {
                return(new RetornoWebService()
                {
                    Erro = 1, Mensagem = ex.Message
                });
            }
        }
예제 #7
0
 public ManterMatriculaTurma()
     : base()
 {
     bmMatriculaTurma = new BMMatriculaTurma();
 }