/// <summary> /// Parâmetros para efetuar a alteração preservando a data de criação /// </summary> protected override void ParamAlterar(QueryStoredProcedure qs, ACA_Curriculo entity) { base.ParamAlterar(qs, entity); qs.Parameters["@crr_vigenciaInicio"].DbType = DbType.Date; qs.Parameters["@crr_vigenciaFim"].DbType = DbType.Date; qs.Parameters.RemoveAt("@crr_dataCriacao"); qs.Parameters["@crr_dataAlteracao"].Value = DateTime.Now; }
/// <summary> /// Verifica se o curso da turma possui avaliação do tipo seriado. /// </summary> /// <param name="entTurma">Entidade da turma.</param> /// <param name="EntFormatoAvaliacao">Entidade do formato de avaliação da turma.</param> /// <param name="banco">Transação.</param> /// <param name="entCurriculoPeriodo">Entidade do grupamento da turma (parâmatro de sáida)</param> /// <param name="Seriado">Flag que indica se o curso ~possui avaliação do tipo seriado (parâmatro de sáida)</param> /// <returns></returns> public static bool ValidaCursoSeriadoAvaliacao(TUR_Turma entTurma, ACA_FormatoAvaliacao EntFormatoAvaliacao, TalkDBTransaction banco, out ACA_CurriculoPeriodo entCurriculoPeriodo, out bool Seriado) { Seriado = false; List <TUR_TurmaCurriculo> listCurriculos = TUR_TurmaCurriculoBO.GetSelectBy_Turma(entTurma.tur_id, banco, GestaoEscolarUtilBO.MinutosCacheLongo); if (listCurriculos.Count == 0) { throw new Exception("A turma (tur_id: " + entTurma.tur_id + ") não possui nenhum curriculoPeriodo cadastrado."); } ACA_Curriculo entCurriculo = new ACA_Curriculo { cur_id = listCurriculos[0].cur_id , crr_id = listCurriculos[0].crr_id }; ACA_CurriculoBO.GetEntity(entCurriculo, banco); // Se curso for seriado por avaliações - EJA. if (entCurriculo.crr_regimeMatricula == (byte)ACA_CurriculoRegimeMatricula.SeriadoPorAvaliacoes) { Seriado = true; if ((EntFormatoAvaliacao.fav_tipo != (byte)ACA_FormatoAvaliacaoTipo.ConceitoGlobal) && (EntFormatoAvaliacao.fav_tipo != (byte)ACA_FormatoAvaliacaoTipo.GlobalDisciplina)) { // Curso do EJA não pode efetivar notas por disciplina - não possui ligação // com lançamento por disciplina. throw new ValidationException("O formato de avaliação \"" + EntFormatoAvaliacao.fav_nome + "\" deve ser do tipo \"Conceito global\" ou " + "\"Conceito global e nota por " + CustomResource.GetGlobalResourceObject("Mensagens", "MSG_DISCIPLINA") + "\", " + "pois o curso da turma é seriado por avaliações."); } } entCurriculoPeriodo = new ACA_CurriculoPeriodo { cur_id = entCurriculo.cur_id , crr_id = entCurriculo.crr_id , crp_id = listCurriculos[0].crp_id }; ACA_CurriculoPeriodoBO.GetEntity(entCurriculoPeriodo, banco); return(true); }
/// <summary> /// Seleciona o currículo pelo código do curso /// e carrega a entidade curriculo. /// </summary> /// <param name="ent_id">Id da entidade</param> /// <param name="cur_codigo">Código do curso</param> /// <param name="entityCurriculo">Entidade currículo</param> /// <returns></returns> public bool SelectBy_Curso_Codigo(Guid ent_id, string cur_codigo, out ACA_Curriculo entityCurriculo) { entityCurriculo = new ACA_Curriculo(); QuerySelectStoredProcedure qs = new QuerySelectStoredProcedure("NEW_ACA_Curriculo_SelectBy_Curso_Codigo", _Banco); try { #region PARAMETROS Param = qs.NewParameter(); Param.DbType = DbType.AnsiString; Param.ParameterName = "@cur_codigo"; Param.Size = 10; Param.Value = cur_codigo; qs.Parameters.Add(Param); Param = qs.NewParameter(); Param.DbType = DbType.Guid; Param.ParameterName = "@ent_id"; Param.Size = 16; Param.Value = ent_id; qs.Parameters.Add(Param); #endregion PARAMETROS qs.Execute(); if (qs.Return.Rows.Count == 1) { entityCurriculo = DataRowToEntity(qs.Return.Rows[0], entityCurriculo, false); return(true); } return(false); } catch { throw; } finally { qs.Parameters.Clear(); } }
/// <summary> /// Carrega o combo com os formatos de avaliação padrão ativo ou de um formato específico. /// Valida regras do curso /// </summary> /// <param name="fav_id">Id do formato de avaliação</param> /// <param name="cur_id">ID do curso</param> /// <param name="crr_id">ID do currículo</param> /// <param name="crp_id">ID do curriculoPeriodo</param> public void CarregarPorRegrasCurso (int fav_id, int cur_id, int crr_id, int crp_id, Nullable <bool> tur_docenteEspecialista) { try { ACA_Curriculo crr = new ACA_Curriculo { cur_id = cur_id, crr_id = crr_id }; ACA_CurriculoBO.GetEntity(crr); // Verifica se o curso tem regime de matrícula seriado por avaliações. if ((ACA_CurriculoRegimeMatricula)crr.crr_regimeMatricula == ACA_CurriculoRegimeMatricula.SeriadoPorAvaliacoes) { // Se curso seriado por avaliações, usa o outro método de carregar, para usar as regras específicas. CarregarPorRegrasCurso_SeriadoAvaliacoes(fav_id, crr.crr_qtdeAvaliacaoProgressao, cur_id, crr_id, crp_id, tur_docenteEspecialista); } else { ddlCombo.Items.Clear(); object lista; string doc_especialista = tur_docenteEspecialista == null ? string.Empty : tur_docenteEspecialista.ToString(); string chave = string.Format("FormatoAvaliacao_{0};{1};{2};{3};{4}", fav_id, cur_id, crr_id, crp_id, doc_especialista); object cache = Cache[chave]; if (cache == null) { // Carrega do banco para guardar em cache. DataTable dt = ACA_FormatoAvaliacaoBO.SelecionaPor_RegrasCurriculoPeriodo (fav_id, cur_id, crr_id, crp_id, tur_docenteEspecialista, __SessionWEB.__UsuarioWEB.Usuario.ent_id); lista = (from DataRow dr in dt.Rows select new { fav_nome = dr["fav_nome"].ToString() , fav_id = dr["fav_id"].ToString() }).ToList(); // Adiciona cache com validade de 1 hora. Cache.Insert(chave, lista, null, DateTime.Now.AddHours(1), System.Web.Caching.Cache.NoSlidingExpiration); } else { lista = cache; } ddlCombo.DataSource = lista; _MostrarMessageSelecione = true; ddlCombo.DataBind(); } } catch (Exception e) { // Grava o erro e mostra pro usuário. ApplicationWEB._GravaErro(e.InnerException); lblMessage.Text = "Erro ao tentar carregar " + lblTitulo.Text.Replace('*', ' ').ToLower() + "."; lblMessage.Visible = true; } }
/// <summary> /// Método alterado para que o update não faça a alteração da data de criação /// </summary> /// <param name="entity"> Entidade ACA_Curriculo</param> /// <returns>true = sucesso | false = fracasso</returns> protected override bool Alterar(ACA_Curriculo entity) { __STP_UPDATE = "NEW_ACA_Curriculo_Update"; return(base.Alterar(entity)); }
/// <summary> /// Validar idade do aluno de acordo com o CurriculoPeriodo no qual ele está inserido. /// Valida a idade máxima ideal + a amplitude do parâmetro acadêmico ou o valor informado /// no parâmetro amplitude. /// Valida a idade mínima ideal quando informado através da flag validarIdadeMinima - quando /// informada sempre valida usando a amplitudo passada por parâmetro na função. /// </summary> /// <param name="entity">Entidade AlunoCurriculo carregada</param> /// <param name="bancoGestao">Transação com banco Gestão - obrigatório</param> /// <param name="bancoCore">Transação com banco CoreSSO - opcional</param> /// <param name="validarIdadeMinima">Flag que indica se é pra validar idade mínima também</param> /// <param name="amplitude">Amplitude, se > 0, substitui a amplitude do parâmetro acadêmico</param> /// <param name="ent_id">Id da entidade do usuário logado.</param> /// <returns>Se idade válida</returns> internal static bool ValidarIdadeIdeal ( ACA_AlunoCurriculo entity , TalkDBTransaction bancoGestao , TalkDBTransaction bancoCore , bool validarIdadeMinima , int amplitude , Guid ent_id ) { ACA_Aluno entAluno = new ACA_Aluno { alu_id = entity.alu_id }; ACA_AlunoBO.GetEntity(entAluno, bancoGestao); if (entAluno.alu_situacao != Convert.ToByte(ACA_AlunoSituacao.Inativo)) { if (entity.alc_situacao == Convert.ToByte(ACA_AlunoCurriculoSituacao.Ativo) || entity.alc_situacao == Convert.ToByte(ACA_AlunoCurriculoSituacao.EmMatricula)) { ACA_CurriculoPeriodo entCurPer = new ACA_CurriculoPeriodo { cur_id = entity.cur_id, crr_id = entity.crr_id, crp_id = entity.crp_id }; ACA_CurriculoPeriodoBO.GetEntity(entCurPer, bancoGestao); PES_Pessoa entPessoa = new PES_Pessoa { pes_id = entAluno.pes_id }; if (bancoCore == null) { PES_PessoaBO.GetEntity(entPessoa); } else { PES_PessoaBO.GetEntity(entPessoa, bancoCore); } // Quantidade de meses da idade máxima da criança cadastrada no CurrPeriodo. int idadeMaxima = (entCurPer.crp_idadeIdealAnoFim * 12) + entCurPer.crp_idadeIdealMesFim; if (amplitude > 0) { idadeMaxima += amplitude; } else { int pac_valor = ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.AMPLITUDE_IDADE_ALERTA, ent_id); // Soma quantidade em meses do parâmetro de amplitude. idadeMaxima += (pac_valor > 0 ? (pac_valor * 12) : 0); } // Valida a quantidade de meses da idade da criança. int anos, meses, dias; GestaoEscolarUtilBO.CalculaAniversarioCompleto(DateTime.Now, entPessoa.pes_dataNascimento, out anos, out meses, out dias); int idade = (anos * 12) + meses; if (idade > idadeMaxima) { anos = idadeMaxima / 12; meses = idadeMaxima % 12; string sAnos = anos > 0 ? (anos + (anos > 1 ? " anos" : " ano")) : string.Empty; string sMeses = meses > 0 ? (anos > 0 ? " e " : "") + meses + (meses > 1 ? " meses" : " mês") : string.Empty; throw new ACA_Aluno_ValidationException("A idade do aluno não pode ser maior que " + sAnos + sMeses + "."); } ACA_Curriculo curso = ACA_CurriculoBO.GetEntity(new ACA_Curriculo { cur_id = entity.cur_id, crr_id = entity.crr_id }); if (validarIdadeMinima && curso.crr_regimeMatricula == 3 && ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.VALIDAR_IDADE_MINIMA_PEJA, ent_id)) { // Quantidade de meses da idade máxima da criança cadastrada no CurrPeriodo. int idadeMinima = (entCurPer.crp_idadeIdealAnoInicio * 12) + entCurPer.crp_idadeIdealMesInicio; idadeMinima -= amplitude; if (idade < idadeMinima) { anos = idadeMinima / 12; meses = idadeMinima % 12; string sAnos = anos > 0 ? (anos + (anos > 1 ? " anos" : " ano")) : string.Empty; string sMeses = meses > 0 ? (anos > 0 ? " e " : "") + meses + (meses > 1 ? " meses" : " mês") : string.Empty; throw new ACA_Aluno_ValidationException("A idade do aluno não pode ser menor que " + sAnos + sMeses + "."); } } } } return(true); }