Пример #1
0
        private void validaNotasMatricula(MatriculaTurma matriculaTurma)
        {
            if (matriculaTurma.Turma.InAvaliacaoAprendizagem)
            {
                if (matriculaTurma.MatriculaOferta.StatusMatricula == enumStatusMatricula.Aprovado)
                {
                    if (matriculaTurma.Nota1 != null && (matriculaTurma.Nota1 < 0 || matriculaTurma.Nota1 > 10))
                    {
                        throw new AcademicoException("O campo Nota 1 deve ser um numero entre 0 e 10.");
                    }

                    if (matriculaTurma.Nota2 != null && (matriculaTurma.Nota2 < 0 || matriculaTurma.Nota2 > 10))
                    {
                        throw new AcademicoException("O campo Nota 2 deve ser um numero entre 0 e 10.");
                    }

                    if (matriculaTurma.MediaFinal == null || (matriculaTurma.MediaFinal < 0 || matriculaTurma.MediaFinal > 10))
                    {
                        throw new AcademicoException("O campo Média Final deve ser um numero entre 0 e 10.");
                    }

                    if (matriculaTurma.MediaFinal < (double)matriculaTurma.Turma.NotaMinima)
                    {
                        throw new AcademicoException(string.Format("A(s) nota(s) informada(s) deve(m) ser maior ou igual a {0}", matriculaTurma.Turma.NotaMinima));
                    }
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Verifica se existem pendências de resposta do questionário informado
        /// </summary>
        /// <param name="matricula"></param>
        /// <param name="mtOferta"></param>
        /// <param name="tipoQuestionario"></param>
        /// <returns></returns>
        public bool VerificarQuestionarioPendente(MatriculaTurma matricula, MatriculaOferta mtOferta, enumTipoQuestionarioAssociacao tipoQuestionario)
        {
            if (matricula.Turma.ListaQuestionarioAssociacao.Count > 0)
            {
                var questionarioAssociacao =
                    matricula.Turma.ListaQuestionarioAssociacao.FirstOrDefault(
                        x => x.TipoQuestionarioAssociacao.ID == (int)tipoQuestionario);

                if (questionarioAssociacao != null)
                {
                    if (
                        !(new BMQuestionarioParticipacao().ObterPorUsuario(mtOferta.Usuario)
                          .Any(
                              x =>
                              x.TipoQuestionarioAssociacao.ID ==
                              (int)tipoQuestionario &&
                              x.Turma.ID == mtOferta.MatriculaTurma.FirstOrDefault().Turma.ID&&
                              x.DataParticipacao != null)))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Пример #3
0
 internal void PreencherCamposDaMatriculaTurma(MatriculaTurma matriculaTurma)
 {
     if (matriculaTurma != null)
     {
         this.PrepararTelaParaEdicaoDeUmaTurma(matriculaTurma);
     }
 }
Пример #4
0
        private void EfetuarMatricula(Usuario usuarioLogado, Dominio.Classes.Oferta oferta, Usuario usuario, ManterMatriculaOferta manterMatriculaOferta, ManterMatriculaTurma manterMatriculaTurma)
        {
            var novaMatriculaOferta = new MatriculaOferta
            {
                Auditoria       = new Auditoria(usuarioLogado.CPF),
                Oferta          = oferta,
                Usuario         = usuario,
                StatusMatricula = enumStatusMatricula.Inscrito,
                UF = usuario.UF,
                NivelOcupacional = usuario.NivelOcupacional,
                DataSolicitacao  = DateTime.Today
            };

            manterMatriculaOferta.Salvar(novaMatriculaOferta);

            var novaMatriculaTurma = new MatriculaTurma
            {
                Auditoria = new Auditoria(usuarioLogado.CPF),
                Turma     =
                    oferta.ListaTurma.FirstOrDefault(t => Helpers.Util.ObterVigente(t.DataInicio, t.DataFinal)),
                MatriculaOferta = novaMatriculaOferta,
                DataMatricula   = DateTime.Today
            };

            novaMatriculaTurma.DataLimite = novaMatriculaTurma.CalcularDataLimite();

            manterMatriculaTurma.Salvar(novaMatriculaTurma);
        }
Пример #5
0
        private MatriculaTurma ObterObjetoMatriculaTurma(int idMatriculaOferta)
        {
            var matriculaOferta = new BMMatriculaOferta().ObterPorID(idMatriculaOferta);

            MatriculaTurma matriculaTurma = new MatriculaTurma();

            /*
             * Demanda #3474
             *
             * usuários com perfis de gestores UC e administradores, podem fazer inscrições de alunos fora do prazo de inscrição estipulado pela oferta.
             */

            if (matriculaOferta != null && matriculaOferta.MatriculaTurma != null)
            {
                matriculaTurma = matriculaOferta.MatriculaTurma.FirstOrDefault();
            }
            else
            {
                matriculaTurma = new MatriculaTurma
                {
                    Turma           = new BMTurma().ObterPorID(int.Parse(ddlTurma.SelectedValue)),
                    MatriculaOferta = matriculaOferta,
                    DataMatricula   =
                        IsAdminOrGestorUc && !string.IsNullOrEmpty(txtDataInscricao.Text)
                                            ? Convert.ToDateTime(txtDataInscricao.Text)
                                            : DateTime.Now, //Demanda #3474
                    DataTermino =
                        IsAdminOrGestorUc && !string.IsNullOrEmpty(txtDataConclusao.Text)
                                            ? Convert.ToDateTime(txtDataConclusao.Text)
                                            : DateTime.Now //Demanda #3474
                };
            }

            if (!string.IsNullOrEmpty(txtJustificativa.Text))
            {
                matriculaTurma.Observacao = txtJustificativa.Text;
            }

            var informarDataInscricao = matriculaTurma.Turma.Oferta.DataInicioInscricoes.HasValue &&
                                        matriculaTurma.Turma.Oferta.DataFimInscricoes.HasValue &&
                                        matriculaTurma.DataMatricula.Between(
                matriculaTurma.Turma.Oferta.DataInicioInscricoes.Value.Date,
                matriculaTurma.Turma.Oferta.DataFimInscricoes.Value.Date);

            if (!informarDataInscricao)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro,
                                             matriculaTurma.Turma.Oferta.DataInicioInscricoes.HasValue &&
                                             matriculaTurma.Turma.Oferta.DataFimInscricoes.HasValue
                        ? "Data de Matrícula deve ser entre " +
                                             matriculaTurma.Turma.Oferta.DataInicioInscricoes.Value.Date.ToString("dd/MM/yyyy") + " e " +
                                             matriculaTurma.Turma.Oferta.DataFimInscricoes.Value.Date.ToString("dd/MM/yyyy")
                        : "Data de Matrícula inválida.");
                return(null);
            }

            matriculaTurma.DataLimite = matriculaTurma.CalcularDataLimite(matriculaOferta.Oferta);

            return(matriculaTurma);
        }
Пример #6
0
        public IQueryable <MatriculaTurma> ObterPorFiltro(MatriculaTurma matriculaTurma)
        {
            var query = repositorio.session.Query <MatriculaTurma>();

            if (matriculaTurma.DataLimite != DateTime.MinValue)
            {
                query = query.Where(x => x.DataLimite.AddDays(1).Date == matriculaTurma.DataLimite.Date);
            }

            if (matriculaTurma.MatriculaOferta.Usuario != null)
            {
                query = query.Where(x => x.MatriculaOferta.Usuario.ID == matriculaTurma.MatriculaOferta.Usuario.ID);
            }

            if (matriculaTurma.Turma != null)
            {
                query = query.Where(x => x.Turma.ID == matriculaTurma.Turma.ID);
            }

            if (matriculaTurma.MatriculaOferta != null)
            {
                query = query.Where(x => x.MatriculaOferta.ID == matriculaTurma.MatriculaOferta.ID);
            }

            return(query);
        }
Пример #7
0
        public JsonResult Excluir(int id)
        {
            Matricula      matricula      = dbMatricula.FindOne(cur => cur.idMatricula == id);
            Aluno          aluno          = dbAluno.FindOne(x => x.idAluno == matricula.idAluno);
            MatriculaTurma matriculaTurma = dbMatriculaTurma.FindOne(x => x.idMatricula == matricula.idMatricula);
            Cobranca       cobranca       = dbCobranca.FindOne(x => x.idAluno == aluno.idAluno && x.idTaxa == 1);
            Turma          turma          = dbTurma.FindOne(x => x.idTurma == matriculaTurma.idTurma);

            try
            {
                dbCobranca.Remover(cobranca);
                dbCobranca.SaveChanges();

                dbMatriculaTurma.Remover(matriculaTurma);
                dbMatriculaTurma.SaveChanges();

                dbMatricula.Remover(matricula);
                dbMatricula.SaveChanges();

                dbAluno.Remover(aluno);
                dbAluno.SaveChanges();

                turma.vagasOcupadas -= 1;
                dbTurma.Atualizar(turma);
                dbTurma.SaveChanges();

                return(Json(new { success = true }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                return(Json(new { success = false, message = e.Message }, JsonRequestBehavior.AllowGet));
            }
        }
Пример #8
0
        private string MatricularAlunoNaTurma(int idMatriculaOferta, int idTurma)
        {
            string retorno = "Ocorreu um erro no processo";

            MatriculaOferta matriculaOferta = new ManterMatriculaOferta().ObterMatriculaOfertaPorID(idMatriculaOferta);

            if (matriculaOferta != null)
            {
                MatriculaTurma        matriculaTurma        = this.ObterObjetoMatriculaTurma(idTurma, matriculaOferta);
                ManterMatriculaOferta manterMatriculaOferta = new ManterMatriculaOferta();
                if (matriculaOferta.MatriculaTurma.Count == 0)
                {
                    matriculaOferta.MatriculaTurma.Add(matriculaTurma);
                }
                else
                {
                    matriculaOferta.MatriculaTurma[0] = matriculaTurma;
                }
                manterMatriculaOferta.AtualizarMatriculaOferta(matriculaOferta);

                retorno = string.Format("O usuário '{0}' foi matriculado na turma '{1}'", matriculaOferta.Usuario.Nome, matriculaTurma.Turma.Nome);
            }

            return(retorno);
        }
Пример #9
0
        protected void btnEnviar_Click(object sender, EventArgs e)
        {
            try
            {
                MatriculaTurma       matriculaTurma       = this.ObterObjetoMatriculaTurma();
                ManterMatriculaTurma manterMatriculaTurma = new ManterMatriculaTurma();

                validaNotasMatricula(matriculaTurma);

                if (matriculaTurma.Turma.Oferta.TipoOferta != enumTipoOferta.Continua && matriculaTurma.DataTermino > matriculaTurma.DataLimite)
                {
                    throw new AcademicoException("A Data de Conclusão não pode ser maior que a Data Limite da Turma.");
                }

                var usuarioLogado = new ManterUsuario().ObterUsuarioLogado();
                matriculaTurma.Auditoria = new Auditoria(usuarioLogado.CPF);

                manterMatriculaTurma.AlterarMatriculaTurma(matriculaTurma);

                if (MatriculouAlunoEmUmaTurma != null)
                {
                    MatriculouAlunoEmUmaTurma(this, new MatricularAlunoEmUmaTurmaEventArgs(matriculaTurma));
                }
            }
            catch (AcademicoException ex)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
                return;
            }
        }
Пример #10
0
        public MatriculaTurma ObterMatriculaTurma(int idUsuario, int idTurma)
        {
            var            query          = repositorio.session.Query <MatriculaTurma>();
            MatriculaTurma matriculaTurma = query.FirstOrDefault(x => x.MatriculaOferta.Usuario.ID == idUsuario && x.Turma.ID == idTurma);

            return(matriculaTurma);
        }
Пример #11
0
        private void MatricularNovoUsuarioEmCursosObrigatorios(Usuario usuario)
        {
            try
            {
                var listaSolucoesEducacionais =
                    new ManterSolucaoEducacional().ObterObrigatorios(usuario.NivelOcupacional)
                    .Select(x => x.SolucaoEducacional);

                foreach (var solucaoEducacional in listaSolucoesEducacionais)
                {
                    //VER SE O USUÁRIO JÁ ESTÁ MATRICULADO
                    if (usuario.ListaMatriculaOferta.All(x => x.Oferta.SolucaoEducacional != solucaoEducacional))
                    {
                        var oferta =
                            solucaoEducacional.ListaOferta.FirstOrDefault(
                                x =>
                                Helpers.Util.ObterVigente(x.DataInicioInscricoes, x.DataFimInscricoes) &&
                                x.ListaTurma.Any(t => Helpers.Util.ObterVigente(t.DataInicio, t.DataFinal)));

                        var novaMatriculaOferta = new MatriculaOferta
                        {
                            Auditoria       = new Auditoria(new ManterUsuario().ObterUsuarioLogado().CPF),
                            Oferta          = oferta,
                            Usuario         = usuario,
                            StatusMatricula = enumStatusMatricula.Inscrito,
                            UF = usuario.UF,
                            NivelOcupacional = usuario.NivelOcupacional,
                            DataSolicitacao  = DateTime.Today
                        };

                        new ManterMatriculaOferta().Salvar(novaMatriculaOferta);

                        if (oferta == null)
                        {
                            continue;
                        }

                        var novaMatriculaTurma = new MatriculaTurma
                        {
                            Auditoria = new Auditoria(new ManterUsuario().ObterUsuarioLogado().CPF),
                            Turma     =
                                oferta.ListaTurma.FirstOrDefault(
                                    t => Helpers.Util.ObterVigente(t.DataInicio, t.DataFinal)),
                            MatriculaOferta = novaMatriculaOferta,
                            DataMatricula   = DateTime.Today
                        };

                        novaMatriculaTurma.DataLimite = novaMatriculaTurma.CalcularDataLimite();

                        new ManterMatriculaTurma().Salvar(novaMatriculaTurma);
                    }
                }
            }
            catch (Exception)
            {
                // ignored
            }
        }
        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
                });
            }
        }
Пример #13
0
        protected void Setup()
        {
            oferta = new Oferta
            {
                ID         = 1,
                DiasPrazo  = 5,
                TipoOferta = Academico.Dominio.Enumeracao.enumTipoOferta.Continua,
                Nome       = "Oferta Test"
            };

            turma = new Turma
            {
                ID         = 1,
                Nome       = "TURMA 1",
                DataInicio = DateTime.Today.AddDays(-1),
                DataFinal  = DateTime.Today.AddDays(10),
                Oferta     = oferta
            };

            matriculaOferta = new MatriculaOferta
            {
                ID     = 1,
                Oferta = oferta
            };

            matriculaTurma = new MatriculaTurma
            {
                ID              = 1,
                DataMatricula   = DateTime.Today,
                DataLimite      = DateTime.Today.AddDays(10),
                DataTermino     = DateTime.Today.AddDays(5),
                MatriculaOferta = matriculaOferta,
                Turma           = turma
            };

            turmaFechada = new Turma
            {
                ID         = 2,
                Nome       = "TURMA 2",
                DataInicio = DateTime.Today.AddDays(-30),
                DataFinal  = DateTime.Today.AddDays(-10),
                Oferta     = oferta
            };


            matriculaTurmaFechada = new MatriculaTurma
            {
                ID              = 2,
                DataMatricula   = DateTime.Today.AddDays(-10),
                DataLimite      = DateTime.Today.AddDays(10),
                DataTermino     = DateTime.Today.AddDays(5),
                MatriculaOferta = matriculaOferta,
                Turma           = turmaFechada
            };
        }
Пример #14
0
 public void AlterarMatriculaTurma(MatriculaTurma pMatriculaTurma)
 {
     try
     {
         bmMatriculaTurma.Salvar(pMatriculaTurma);
     }
     catch (AcademicoException ex)
     {
         throw ex;
     }
 }
Пример #15
0
 private void TransferirInformacoesDeUmaTurmaParaOutra(MatriculaTurma pTurmaAnterior, MatriculaTurma pNovaTurma)
 {
     pNovaTurma.Nota1      = pTurmaAnterior.Nota1;
     pNovaTurma.Nota2      = pTurmaAnterior.Nota2;
     pNovaTurma.MediaFinal = pTurmaAnterior.MediaFinal;
     //pNovaTurma.StatusMatricula = pTurmaAnterior.StatusMatricula;
     pNovaTurma.Turma = pTurmaAnterior.Turma;
     //pNovaTurma.Usuario = pTurmaAnterior.Usuario;
     pNovaTurma.DataLimite    = pTurmaAnterior.DataLimite;
     pNovaTurma.DataMatricula = DateTime.Now;
 }
Пример #16
0
        public void PrepararTelaParaEdicaoDeUmaTurma(MatriculaTurma matriculaTurma)
        {
            if (matriculaTurma != null)
            {
                this.IdMatriculaTurma = matriculaTurma.ID;
                this.PreencherInformacoesDaMatriculaTurma(matriculaTurma);

                this.ExibirPanelDeProvasRealizadas();

                PreencherGridComProvasRealizadas(matriculaTurma);
            }
        }
Пример #17
0
 private void PreencherGridComProvasRealizadas(MatriculaTurma matriculaTurma)
 {
     try
     {
         ManterQuestionarioParticipacao manterQuestionarioParticipacao = new ManterQuestionarioParticipacao();
         //IList<QuestionarioParticipacao> ListaProvasDoUsuario = manterQuestionarioParticipacao.ObterProvasDaTrilhaDoUsuario(usuarioTrilha.Usuario.ID, usuarioTrilha.TrilhaNivel.ID);
         IList <QuestionarioParticipacao> ListaProvasDoUsuario = manterQuestionarioParticipacao.ObterProvasDaTurmaDoUsuario(matriculaTurma.MatriculaOferta.Usuario.ID, matriculaTurma.Turma.ID);
         WebFormHelper.PreencherGrid(ListaProvasDoUsuario, this.dgvProvasRealizadas);
     }
     catch (AcademicoException ex)
     {
         WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
     }
 }
Пример #18
0
        public IList <MatriculaTurma> ListaMatriulaTurmaPorId(int id)
        {
            string query = @"SELECT  t.Id, m.Nome, m.DataNascimento, m.CPF, m.RG, m.Telefone, m.CEP, m.Endereco, m.Numero, m.Bairro
                                , m.Cidade, m.Estado, t.Descricao, t.Tipo, c.Nome Colaborador, t.DiaDaSemana, t.HorarioInicial, 
                                t.HorarioFinal
                                FROM Matriculas m
                                JOIN MatriculaTurma mt ON m.Id = mt.IdMatricula
                                JOIN Turmas t ON t.id = mt.IdTurma
                                JOIN Colaboradores c ON c.Id = t.ColaboradorId
                                WHERE m.Id = @ID";
            List <MatriculaTurma> lista = new List <MatriculaTurma>();

            using (var con = new SqlConnection(stringConexao))
            {
                con.Open();
                SqlCommand cmd = new SqlCommand(query, con);
                cmd.Parameters.AddWithValue("@ID", id);
                SqlDataReader sdr = cmd.ExecuteReader();
                if (sdr.HasRows)
                {
                    while (sdr.Read())
                    {
                        var matricula = new MatriculaTurma
                        {
                            Id             = Convert.ToInt32(sdr["Id"]),
                            DataNascimento = sdr["DataNascimento"].ToString(),
                            CPF            = sdr["CPF"].ToString(),
                            RG             = sdr["RG"].ToString(),
                            Telefone       = sdr["Telefone"].ToString(),
                            CEP            = sdr["CEP"].ToString(),
                            Endereco       = sdr["Endereco"].ToString(),
                            Numero         = sdr["Numero"].ToString(),
                            Bairro         = sdr["Bairro"].ToString(),
                            Cidade         = sdr["Cidade"].ToString(),
                            Estado         = sdr["Estado"].ToString(),
                            Colaborador    = sdr["Colaborador"].ToString(),
                            Descricao      = sdr["Descricao"].ToString(),
                            Tipo           = sdr["Tipo"].ToString(),
                            DiaDaSemana    = sdr["DiaDaSemana"].ToString(),
                            HorarioInicial = sdr["HorarioInicial"].ToString(),
                            HorarioFinal   = sdr["HorarioFinal"].ToString(),
                            Nome           = sdr["Nome"].ToString()
                        };
                        lista.Add(matricula);
                    }
                }
            }
            return(lista);
        }
 /// <summary>
 /// Atualiza a data início e data fim do curso no histórico acadêmico
 /// </summary>
 /// <param name="matricula"></param>
 /// <param name="historico"></param>
 /// <returns></returns>
 public void preencherDataInicioDataFimCurso(MatriculaTurma matricula, Oferta oferta, ref DTOItemHistoricoAcademico historico)
 {
     if (oferta.TipoOferta != enumTipoOferta.Continua)
     {
         historico.DataInicio = matricula.Turma.DataInicio.ToString("dd/MM/yyyy");
         historico.DataFim    = matricula.Turma.DataFinal.HasValue ? matricula.Turma.DataFinal.Value.ToString("dd/MM/yyyy") : "";
     }
     else
     {
         historico.DataInicio = matricula.DataMatricula.ToString("dd/MM/yyyy");
         historico.DataFim    = matricula.DataTermino.HasValue
             ? matricula.DataTermino.Value.ToString("dd/MM/yyyy")
             : "";
     }
 }
Пример #20
0
        /// <summary>
        /// Consulta a quantidade de itens questionário agrupados
        /// </summary>
        /// <param name="matricula"></param>
        /// <returns></returns>
        public int ConsultarQuantidadeItensQuestionarioAssociados(MatriculaTurma matricula)
        {
            if (matricula.Turma.ListaQuestionarioAssociacao.Count > 0)
            {
                var itemQuestionarioAssociacaoEficacia =
                    matricula.Turma.ListaQuestionarioAssociacao.FirstOrDefault(
                        x => x.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Eficacia);
                if (itemQuestionarioAssociacaoEficacia != null)
                {
                    int quantidade = new ManterQuestionario().QuantidadeQuestionariosAgrupados(itemQuestionarioAssociacaoEficacia.Questionario);
                    return(quantidade > 0 ? quantidade : 1);
                }
            }

            return(1);
        }
Пример #21
0
        /*
         * private void PrepararTelaDeTurmaParaEdicao(int idTurma)
         * {
         *  ucTurma1.LimparCampos();
         *  ucTurma1.CarregarLoad = true;
         *  ucTurma1.CarregarDados();
         *  ucTurma1.EsconderBotaoSalvar();
         *
         *
         *  var turma = ucTurma1.ObterTurma(idTurma);
         *
         *  ucTurma1.PreencherCampos(turma);
         *
         *  ExibirModalTurma();
         * }
         */
        //Atualiza o status da mátricula no curso do moodle do usuário
        private void AtualizarStatusUsuarioTurma(MatriculaTurma matriculaTurma)
        {
            var matriculaOferta = matriculaTurma.MatriculaOferta.Oferta;

            if (matriculaOferta.SolucaoEducacional.Fornecedor.ID == (int)enumFornecedor.MoodleSebrae)
            {
                try
                {
                    var response = new Sebrae.Academico.BP.Services.SgusWebService.ManterSolucaoEducacionalService().AtualizarStatusMatriculaAlunoMoodle(
                        matriculaTurma.MatriculaOferta.Usuario.CPF,
                        matriculaOferta.IDChaveExterna,
                        (int)matriculaTurma.MatriculaOferta.StatusMatricula);
                }
                catch (Exception e)
                {
                    throw new AcademicoException("Erro ao tentar atualizar staus no Moodle " + e.Message);
                }
            }
        }
        //Inserir registro de acordo com a Quantidade maxima de envio calculando o intervalo de envio  de 7 em 7 dias
        public void Inserir(MatriculaTurma matriculaTurma)
        {
            int      qtdMaxEnvio       = 3;
            int      qtdIntervaloEnvio = 7;
            DateTime agora             = DateTime.Now;

            for (int i = 0; i < qtdMaxEnvio; i++)
            {
                double qtdDia = (i == 0) ? i : (qtdIntervaloEnvio * i);

                var questionarioAssociacaoEnvio = new QuestionarioAssociacaoEnvio();
                questionarioAssociacaoEnvio.Ativo     = true;
                questionarioAssociacaoEnvio.DataEnvio = agora.AddDays(qtdDia);
                questionarioAssociacaoEnvio.Usuario   = matriculaTurma.MatriculaOferta.Usuario;
                questionarioAssociacaoEnvio.QuestionarioAssociacao = matriculaTurma.Turma.ListaQuestionarioAssociacao.FirstOrDefault(
                    y => y.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Pos);

                bmQuestionarioAssociacaoEnvio.Salvar(questionarioAssociacaoEnvio);
            }
        }
Пример #23
0
        public IList <MatriculaTurma> ListaMatriculaTurma()
        {
            string query = @"select t.Id, count(1) Quantidade, t.Descricao, t.Tipo, t.DiaDaSemana, t.HorarioInicial, t.HorarioFinal, c.Nome from turmas t
JOIN Colaboradores c ON t.ColaboradorId = c.Id
GROUP BY t.Id, t.Descricao, t.Tipo, t.DiaDaSemana, t.HorarioInicial, t.HorarioFinal, c.Nome";
            var    lista = new List <MatriculaTurma>();

            using (var con = new SqlConnection(stringConexao))
            {
                con.Open();
                SqlCommand    cmd = new SqlCommand(query, con);
                SqlDataReader sdr = cmd.ExecuteReader();
                if (sdr.HasRows)
                {
                    MatriculaTurma model;
                    while (sdr.Read())
                    {
                        model = new MatriculaTurma
                        {
                            Id = Convert.ToInt32(sdr["Id"])
                            ,
                            Quantidade = Convert.ToInt32(sdr["Quantidade"])
                            ,
                            Descricao = sdr["Descricao"].ToString()
                            ,
                            Tipo = sdr["Tipo"].ToString()
                            ,
                            DiaDaSemana = sdr["DiaDaSemana"].ToString()
                            ,
                            HorarioInicial = sdr["HorarioInicial"].ToString()
                            ,
                            HorarioFinal = sdr["HorarioFinal"].ToString()
                            ,
                            Nome = sdr["Nome"].ToString()
                        };
                        lista.Add(model);
                    }
                }
            }
            return(lista);
        }
Пример #24
0
        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;
            }
        }
Пример #25
0
        public string VincularAluno(int idMatriculaTurma)
        {
            MatriculaTurma matriculaTurma = dbMatriculaTurma.FindOne(x => x.idMatriculaTurma == idMatriculaTurma);
            Matricula      matricula      = dbMatricula.FindOne(x => x.idMatricula == matriculaTurma.idMatricula);
            Turma          turma          = dbTurma.FindOne(x => x.idTurma == matriculaTurma.idTurma);

            Taxa taxa = dbTaxa.FindOne(x => x.idTaxa == 1);

            Cobranca cobranca = new Cobranca();

            cobranca.idTaxa          = 1;
            cobranca.idAluno         = matricula.idAluno;
            cobranca.statusPagamento = (int)EnumStatus.NaoPago;
            cobranca.valorTotal      = taxa.valor;
            cobranca.juros           = 0;
            cobranca.dataVencimento  = DateTime.Now.AddDays(5);
            cobranca.idCurso         = turma.idCurso;

            matricula.tipo = "matricula";
            turma.vagasOcupadas++;

            try
            {
                dbCobranca.Adicionar(cobranca);
                dbCobranca.SaveChanges();

                dbMatricula.Atualizar(matricula);
                dbMatricula.SaveChanges();

                dbTurma.Atualizar(turma);
                dbTurma.SaveChanges();

                return("Sim");
            }
            catch
            {
                return("Não");
            }
        }
Пример #26
0
        private MatriculaTurma ObterObjetoMatriculaTurma(int idTurma, MatriculaOferta matriculaOferta)
        {
            MatriculaTurma matriculaTurma = null;

            if (matriculaOferta.MatriculaTurma != null && matriculaOferta.MatriculaTurma.Count > 0)
            {
                matriculaTurma = matriculaOferta.MatriculaTurma.FirstOrDefault();
            }

            //Se o usuário não estiver matriculado em nenhuma turma, preenche o objeto matricula turma com os dados da oferta.
            if (matriculaTurma == null)
            {
                matriculaTurma = new MatriculaTurma
                {
                    MatriculaOferta = matriculaOferta,
                    Turma           = new ManterTurma().ObterTurmaPorID(idTurma),
                    DataMatricula   = DateTime.Now
                };

                matriculaTurma.DataLimite = matriculaTurma.CalcularDataLimite(matriculaOferta.Oferta);
            }
            else
            {
                //Troca a turma, pois o usuário informou uma nova turma
                int idTurmaEscolhidaNaCombo = idTurma;
                if (!matriculaTurma.ID.Equals(idTurmaEscolhidaNaCombo))
                {
                    matriculaTurma.TurmaAnterior = matriculaTurma.Turma;

                    /* Troca a Turma do usuário (ou seja, matricula o aluno em uma nova turma),
                     * pois ele escolheu uma nova turma na combo.*/
                    matriculaTurma.Turma = new ManterTurma().ObterTurmaPorID(idTurma);
                }
            }

            return(matriculaTurma);
        }
Пример #27
0
        public JsonResult ExcluirPreMatricula(int id)
        {
            Matricula      matricula      = dbMatricula.FindOne(cur => cur.idMatricula == id);
            Aluno          aluno          = dbAluno.FindOne(x => x.idAluno == matricula.idAluno);
            MatriculaTurma matriculaTurma = dbMatriculaTurma.FindOne(x => x.idMatricula == matricula.idMatricula);

            try
            {
                dbMatriculaTurma.Remover(matriculaTurma);
                dbMatriculaTurma.SaveChanges();

                dbMatricula.Remover(matricula);
                dbMatricula.SaveChanges();

                dbAluno.Remover(aluno);
                dbAluno.SaveChanges();

                return(Json(new { success = true }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                return(Json(new { success = false, message = e.Message }, JsonRequestBehavior.AllowGet));
            }
        }
Пример #28
0
        public void MatricularSolucaoEducacional(int idUsuario, int idSolucaoEducacional, int idOferta,
                                                 List <int> pListaIdMetaIndividualAssociada, List <int> pListaIdMetaInstitucionalAssociada, AuthenticationRequest autenticacao)
        {
            Usuario            userSelected       = new BMUsuario().ObterPorId(idUsuario);
            SolucaoEducacional solucaoEducacional = new BMSolucaoEducacional().ObterPorId(idSolucaoEducacional);
            BMMatriculaOferta  moBM = new BMMatriculaOferta();

            if (solucaoEducacional == null)
            {
                throw new AcademicoException("Solução Educacional não encontrada");
            }

            //VALIDAR SE ELE TEM ALGUMA OFERTA EXCLUSIVA PENDENTE DE CONFIRMACAO
            if (userSelected.ListaMatriculaOferta.Any(x => x.Oferta.ID == idOferta && x.Oferta.SolucaoEducacional.ID == idSolucaoEducacional && x.StatusMatricula == enumStatusMatricula.PendenteConfirmacaoAluno && x.Oferta.DataFim.Value.Date >= DateTime.Now.Date))
            {
                MatriculaOferta mo = userSelected.ListaMatriculaOferta.Where(x => x.Oferta.SolucaoEducacional.ID == idSolucaoEducacional && x.StatusMatricula == enumStatusMatricula.PendenteConfirmacaoAluno).FirstOrDefault();

                if (mo != null)
                {
                    mo.StatusMatricula = enumStatusMatricula.Inscrito;
                    mo.Auditoria       = new Auditoria(autenticacao.Login);
                    moBM.Salvar(mo);
                    ValidarMetaIndividual(idUsuario, idSolucaoEducacional, pListaIdMetaIndividualAssociada, autenticacao);
                    ValidarMetaInstitucional(idUsuario, idSolucaoEducacional, pListaIdMetaInstitucionalAssociada, autenticacao);

                    if (!(mo.MatriculaTurma != null && mo.MatriculaTurma.Count > 0))
                    {
                        try
                        {
                            if (mo.Oferta.TipoOferta.Equals(enumTipoOferta.Continua))
                            {
                                string retornows;
                                switch (mo.Oferta.SolucaoEducacional.Fornecedor.ID)
                                {
                                case (int)enumFornecedor.MoodleSebrae:
                                    moodle.IntegracaoSoapClient soapCliente = new moodle.IntegracaoSoapClient();
                                    retornows = soapCliente.MatricularAluno(
                                        userSelected.Nome,
                                        userSelected.CPF,
                                        userSelected.Email,
                                        userSelected.Cidade,
                                        mo.Oferta.SolucaoEducacional.IDChaveExterna.ToString(),
                                        mo.MatriculaTurma.FirstOrDefault().Turma.IDChaveExterna.ToString());
                                    break;

                                case (int)enumFornecedor.WebAula:
                                    Turma turma = mo.MatriculaTurma.FirstOrDefault().Turma;
                                    webaula.waIntegracaoSoapClient        wa  = new webaula.waIntegracaoSoapClient();
                                    webaula.AuthenticationProviderRequest aut = new webaula.AuthenticationProviderRequest();
                                    webaula.DTOUsuario dtoUsuario             = new webaula.DTOUsuario();
                                    webaula.DTOTurma   dtoTurma = new webaula.DTOTurma();
                                    dtoTurma.IDChaveExterna = turma.IDChaveExterna;
                                    dtoUsuario.CPF          = userSelected.CPF;
                                    dtoUsuario.Email        = userSelected.Email;
                                    dtoUsuario.Nome         = userSelected.Nome;
                                    dtoUsuario.Sexo         = userSelected.Sexo;
                                    dtoUsuario.UF           = userSelected.UF.Sigla;
                                    aut.Login = mo.Oferta.SolucaoEducacional.Fornecedor.Login;
                                    aut.Senha = CriptografiaHelper.Decriptografar(mo.Oferta.SolucaoEducacional.Fornecedor.Senha);
                                    retornows = wa.Matricular(aut, dtoUsuario, dtoTurma);
                                    break;
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            ErroUtil.Instancia.TratarErro(ex);
                        }
                    }

                    if (!string.IsNullOrEmpty(mo.Usuario.Email))
                    {
                        Template mensagemRecuperacaoDeSenhaSemConfirmacao = TemplateUtil.ObterInformacoes(enumTemplate.InscricaoSESucesso);
                        string   assuntoDoEmail = mensagemRecuperacaoDeSenhaSemConfirmacao.DescricaoTemplate.Substring(0, mensagemRecuperacaoDeSenhaSemConfirmacao.DescricaoTemplate.IndexOf(Environment.NewLine));

                        Dictionary <string, string> registros = new Dictionary <string, string>();
                        registros.Add("NOMESOLUCAOEDUCACIONAL", mo.Oferta.SolucaoEducacional.Nome);
                        registros.Add("DATASISTEMA", DateTime.Now.ToString("dd'/'MM'/'yyyy HH:mm"));
                        registros.Add("NOMEALUNO", mo.Usuario.Nome);
                        //Envia e-mail para o usuário
                        EmailUtil.Instancia.EnviarEmail(mo.Usuario.Email,
                                                        assuntoDoEmail,
                                                        this.FormatarTextoEmail(registros, mensagemRecuperacaoDeSenhaSemConfirmacao.DescricaoTemplate)
                                                        );
                    }

                    return;
                }
            }

            //Verificando se existe alguma matricula na SE.
            MatriculaOferta buscaMatricula = new MatriculaOferta();

            buscaMatricula.Usuario    = new Usuario();
            buscaMatricula.Usuario.ID = userSelected.ID;
            List <MatriculaOferta> possiveisMatriculas = new BMMatriculaOferta().ObterPorFiltro(buscaMatricula).ToList();

            if (possiveisMatriculas != null && possiveisMatriculas.Any(y => y.Oferta.SolucaoEducacional.ID == idSolucaoEducacional && !(y.StatusMatricula == enumStatusMatricula.CanceladoAdm || y.StatusMatricula == enumStatusMatricula.CanceladoAluno)))
            {
                throw new AcademicoException("Erro: O usuário já está matriculado em uma oferta desta Solução Educacional");
            }

            //VALIDAR SE O USUARIO POSSUI ACESSO A SE
            bool usuarioPossuiPermissao = new BMSolucaoEducacional().VerificarSeUsuarioPossuiPermissao(idUsuario, solucaoEducacional.ID); // .ObterListaUsuariosPermitidos();

            if (!usuarioPossuiPermissao)
            {
                throw new AcademicoException("Erro: O usuário Informado não possui permissão à Solução Educacional");
            }

            //VALIDAR SE O USUARIO ESTA CURSANDO OUTRA SE
            if (userSelected.ListaMatriculaOferta.Any(y => y.Usuario.ID == userSelected.ID && y.StatusMatricula == enumStatusMatricula.Inscrito))
            {
                throw new AcademicoException("Erro: O usuário já está inscrito em outra oferta.");
            }

            //VALIDAR SE O USUARIO ESTA COM ALGUM ABANDONO ATIVO
            if (new BMUsuarioAbandono().ValidarAbandonoAtivo(idUsuario))
            {
                throw new AcademicoException("Erro: Existe um abandono registrado para este usuário!");
            }


            Oferta oferta = new Oferta();

            oferta = solucaoEducacional.ListaOferta.FirstOrDefault(x => x.ID == idOferta);
            if (oferta == null)
            {
                throw new AcademicoException("Erro: Oferta não encontrada");
            }

            //VALIDADO OFERTA CONTINUA.
            if (oferta.TipoOferta.Equals(enumTipoOferta.Continua))
            {
                Turma t = null;
                if (oferta.SolucaoEducacional.Fornecedor.PermiteGestaoSGUS)
                {
                    t = oferta.ListaTurma.FirstOrDefault(x => x.DataFinal == null || x.DataFinal.Value.Date >= DateTime.Now.Date && x.InAberta);
                }

                int qtdInscritosNaOferta = oferta.ListaMatriculaOferta.Where(x => (x.StatusMatricula != enumStatusMatricula.CanceladoAdm &&
                                                                                   x.StatusMatricula != enumStatusMatricula.CanceladoAluno)).Count();
                MatriculaOferta matriculaOferta = new MatriculaOferta()
                {
                    Oferta          = new BMOferta().ObterPorId(oferta.ID),
                    Usuario         = new BMUsuario().ObterPorId(userSelected.ID),
                    Auditoria       = new Auditoria(autenticacao.Login),
                    DataSolicitacao = DateTime.Now,
                    UF = new BMUf().ObterPorId(userSelected.UF.ID),
                    NivelOcupacional = new BMNivelOcupacional().ObterPorID(userSelected.NivelOcupacional.ID)
                };

                if (qtdInscritosNaOferta >= oferta.QuantidadeMaximaInscricoes)
                {
                    if (oferta.FiladeEspera)
                    {
                        matriculaOferta.StatusMatricula = enumStatusMatricula.FilaEspera;
                    }
                    else
                    {
                        throw new AcademicoException("Erro: A quantidade máxima de alunos foi atingida");
                    }
                }
                else
                {
                    matriculaOferta.StatusMatricula = enumStatusMatricula.Inscrito;
                }

                qtdInscritosNaOferta++;

                if (t != null)
                {
                    MatriculaTurma matriculaTurma = new MatriculaTurma()
                    {
                        Turma           = new BMTurma().ObterPorID(t.ID),
                        Auditoria       = new Auditoria(autenticacao.Login),
                        DataMatricula   = DateTime.Now,
                        MatriculaOferta = matriculaOferta,
                        DataLimite      = DateTime.Today.AddDays(oferta.DiasPrazo)
                    };
                    if (matriculaOferta.MatriculaTurma == null)
                    {
                        matriculaOferta.MatriculaTurma = new List <MatriculaTurma>();
                    }
                    matriculaOferta.MatriculaTurma.Add(matriculaTurma);
                }

                moBM.Salvar(matriculaOferta);


                //validando se a turma já está chegando ao limite.
                if (qtdInscritosNaOferta > (oferta.QuantidadeMaximaInscricoes - int.Parse(ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.LimiteAlertaInscricaoOferta).Registro)))
                {
                    EnviarEmailLimiteOferta(oferta, matriculaOferta);
                }


                ValidarMetaIndividual(idUsuario, idSolucaoEducacional, pListaIdMetaIndividualAssociada, autenticacao);
                ValidarMetaInstitucional(idUsuario, idSolucaoEducacional, pListaIdMetaInstitucionalAssociada, autenticacao);

                try
                {
                    if (matriculaOferta.Oferta.TipoOferta.Equals(enumTipoOferta.Continua) && matriculaOferta.MatriculaTurma != null)
                    {
                        string retornows;
                        switch (matriculaOferta.Oferta.SolucaoEducacional.Fornecedor.ID)
                        {
                        case (int)enumFornecedor.MoodleSebrae:
                            moodle.IntegracaoSoapClient soapCliente = new moodle.IntegracaoSoapClient();
                            retornows = soapCliente.MatricularAluno(userSelected.Nome, userSelected.CPF, userSelected.Email, userSelected.Cidade, matriculaOferta.Oferta.SolucaoEducacional.IDChaveExterna.ToString(), matriculaOferta.MatriculaTurma.FirstOrDefault().Turma.IDChaveExterna.ToString());
                            break;

                        case (int)enumFornecedor.WebAula:
                            Turma turma = matriculaOferta.MatriculaTurma.FirstOrDefault().Turma;
                            webaula.waIntegracaoSoapClient        wa  = new webaula.waIntegracaoSoapClient();
                            webaula.AuthenticationProviderRequest aut = new webaula.AuthenticationProviderRequest();
                            webaula.DTOUsuario dtoUsuario             = new webaula.DTOUsuario();
                            webaula.DTOTurma   dtoTurma = new webaula.DTOTurma();
                            dtoTurma.IDChaveExterna = turma.IDChaveExterna;
                            dtoUsuario.CPF          = userSelected.CPF;
                            dtoUsuario.Email        = userSelected.Email;
                            dtoUsuario.Nome         = userSelected.Nome;
                            dtoUsuario.Sexo         = userSelected.Sexo;
                            dtoUsuario.UF           = userSelected.UF.Sigla;
                            aut.Login = matriculaOferta.Oferta.SolucaoEducacional.Fornecedor.Login;
                            aut.Senha = CriptografiaHelper.Decriptografar(matriculaOferta.Oferta.SolucaoEducacional.Fornecedor.Senha);
                            retornows = wa.Matricular(aut, dtoUsuario, dtoTurma);
                            break;
                        }
                    }
                }
                catch (Exception ex)
                {
                    ErroUtil.Instancia.TratarErro(ex);
                }
                return;
            }

            //VALIDANDO A OFETA NORMAL
            if (oferta.TipoOferta.Equals(enumTipoOferta.Normal))
            {
                int qtdInscritosNaOferta = oferta.ListaMatriculaOferta.Where(x => (x.StatusMatricula != enumStatusMatricula.CanceladoAdm &&
                                                                                   x.StatusMatricula != enumStatusMatricula.CanceladoAluno)).Count();
                MatriculaOferta matriculaOferta = new MatriculaOferta()
                {
                    Oferta          = new BMOferta().ObterPorId(oferta.ID),
                    Usuario         = new BMUsuario().ObterPorId(userSelected.ID),
                    Auditoria       = new Auditoria(autenticacao.Login),
                    DataSolicitacao = DateTime.Now,
                    UF = new BMUf().ObterPorId(userSelected.UF.ID),
                    NivelOcupacional = new BMNivelOcupacional().ObterPorID(userSelected.NivelOcupacional.ID)
                };

                if (qtdInscritosNaOferta >= oferta.QuantidadeMaximaInscricoes)
                {
                    if (oferta.FiladeEspera)
                    {
                        matriculaOferta.StatusMatricula = enumStatusMatricula.FilaEspera;
                    }
                    else
                    {
                        throw new AcademicoException("Erro: A quantidade máxima de alunos foi atingida");
                    }
                }
                else
                {
                    matriculaOferta.StatusMatricula = enumStatusMatricula.Inscrito;
                }


                BMMatriculaOferta bmMatriculaOferta = new BMMatriculaOferta();
                bmMatriculaOferta.Salvar(matriculaOferta);
                qtdInscritosNaOferta++;

                //validando se a turma já está chegando ao limite.
                if (qtdInscritosNaOferta > (oferta.QuantidadeMaximaInscricoes - int.Parse(ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.LimiteAlertaInscricaoOferta).Registro)))
                {
                    EnviarEmailLimiteOferta(oferta, matriculaOferta);
                }


                ValidarMetaIndividual(idUsuario, idSolucaoEducacional, pListaIdMetaIndividualAssociada, autenticacao);
                ValidarMetaInstitucional(idUsuario, idSolucaoEducacional, pListaIdMetaInstitucionalAssociada, autenticacao);
                return;
            }
            throw new Exception("Não foi encontrado ofertas para esse usuário!");
        }
Пример #29
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);
        }
Пример #30
0
        public JsonResult SavePreMatricula(int cmbPessoa_Value, string cmbResponsavel_Value, string txtGrauParentesco, string txtDataCancelamento, int cmbTurma_Value)
        {
            Matricula   matricula   = new Matricula();
            Aluno       aluno       = new Aluno();
            Responsavel responsavel = new Responsavel();

            Aluno alunoExistente = dbAluno.FindOne(x => x.idPessoa == cmbPessoa_Value);

            if (!String.IsNullOrEmpty(txtDataCancelamento))
            {
                matricula.dataCancelamento = Convert.ToDateTime(txtDataCancelamento);
            }

            if (!String.IsNullOrEmpty(cmbResponsavel_Value) && !String.IsNullOrEmpty(txtGrauParentesco))
            {
                responsavel.idPessoa       = Convert.ToInt32(cmbResponsavel_Value);
                responsavel.grauParentesco = txtGrauParentesco;
                aluno.Responsavel          = responsavel;
            }

            aluno.idPessoa         = cmbPessoa_Value;
            aluno.statusFinanceiro = 0;
            aluno.statusPedagogico = 0;

            matricula.numeroMatricula = 0;
            if (alunoExistente != null)
            {
                matricula.idAluno = alunoExistente.idAluno;
            }
            else
            {
                matricula.Aluno = aluno;
            }
            matricula.dataRegistro = DateTime.Now;
            matricula.tipo         = "prematricula";

            try
            {
                dbMatricula.Adicionar(matricula);
                dbMatricula.SaveChanges();

                Matricula matriculaExistente = dbMatricula.FindOne(x => x.idAluno == matricula.idAluno && x.numeroMatricula != 0);

                Matricula numMatricula = dbMatricula.FindOne(idM => idM.idMatricula == matricula.idMatricula);
                numMatricula.numeroMatricula = matriculaExistente != null ? matriculaExistente.numeroMatricula : numMatricula.idMatricula;

                dbMatricula.Atualizar(numMatricula);
                dbMatricula.SaveChanges();

                MatriculaTurma matriculaTurma = new MatriculaTurma();
                matriculaTurma.idMatricula = numMatricula.idMatricula;
                matriculaTurma.idTurma     = cmbTurma_Value;

                dbMatriculaTurma.Adicionar(matriculaTurma);
                dbMatriculaTurma.SaveChanges();

                return(Json(new { success = true }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                return(Json(new { success = false, message = e.Message }, JsonRequestBehavior.AllowGet));
            }
        }