_schema = "pmieducar."; $this->_tabela = "{$this->_schema}nota_aluno"; $this->_campos_lista = $this->_todos_campos = "cod_nota_aluno, ref_sequencial, ref_ref_cod_tipo_avaliacao, ref_cod_serie, ref_cod_escola, ref_cod_disciplina, ref_cod_matricula, ref_usuario_exc, ref_usuario_cad, data_cadastro, data_exclusao, ativo, modulo, ref_cod_curso_disciplina, nota"; if( is_numeric( $ref_usuario_exc ) ) { if( class_exists( "clsPmieducarUsuario" ) ) { $tmp_obj = new clsPmieducarUsuario( $ref_usuario_exc ); if( method_exists( $tmp_obj, "existe") ) { if( $tmp_obj->existe() ) { $this->ref_usuario_exc = $ref_usuario_exc; } } else if( method_exists( $tmp_obj, "detalhe") ) { if( $tmp_obj->detalhe() ) { $this->ref_usuario_exc = $ref_usuario_exc; } } } else { if( $db->CampoUnico( "SELECT 1 FROM pmieducar.usuario WHERE cod_usuario = '{$ref_usuario_exc}'" ) ) { $this->ref_usuario_exc = $ref_usuario_exc; } } } if( is_numeric( $ref_usuario_cad ) ) { if( class_exists( "clsPmieducarUsuario" ) ) { $tmp_obj = new clsPmieducarUsuario( $ref_usuario_cad ); if( method_exists( $tmp_obj, "existe") ) { if( $tmp_obj->existe() ) { $this->ref_usuario_cad = $ref_usuario_cad; } } else if( method_exists( $tmp_obj, "detalhe") ) { if( $tmp_obj->detalhe() ) { $this->ref_usuario_cad = $ref_usuario_cad; } } } else { if( $db->CampoUnico( "SELECT 1 FROM pmieducar.usuario WHERE cod_usuario = '{$ref_usuario_cad}'" ) ) { $this->ref_usuario_cad = $ref_usuario_cad; } } } if( is_numeric( $ref_ref_cod_tipo_avaliacao ) && is_numeric( $ref_sequencial ) ) { if( class_exists( "clsPmieducarTipoAvaliacaoValores" ) ) { $tmp_obj = new clsPmieducarTipoAvaliacaoValores( $ref_ref_cod_tipo_avaliacao, $ref_sequencial ); if( method_exists( $tmp_obj, "existe") ) { if( $tmp_obj->existe() ) { $this->ref_ref_cod_tipo_avaliacao = $ref_ref_cod_tipo_avaliacao; $this->ref_sequencial = $ref_sequencial; } } else if( method_exists( $tmp_obj, "detalhe") ) { if( $tmp_obj->detalhe() ) { $this->ref_ref_cod_tipo_avaliacao = $ref_ref_cod_tipo_avaliacao; $this->ref_sequencial = $ref_sequencial; } } } else { if( $db->CampoUnico( "SELECT 1 FROM pmieducar.tipo_avaliacao_valores WHERE ref_cod_tipo_avaliacao = '{$ref_ref_cod_tipo_avaliacao}' AND sequencial = '{$ref_sequencial}'" ) ) { $this->ref_ref_cod_tipo_avaliacao = $ref_ref_cod_tipo_avaliacao; $this->ref_sequencial = $ref_sequencial; } } } if( is_numeric( $ref_cod_matricula ) ) { if( class_exists( "clsPmieducarMatricula" ) ) { $tmp_obj = new clsPmieducarMatricula( $ref_cod_matricula ); if( method_exists( $tmp_obj, "existe") ) { if( $tmp_obj->existe() ) { $this->ref_cod_matricula = $ref_cod_matricula; } } else if( method_exists( $tmp_obj, "detalhe") ) { if( $tmp_obj->detalhe() ) { $this->ref_cod_matricula = $ref_cod_matricula; } } } else { if( $db->CampoUnico( "SELECT 1 FROM pmieducar.matricula WHERE cod_matricula = '{$ref_cod_matricula}'" ) ) { $this->ref_cod_matricula = $ref_cod_matricula; } } } if( is_numeric( $ref_cod_curso_disciplina ) ) { if( class_exists( "clsPmieducarDisciplina" ) ) { $tmp_obj = new clsPmieducarDisciplina( $ref_cod_curso_disciplina ); if( method_exists( $tmp_obj, "existe") ) { if( $tmp_obj->existe() ) { $this->ref_cod_curso_disciplina = $ref_cod_curso_disciplina; } } else if( method_exists( $tmp_obj, "detalhe") ) { if( $tmp_obj->detalhe() ) { $this->ref_cod_curso_disciplina = $ref_cod_curso_disciplina; } } } else { if( $db->CampoUnico( "SELECT 1 FROM pmieducar.disciplina WHERE cod_disciplina = '{$ref_cod_curso_disciplina}'" ) ) { $this->ref_cod_curso_disciplina = $ref_cod_curso_disciplina; } } } if( is_numeric( $ref_cod_disciplina ) && is_numeric( $ref_cod_escola ) && is_numeric( $ref_cod_serie ) ) { if( class_exists( "clsPmieducarEscolaSerieDisciplina" ) ) { $tmp_obj = new clsPmieducarEscolaSerieDisciplina( $ref_cod_serie, $ref_cod_escola, $ref_cod_disciplina ); if( method_exists( $tmp_obj, "existe") ) { if( $tmp_obj->existe() ) { $this->ref_cod_disciplina = $ref_cod_disciplina; $this->ref_cod_escola = $ref_cod_escola; $this->ref_cod_serie = $ref_cod_serie; } } else if( method_exists( $tmp_obj, "detalhe") ) { if( $tmp_obj->detalhe() ) { $this->ref_cod_disciplina = $ref_cod_disciplina; $this->ref_cod_escola = $ref_cod_escola; $this->ref_cod_serie = $ref_cod_serie; } } } else { if( $db->CampoUnico( "SELECT 1 FROM pmieducar.escola_serie_disciplina WHERE ref_cod_disciplina = '{$ref_cod_disciplina}' AND ref_cod_escola = '{$ref_cod_escola}' AND ref_cod_serie = '{$ref_cod_serie}'" ) ) { $this->ref_cod_disciplina = $ref_cod_disciplina; $this->ref_cod_escola = $ref_cod_escola; $this->ref_cod_serie = $ref_cod_serie; } } } if( is_numeric( $cod_nota_aluno ) ) { $this->cod_nota_aluno = $cod_nota_aluno; } if( is_string( $data_cadastro ) ) { $this->data_cadastro = $data_cadastro; } if( is_string( $data_exclusao ) ) { $this->data_exclusao = $data_exclusao; } if( is_numeric( $ativo ) ) { $this->ativo = $ativo; } if( is_numeric( $modulo ) ) { $this->modulo = $modulo; } if( is_numeric( $nota ) ) { $this->nota = $nota; } } /** * Cria um novo registro * * @return bool */ function cadastra() { // echo "is_numeric( {$this->ref_sequencial} ) && is_numeric( {$this->ref_ref_cod_tipo_avaliacao} ) && is_numeric( {$this->ref_cod_matricula} ) && is_numeric( {$this->ref_usuario_cad} ) && is_numeric( {$this->modulo} )
"; if ( is_numeric( $this->ref_cod_matricula ) && is_numeric( $this->ref_usuario_cad ) && is_numeric( $this->modulo ) ) { $db = new clsBanco(); $campos = ""; $valores = ""; $gruda = ""; if( is_numeric( $this->ref_sequencial ) ) { $campos .= "{$gruda}ref_sequencial"; $valores .= "{$gruda}'{$this->ref_sequencial}'"; $gruda = ", "; } if( is_numeric( $this->ref_ref_cod_tipo_avaliacao ) ) { $campos .= "{$gruda}ref_ref_cod_tipo_avaliacao"; $valores .= "{$gruda}'{$this->ref_ref_cod_tipo_avaliacao}'"; $gruda = ", "; } if( is_numeric( $this->ref_cod_serie ) ) { $campos .= "{$gruda}ref_cod_serie"; $valores .= "{$gruda}'{$this->ref_cod_serie}'"; $gruda = ", "; } if( is_numeric( $this->ref_cod_escola ) ) { $campos .= "{$gruda}ref_cod_escola"; $valores .= "{$gruda}'{$this->ref_cod_escola}'"; $gruda = ", "; } if( is_numeric( $this->ref_cod_disciplina ) ) { $campos .= "{$gruda}ref_cod_disciplina"; $valores .= "{$gruda}'{$this->ref_cod_disciplina}'"; $gruda = ", "; } if( is_numeric( $this->ref_cod_matricula ) ) { $campos .= "{$gruda}ref_cod_matricula"; $valores .= "{$gruda}'{$this->ref_cod_matricula}'"; $gruda = ", "; } if( is_numeric( $this->ref_usuario_cad ) ) { $campos .= "{$gruda}ref_usuario_cad"; $valores .= "{$gruda}'{$this->ref_usuario_cad}'"; $gruda = ", "; } if( is_numeric( $this->modulo ) ) { $campos .= "{$gruda}modulo"; $valores .= "{$gruda}'{$this->modulo}'"; $gruda = ", "; } if( is_numeric( $this->ref_cod_curso_disciplina ) ) { $campos .= "{$gruda}ref_cod_curso_disciplina"; $valores .= "{$gruda}'{$this->ref_cod_curso_disciplina}'"; $gruda = ", "; } if( is_numeric( $this->nota ) ) { $campos .= "{$gruda}nota"; $valores .= "{$gruda}'{$this->nota}'"; $gruda = ", "; } $campos .= "{$gruda}data_cadastro"; $valores .= "{$gruda}NOW()"; $gruda = ", "; $campos .= "{$gruda}ativo"; $valores .= "{$gruda}'1'"; $gruda = ", "; $db->Consulta( "INSERT INTO {$this->_tabela} ( $campos ) VALUES( $valores )" ); return $db->InsertId( "{$this->_tabela}_cod_nota_aluno_seq"); } return false; } /** * Edita os dados de um registro * * @return bool */ function edita() { if( is_numeric( $this->cod_nota_aluno ) && is_numeric( $this->ref_usuario_exc ) ) { $db = new clsBanco(); $set = ""; if( is_numeric( $this->ref_sequencial ) ) { $set .= "{$gruda}ref_sequencial = '{$this->ref_sequencial}'"; $gruda = ", "; } if( is_numeric( $this->ref_ref_cod_tipo_avaliacao ) ) { $set .= "{$gruda}ref_ref_cod_tipo_avaliacao = '{$this->ref_ref_cod_tipo_avaliacao}'"; $gruda = ", "; } if( is_numeric( $this->ref_cod_serie ) ) { $set .= "{$gruda}ref_cod_serie = '{$this->ref_cod_serie}'"; $gruda = ", "; } if( is_numeric( $this->ref_cod_escola ) ) { $set .= "{$gruda}ref_cod_escola = '{$this->ref_cod_escola}'"; $gruda = ", "; } if( is_numeric( $this->ref_cod_disciplina ) ) { $set .= "{$gruda}ref_cod_disciplina = '{$this->ref_cod_disciplina}'"; $gruda = ", "; } if( is_numeric( $this->ref_cod_matricula ) ) { $set .= "{$gruda}ref_cod_matricula = '{$this->ref_cod_matricula}'"; $gruda = ", "; } if( is_numeric( $this->ref_usuario_exc ) ) { $set .= "{$gruda}ref_usuario_exc = '{$this->ref_usuario_exc}'"; $gruda = ", "; } if( is_numeric( $this->ref_usuario_cad ) ) { $set .= "{$gruda}ref_usuario_cad = '{$this->ref_usuario_cad}'"; $gruda = ", "; } if( is_string( $this->data_cadastro ) ) { $set .= "{$gruda}data_cadastro = '{$this->data_cadastro}'"; $gruda = ", "; } $set .= "{$gruda}data_exclusao = NOW()"; $gruda = ", "; if( is_numeric( $this->ativo ) ) { $set .= "{$gruda}ativo = '{$this->ativo}'"; $gruda = ", "; } if( is_numeric( $this->modulo ) ) { $set .= "{$gruda}modulo = '{$this->modulo}'"; $gruda = ", "; } if( is_numeric( $this->ref_cod_curso_disciplina ) ) { $set .= "{$gruda}ref_cod_curso_disciplina = '{$this->ref_cod_curso_disciplina}'"; $gruda = ", "; } if( is_numeric( $this->nota ) ) { $set .= "{$gruda}nota = '{$this->nota}'"; $gruda = ", "; } if( $set ) { $db->Consulta( "UPDATE {$this->_tabela} SET $set WHERE cod_nota_aluno = '{$this->cod_nota_aluno}'" ); return true; } } return false; } /** * Retorna uma lista filtrados de acordo com os parametros * * @return array */ function lista( $int_cod_nota_aluno = null, $int_ref_sequencial = null, $int_ref_ref_cod_tipo_avaliacao = null, $int_ref_cod_serie = null, $int_ref_cod_escola = null, $int_ref_cod_disciplina = null, $int_ref_cod_matricula = null, $int_ref_usuario_exc = null, $int_ref_usuario_cad = null, $date_data_cadastro_ini = null, $date_data_cadastro_fim = null, $date_data_exclusao_ini = null, $date_data_exclusao_fim = null, $int_ativo = null, $int_modulo = null, $int_ref_cod_curso_disciplina = null, $int_nota = null) { $sql = "SELECT {$this->_campos_lista} FROM {$this->_tabela}"; $filtros = ""; $whereAnd = " WHERE "; if( is_numeric( $int_cod_nota_aluno ) ) { $filtros .= "{$whereAnd} cod_nota_aluno = '{$int_cod_nota_aluno}'"; $whereAnd = " AND "; } if( is_numeric( $int_ref_sequencial ) ) { $filtros .= "{$whereAnd} ref_sequencial = '{$int_ref_sequencial}'"; $whereAnd = " AND "; } if( is_numeric( $int_ref_ref_cod_tipo_avaliacao ) ) { $filtros .= "{$whereAnd} ref_ref_cod_tipo_avaliacao = '{$int_ref_ref_cod_tipo_avaliacao}'"; $whereAnd = " AND "; } if( is_numeric( $int_ref_cod_serie ) ) { $filtros .= "{$whereAnd} ref_cod_serie = '{$int_ref_cod_serie}'"; $whereAnd = " AND "; } if( is_numeric( $int_ref_cod_escola ) ) { $filtros .= "{$whereAnd} ref_cod_escola = '{$int_ref_cod_escola}'"; $whereAnd = " AND "; } if( is_numeric( $int_ref_cod_disciplina ) ) { $filtros .= "{$whereAnd} ref_cod_disciplina = '{$int_ref_cod_disciplina}'"; $whereAnd = " AND "; } if( is_numeric( $int_ref_cod_matricula ) ) { $filtros .= "{$whereAnd} ref_cod_matricula = '{$int_ref_cod_matricula}'"; $whereAnd = " AND "; } if( is_numeric( $int_ref_usuario_exc ) ) { $filtros .= "{$whereAnd} ref_usuario_exc = '{$int_ref_usuario_exc}'"; $whereAnd = " AND "; } if( is_numeric( $int_ref_usuario_cad ) ) { $filtros .= "{$whereAnd} ref_usuario_cad = '{$int_ref_usuario_cad}'"; $whereAnd = " AND "; } if( is_string( $date_data_cadastro_ini ) ) { $filtros .= "{$whereAnd} data_cadastro >= '{$date_data_cadastro_ini}'"; $whereAnd = " AND "; } if( is_string( $date_data_cadastro_fim ) ) { $filtros .= "{$whereAnd} data_cadastro <= '{$date_data_cadastro_fim}'"; $whereAnd = " AND "; } if( is_string( $date_data_exclusao_ini ) ) { $filtros .= "{$whereAnd} data_exclusao >= '{$date_data_exclusao_ini}'"; $whereAnd = " AND "; } if( is_string( $date_data_exclusao_fim ) ) { $filtros .= "{$whereAnd} data_exclusao <= '{$date_data_exclusao_fim}'"; $whereAnd = " AND "; } if( is_null( $int_ativo ) || $int_ativo ) { $filtros .= "{$whereAnd} ativo = '1'"; $whereAnd = " AND "; } else { $filtros .= "{$whereAnd} ativo = '0'"; $whereAnd = " AND "; } if( is_numeric( $int_modulo ) ) { $filtros .= "{$whereAnd} modulo = '{$int_modulo}'"; $whereAnd = " AND "; } if( is_numeric( $int_ref_cod_curso_disciplina ) ) { $filtros .= "{$whereAnd} ref_cod_curso_disciplina = '{$int_ref_cod_curso_disciplina}'"; $whereAnd = " AND "; } if( is_numeric( $int_nota ) ) { $filtros .= "{$whereAnd} nota = '{$int_nota}'"; $whereAnd = " AND "; } $db = new clsBanco(); $countCampos = count( explode( ",", $this->_campos_lista ) ); $resultado = array(); $sql .= $filtros . $this->getOrderby() . $this->getLimite(); $this->_total = $db->CampoUnico( "SELECT COUNT(0) FROM {$this->_tabela} {$filtros}" ); // echo ""; $db->Consulta( $sql ); if( $countCampos > 1 ) { while ( $db->ProximoRegistro() ) { $tupla = $db->Tupla(); $tupla["_total"] = $this->_total; $resultado[] = $tupla; } } else { while ( $db->ProximoRegistro() ) { $tupla = $db->Tupla(); $resultado[] = $tupla[$this->_campos_lista]; } } if( count( $resultado ) ) { return $resultado; } return false; } /** * Retorna um array com os dados de um registro * * @return array */ function detalhe() { if( is_numeric( $this->cod_nota_aluno ) ) { $db = new clsBanco(); $db->Consulta( "SELECT {$this->_todos_campos} FROM {$this->_tabela} WHERE cod_nota_aluno = '{$this->cod_nota_aluno}'" ); $db->ProximoRegistro(); return $db->Tupla(); } return false; } /** * Retorna um array com os dados de um registro * * @return array */ function existe() { if( is_numeric( $this->cod_nota_aluno ) ) { $db = new clsBanco(); $db->Consulta( "SELECT 1 FROM {$this->_tabela} WHERE cod_nota_aluno = '{$this->cod_nota_aluno}'" ); $db->ProximoRegistro(); return $db->Tupla(); } return false; } /** * Exclui um registro * * @return bool */ function excluir() { if( is_numeric( $this->cod_nota_aluno ) && is_numeric( $this->ref_usuario_exc ) ) { /* delete $db = new clsBanco(); $db->Consulta( "DELETE FROM {$this->_tabela} WHERE cod_nota_aluno = '{$this->cod_nota_aluno}'" ); return true; */ $this->ativo = 0; return $this->edita(); } return false; } /** * Define quais campos da tabela serao selecionados na invocacao do metodo lista * * @return null */ function setCamposLista( $str_campos ) { $this->_campos_lista = $str_campos; } /** * Define que o metodo Lista devera retornoar todos os campos da tabela * * @return null */ function resetCamposLista() { $this->_campos_lista = $this->_todos_campos; } /** * Define limites de retorno para o metodo lista * * @return null */ function setLimite( $intLimiteQtd, $intLimiteOffset = null ) { $this->_limite_quantidade = $intLimiteQtd; $this->_limite_offset = $intLimiteOffset; } /** * Retorna a string com o trecho da query resposavel pelo Limite de registros * * @return string */ function getLimite() { if( is_numeric( $this->_limite_quantidade ) ) { $retorno = " LIMIT {$this->_limite_quantidade}"; if( is_numeric( $this->_limite_offset ) ) { $retorno .= " OFFSET {$this->_limite_offset} "; } return $retorno; } return ""; } /** * Define campo para ser utilizado como ordenacao no metolo lista * * @return null */ function setOrderby( $strNomeCampo ) { // limpa a string de possiveis erros (delete, insert, etc) //$strNomeCampo = eregi_replace(); if( is_string( $strNomeCampo ) && $strNomeCampo ) { $this->_campo_order_by = $strNomeCampo; } } /** * Retorna a string com o trecho da query resposavel pela Ordenacao dos registros * * @return string */ function getOrderby() { if( is_string( $this->_campo_order_by ) ) { return " ORDER BY {$this->_campo_order_by} "; } return ""; } /** * calcula a média do aluno $cod_matricula na disciplina $cod_disciplina * * @param int $cod_matricula * @param int $cod_disciplina * @param int $qtd_modulos * @param float $media_sem_exame caso a media das notas esteja abaixo da media nao realiza arredondamento da media * @param float $media_com_exame caso a nota seja de exame deve ser informado true para que esta nota seja multiplicada por 2 conforme regras da instituicao * * @return float */ function getMediaAluno($cod_matricula,$cod_disciplina,$cod_serie,$qtd_modulos,$media_sem_exame = false,$media_com_exame = false) { if( is_numeric($cod_matricula) && is_numeric($cod_disciplina) && is_numeric($qtd_modulos) && $qtd_modulos && is_numeric($cod_serie) && $cod_serie ) { $db = new clsBanco(); /** * para calcular a nota do exame, * esta nota e multiplicada por 2 * e dividido pela quantidade de * modulos da materia.. esta media * pode ser arredondada */ $nota_exame = 0; if($media_com_exame) { /** * diminui em 1 o numero de modulos para * o calculo do exame, uma vez que a nota do * exame eh multiplicada por 2 ex: 4 modulos + 1 exame => 5 + 5.5 + 6 + 7 + (4 * 2) / 5 = nota exame */ $nota_exame = $db->CampoUnico(" SELECT tav.valor * 2 FROM pmieducar.nota_aluno na , pmieducar.tipo_avaliacao_valores tav WHERE na.ref_cod_matricula = '{$cod_matricula}' AND na.ref_cod_disciplina = '{$cod_disciplina}' AND na.ref_cod_serie = '{$cod_serie}' AND na.ativo = 1 AND tav.ref_cod_tipo_avaliacao = na.ref_ref_cod_tipo_avaliacao AND tav.sequencial = na.ref_sequencial AND na.modulo = '{$qtd_modulos}' "); /** * diminiu em um no numero de modulos * jah que a nota do exame eh multiplicada * por 2 entao esta nota sera somada com as restantes * e o calculo prossegue normalmente */ $qtd_modulos_sem_exame = $qtd_modulos -1; } else { $qtd_modulos_sem_exame = $qtd_modulos; } $soma = $db->CampoUnico(" SELECT SUM( tav.valor ) FROM pmieducar.nota_aluno na , pmieducar.tipo_avaliacao_valores tav WHERE na.ref_cod_matricula = '{$cod_matricula}' AND na.ref_cod_disciplina = '{$cod_disciplina}' AND na.ref_cod_serie = '{$cod_serie}' AND na.ativo = 1 AND tav.ref_cod_tipo_avaliacao = na.ref_ref_cod_tipo_avaliacao AND tav.sequencial = na.ref_sequencial AND na.modulo <= '{$qtd_modulos_sem_exame}' GROUP BY ref_cod_disciplina "); /** * notas + nota exame */ if($media_com_exame) { $soma += $nota_exame; } if( $soma !== false ) { $tipo_avaliacao = $db->CampoUnico("SELECT ref_ref_cod_tipo_avaliacao FROM pmieducar.nota_aluno WHERE ref_cod_matricula = '{$cod_matricula}' AND ref_ref_cod_tipo_avaliacao IS NOT NULL LIMIT 1"); if ($media_com_exame) { $media = $soma / ($qtd_modulos+1); } else { $media = $soma / $qtd_modulos; } /** * @author Haissam * @see 15-12-2006 * quando for dar as notas e for calcular a ultima * ao fazer a media e essa nota estiver abaixo nao * pode ser feito o arredondamento, somente se estiver * acima da media deixando o aluno em exame */ if($media_sem_exame && !$media_com_exame/*nota com exame pode ser arredondada*/ ) { if($media < $media_sem_exame) return $media; } $objTipoAvaliacaoValores = new clsPmieducarTipoAvaliacaoValores(); $objTipoAvaliacaoValores->setLimite(1); $objTipoAvaliacaoValores->setOrderby("valor DESC"); $lista = $objTipoAvaliacaoValores->lista($tipo_avaliacao,null,null,null,$media,$media); if(is_array($lista)) { foreach ($lista AS $valor) { return $valor["valor"]; } } } } return false; } function getMediaAlunoExame($cod_matricula,$cod_disciplina,$cod_serie,$qtd_modulos) { if (is_numeric($cod_matricula) && is_numeric($cod_disciplina) && is_numeric($cod_serie) && is_numeric($qtd_modulos)) { $sqlNotas = "SELECT SUM( tav.valor ) FROM pmieducar.nota_aluno na , pmieducar.tipo_avaliacao_valores tav WHERE na.ref_cod_matricula = '{$cod_matricula}' AND na.ref_cod_disciplina = '{$cod_disciplina}' AND na.ref_cod_serie = '{$cod_serie}' AND na.ativo = 1 AND tav.ref_cod_tipo_avaliacao = na.ref_ref_cod_tipo_avaliacao AND tav.sequencial = na.ref_sequencial AND na.modulo <= {$qtd_modulos}"; $sqlExame = "SELECT na.nota * 2 FROM pmieducar.nota_aluno na WHERE na.ref_cod_matricula = '{$cod_matricula}' AND na.ref_cod_disciplina = '{$cod_disciplina}' AND na.ref_cod_serie = '{$cod_serie}' AND na.ativo = 1 AND na.modulo = {$qtd_modulos} + 1"; $db = new clsBanco(); $somaNotas = $db->CampoUnico($sqlNotas); $notaExame = $db->CampoUnico($sqlExame); $media = ($somaNotas + $notaExame)/($qtd_modulos+2); $tipo_avaliacao = $db->CampoUnico("SELECT ref_ref_cod_tipo_avaliacao FROM pmieducar.nota_aluno WHERE ref_cod_matricula = '{$cod_matricula}' AND ref_ref_cod_tipo_avaliacao IS NOT NULL ORDER BY modulo LIMIT 1"); if (is_numeric($tipo_avaliacao)) { $objTipoAvaliacaoValores = new clsPmieducarTipoAvaliacaoValores(); $objTipoAvaliacaoValores->setLimite(1); $objTipoAvaliacaoValores->setOrderby("valor DESC"); $lista = $objTipoAvaliacaoValores->lista($tipo_avaliacao,null,null,null,$media,$media); $lista = array_shift($lista); return $lista["valor"]; } } return false; } /** * calcula a média especial do aluno $cod_matricula na disciplina $cod_disciplina * calculo = (quantidade de disciplinas acima da media / quantidades de disciplinas) * 10 ) tem que ser maior que a media * se for maior o aluno esta aprovado * @param int $cod_matricula * @param int $cod_disciplina * * @return boolean */ function getMediaEspecialAluno($cod_matricula,$cod_serie,$cod_escola,$qtd_modulos,$media_curso_sem_exame) { if( is_numeric($cod_matricula) && is_numeric($cod_escola) && $cod_escola && is_numeric($qtd_modulos) && $qtd_modulos && is_numeric($cod_serie) && $cod_serie && is_numeric($media_curso_sem_exame) ) { $db = new clsBanco(); $objEscolaSerieDisciplina = new clsPmieducarEscolaSerieDisciplina(); $listaEscolaSerieDisciplina = $objEscolaSerieDisciplina->lista($cod_serie,$cod_escola,null,1); $disciplinas_acima_media = 0; $total_disciplinas = count($listaEscolaSerieDisciplina); if($listaEscolaSerieDisciplina) { foreach ($listaEscolaSerieDisciplina as $key => $disciplina) { $objNotaAluno = new clsPmieducarNotaAluno(); $media = $objNotaAluno->getMediaAluno($cod_matricula,$disciplina["ref_cod_disciplina"],$disciplina["ref_ref_cod_serie"],$qtd_modulos); if( $media >= $media_curso_sem_exame ) { //media acima da media incrementa o numero de disciplinas acima da media $disciplinas_acima_media++; } } $media_final = ($disciplinas_acima_media / $total_disciplinas) * 10; $tipo_avaliacao = $db->CampoUnico("SELECT ref_ref_cod_tipo_avaliacao FROM pmieducar.nota_aluno WHERE ref_cod_matricula = '{$cod_matricula}' LIMIT 1"); $objTipoAvaliacaoValores = new clsPmieducarTipoAvaliacaoValores(); $objTipoAvaliacaoValores->setLimite(1); $objTipoAvaliacaoValores->setOrderby("valor DESC"); if($media_final) { $lista = $objTipoAvaliacaoValores->lista($tipo_avaliacao,null,null,null,$media_final,$media_final); if(is_array($lista)) { foreach ($lista AS $valor) { return $valor["valor"]; } } } return false; } return false; } } /** * retorna a quantidade de disciplinas que a matricula $cod_matricula pegou exame * * @param int $cod_matricula * @param int $qtd_modulos_normais * @param float $media * * return int * */ function getQtdMateriasExame($cod_matricula,$qtd_modulos_normais,$media, $nao_arredondar_nota = false) { $exames = 0; if( is_numeric($cod_matricula) && is_numeric($qtd_modulos_normais) && is_numeric($media) ) { $medias = $this->getMediasAluno($cod_matricula,$qtd_modulos_normais, $nao_arredondar_nota); if( is_array($medias) ) { foreach ($medias as $value) { if( $value["media"] < $media ) { $exames++; } } } } return $exames; } /** * retorna a quantidade de disciplinas que a matricula $cod_matricula ja recebeu nota no exame * * @param int $cod_matricula * @param int $qtd_modulos_normais * * return int * */ function getQtdNotasExame($cod_matricula,$qtd_modulos_normais) { $db = new clsBanco(); return $db->CampoUnico("SELECT COUNT(0) FROM pmieducar.nota_aluno WHERE ref_cod_matricula = '{$cod_matricula}' AND ativo = 1 AND modulo > '{$qtd_modulos_normais}'"); } /** * calcula as médias do aluno $cod_matricula em todas as disciplinas, encontra * os que estão abaixo da média ($media) e retorna as disciplinas * * @param int $cod_matricula * @param int $qtd_modulos * @param int $media * * @return array */ function getDisciplinasExameDoAluno($cod_matricula,$qtd_modulos_normais,$media,$nao_arredondar_nota = false) { $exames = array(); if( is_numeric($cod_matricula) && is_numeric($qtd_modulos_normais) && is_numeric($media) ) { $medias = $this->getMediasAluno($cod_matricula,$qtd_modulos_normais,$arredondar_nota); if( is_array($medias) ) { foreach ($medias as $value) { if( $value["media"] < $media ) { $exames[] = array( "cod_disciplina" => $value["cod_disciplina"], "cod_serie" => $value["cod_serie"] ); } } } } return $exames; } /** * calcula as médias do aluno $cod_matricula em todas as disciplinas * * @param int $cod_matricula * @param int $qtd_modulos * * @return array */ function getMediasAluno($cod_matricula,$qtd_modulos, $nao_arredondar_nota = false) { $retorno = array(); if( is_numeric($cod_matricula) && is_numeric($qtd_modulos) && $qtd_modulos ) { $i = 0; $db = new clsBanco(); $db2 = new clsBanco(); $db->Consulta(" SELECT na.ref_cod_disciplina, na.ref_cod_serie, SUM( tav.valor ) FROM pmieducar.nota_aluno na , pmieducar.tipo_avaliacao_valores tav WHERE na.ref_cod_matricula = '{$cod_matricula}' AND na.ativo = 1 AND tav.ref_cod_tipo_avaliacao = na.ref_ref_cod_tipo_avaliacao AND tav.sequencial = na.ref_sequencial AND na.modulo <= '{$qtd_modulos}' GROUP BY ref_cod_disciplina, ref_cod_serie "); while ($db->ProximoRegistro()) { list($cod_disciplina,$cod_serie,$soma) = $db->Tupla(); $retorno[$i]["cod_disciplina"] = $cod_disciplina; $retorno[$i]["cod_serie"] = $cod_serie; $tipo_avaliacao = $db2->CampoUnico("SELECT ref_ref_cod_tipo_avaliacao FROM pmieducar.nota_aluno WHERE ref_cod_matricula = '{$cod_matricula}' AND ref_ref_cod_tipo_avaliacao IS NOT NULL LIMIT 1"); $media = $soma / $qtd_modulos; if (!$nao_arredondar_nota) { $objTipoAvaliacaoValores = new clsPmieducarTipoAvaliacaoValores(); $objTipoAvaliacaoValores->setLimite(1); $objTipoAvaliacaoValores->setOrderby("valor DESC"); $lista = $objTipoAvaliacaoValores->lista($tipo_avaliacao,null,null,null,$media,$media); foreach ($lista AS $valor) { $media_valor = $valor["valor"]; } } else { $media_valor = $media; } $retorno[$i]["media"] = $media_valor; $i++; } } return $retorno; } /** * calcula as médias dos alunos da turma $cod_turma em todas as disciplinas, encontra * os que estão abaixo da média ($media) e retorna as matriculas * * @param int $cod_turma * @param int $qtd_modulos * @param int $media * * @return array */ function getAlunosExame($cod_turma,$qtd_modulos,$media,$ref_cod_disciplina = null) { $retorno = array(); if( is_numeric($cod_turma) && is_numeric($qtd_modulos) && $qtd_modulos ) { if(is_numeric($ref_cod_disciplina)) { $disciplina_exame = " AND na.ref_cod_disciplina = '{$ref_cod_disciplina}' "; } $db = new clsBanco(); $db->Consulta(" SELECT ref_cod_matricula, ref_cod_disciplina, total_notas FROM ( SELECT na.ref_cod_matricula , na.ref_cod_disciplina , SUM( tav.valor ) AS total_notas , COUNT(0) AS qtd_modulos , ( SELECT me.permite_exame FROM pmieducar.matricula_excessao me WHERE me.ref_cod_matricula = na.ref_cod_matricula AND me.ref_cod_disciplina = na.ref_cod_disciplina) AS permite_exame FROM pmieducar.nota_aluno na , pmieducar.tipo_avaliacao_valores tav , pmieducar.v_matricula_matricula_turma mmt WHERE na.ref_cod_matricula = mmt.cod_matricula AND mmt.ref_cod_turma = '{$cod_turma}' AND na.ativo = 1 AND mmt.ativo = 1 AND mmt.aprovado = 3 AND tav.ref_cod_tipo_avaliacao = na.ref_ref_cod_tipo_avaliacao AND tav.sequencial = na.ref_sequencial $disciplina_exame GROUP BY na.ref_cod_disciplina, na.ref_cod_matricula ) AS sub WHERE qtd_modulos = '{$qtd_modulos}' AND ( permite_exame = TRUE OR permite_exame IS NULL ) "); while ($db->ProximoRegistro()) { list($cod_matricula,$cod_disciplina,$soma) = $db->Tupla(); if( ! isset($retorno[$cod_matricula]) ) { if( $soma / $qtd_modulos < $media ) { $retorno[$cod_matricula] = $cod_matricula; } } } } return $retorno; } /** * calcula as médias dos alunos da turma $cod_turma em todas as disciplinas, encontra * os que estão abaixo da média ($media) e retorna as disciplinas * * @param int $cod_turma * @param int $qtd_modulos * @param int $media * * @return array */ function getDisciplinasExame($cod_turma,$qtd_modulos,$media,$verifica_aluno_possui_nota=false) { $retorno = array(); if( is_numeric($cod_turma) && is_numeric($qtd_modulos) && $qtd_modulos ) { $db = new clsBanco(); $db->Consulta(" SELECT ref_cod_matricula, ref_cod_disciplina, soma, ref_cod_serie FROM ( SELECT na.ref_cod_matricula , na.ref_cod_disciplina , SUM( tav.valor ) AS soma , na.ref_cod_serie , COUNT(tav.valor) AS qtd_notas , ( SELECT me.permite_exame FROM pmieducar.matricula_excessao me WHERE me.ref_cod_matricula = na.ref_cod_matricula AND me.ref_cod_disciplina = na.ref_cod_disciplina) AS permite_exame FROM pmieducar.nota_aluno na , pmieducar.tipo_avaliacao_valores tav , pmieducar.v_matricula_matricula_turma mmt WHERE na.ref_cod_matricula = mmt.cod_matricula AND mmt.ref_cod_turma = '{$cod_turma}' AND na.ativo = 1 AND mmt.ativo = 1 AND mmt.aprovado = 3 AND tav.ref_cod_tipo_avaliacao = na.ref_ref_cod_tipo_avaliacao AND tav.sequencial = na.ref_sequencial GROUP BY na.ref_cod_disciplina, na.ref_cod_matricula, na.ref_cod_serie ) AS sub1 WHERE qtd_notas = '{$qtd_modulos}' AND ( permite_exame = TRUE OR permite_exame IS NULL ) "); while ($db->ProximoRegistro()) { list($cod_matricula,$cod_disciplina,$soma,$cod_serie) = $db->Tupla(); if( ! isset($retorno["{$cod_serie}_{$cod_disciplina}"]) ) { if ($verifica_aluno_possui_nota) { $obj_nota_aluno = new clsPmieducarNotaAluno(); $lst_nota_aluno = $obj_nota_aluno->lista(null, null, null, null, null, $cod_disciplina, $cod_matricula, null, null, null, null, null, null, 1, $qtd_modulos+1); if (!$lst_nota_aluno) { if( $soma / $qtd_modulos < $media ) { $retorno["{$cod_serie}_{$cod_disciplina}"] = array("cod_serie" => $cod_serie, "cod_disciplina" => $cod_disciplina ); } } } else { if( $soma / $qtd_modulos < $media ) { $retorno["{$cod_serie}_{$cod_disciplina}"] = array("cod_serie" => $cod_serie, "cod_disciplina" => $cod_disciplina ); } } } } } return $retorno; } /** * calcula as médias dos alunos da turma $cod_turma em uma disciplina especifica $cod_disciplina, encontra * os que estão abaixo da média ($media) e retorna as matriculas * * @param int $cod_turma * @param int $cod_disciplina * @param int $qtd_modulos * @param int $media * * @return array */ function getAlunosDisciplinaExame($cod_turma,$cod_disciplina,$qtd_modulos,$media) { $retorno = array(); if( is_numeric($cod_turma) && is_numeric($qtd_modulos) && $qtd_modulos ) { $db = new clsBanco(); $db->Consulta(" SELECT ref_cod_matricula, soma FROM ( SELECT na.ref_cod_matricula , SUM( tav.valor ) AS soma , COUNT(tav.valor) AS qtd_notas , ( SELECT me.permite_exame FROM pmieducar.matricula_excessao me WHERE me.ref_cod_matricula = na.ref_cod_matricula AND me.ref_cod_disciplina = na.ref_cod_disciplina) AS permite_exame FROM pmieducar.nota_aluno na , pmieducar.tipo_avaliacao_valores tav , pmieducar.v_matricula_matricula_turma mmt WHERE na.ref_cod_matricula = mmt.cod_matricula AND na.ref_cod_disciplina = '{$cod_disciplina}' AND mmt.ref_cod_turma = '{$cod_turma}' AND na.ativo = 1 AND mmt.ativo = 1 AND mmt.aprovado = 3 AND tav.ref_cod_tipo_avaliacao = na.ref_ref_cod_tipo_avaliacao AND tav.sequencial = na.ref_sequencial GROUP BY na.ref_cod_matricula ) AS sub1 WHERE qtd_notas = '{$qtd_modulos}' AND ( permite_exame = TRUE OR permite_exame IS NULL ) "); while ($db->ProximoRegistro()) { list($cod_matricula,$soma) = $db->Tupla(); if( ! isset($retorno[$cod_matricula]) ) { if( $soma / $qtd_modulos < $media ) { $retorno[$cod_matricula] = $cod_matricula; } } } } return $retorno; } /** * Funcao com nome comprido e escrotissimo pra poder dizer o que ela faz... * retorna quantas notas a matricula $cod_matricula ainda vai receber em disciplinas que apuram falta, no modulo $modulo * * @param int $cod_matricula * @param int $cod_serie * @param int $cod_turma * @param int $modulo * * @return int * */ function getQtdRestanteNotasAlunoNaoApuraFaltas($cod_matricula,$cod_serie,$cod_turma,$modulo,$ref_cod_escola) { if( is_numeric($cod_matricula) ) { $db = new clsBanco(); /*$total = $db->CampoUnico(" SELECT COUNT(0) FROM pmieducar.disciplina_serie ds, pmieducar.disciplina d WHERE ref_cod_serie = '{$cod_serie}' AND d.ativo = 1 AND ds.ativo = 1 AND d.cod_disciplina = ds.ref_cod_disciplina ");*/ $total = $db->CampoUnico(" SELECT COUNT(0) FROM pmieducar.escola_serie_disciplina ds, pmieducar.disciplina d WHERE ref_ref_cod_serie = '{$cod_serie}' AND ref_ref_cod_escola = '{$ref_cod_escola}' AND d.ativo = 1 AND ds.ativo = 1 AND d.cod_disciplina = ds.ref_cod_disciplina "); // echo "SELECT COUNT(0) // FROM pmieducar.escola_serie_disciplina ds, // pmieducar.disciplina d // WHERE ref_ref_cod_serie = '{$cod_serie}' // AND ref_ref_cod_escola = '{$ref_cod_escola}' // AND d.ativo = 1 // AND ds.ativo = 1 // AND d.cod_disciplina = ds.ref_cod_disciplina


"; // AND d.apura_falta = 1 /** * para faltas globalizada considerar todas as disciplinas */ //AND d.apura_falta = 1 // uma lista de disciplinas que apuram falta // exclui dessa lista todas as que o aluno ja recebeu nota nesse modulo $ja_recebidas = $db->CampoUnico(" SELECT COUNT(0) FROM pmieducar.nota_aluno na , pmieducar.disciplina d , pmieducar.v_matricula_matricula_turma mmt WHERE na.ref_cod_matricula = '{$cod_matricula}' AND na.ref_cod_matricula = mmt.cod_matricula AND mmt.ref_cod_turma = '{$cod_turma}' AND na.ativo = 1 AND mmt.ativo = 1 AND na.ref_cod_disciplina = d.cod_disciplina AND na.ref_cod_serie = '{$cod_serie}' AND na.modulo = '{$modulo}' "); // die("SELECT COUNT(0) // FROM pmieducar.nota_aluno na // , pmieducar.disciplina d // , pmieducar.v_matricula_matricula_turma mmt // WHERE na.ref_cod_matricula = '{$cod_matricula}' // AND na.ref_cod_matricula = mmt.cod_matricula // AND mmt.ref_cod_turma = '{$cod_turma}' // AND na.ativo = 1 // AND mmt.ativo = 1 // AND na.ref_cod_disciplina = d.cod_disciplina // AND na.ref_cod_serie = '{$cod_serie}' // AND na.modulo = '{$modulo}'"); // AND mmt.aprovado = 3 //AND d.apura_falta = 1 //retorna a qtd restante return $total - $ja_recebidas; } return false; } /* coisas do nagasava que ficaram aqui pq podem estar sendo usadas em algum lugar */ /** * Retorna uma variável com o resultado * * @return int */ function retornaDiscMod( $int_ref_ref_cod_serie = null, $int_ref_ref_cod_escola = null, $int_cod_disciplina = null, $int_ref_ref_cod_turma = null, $int_ref_cod_turma = null, $int_ref_cod_matricula = null, $conta = false, $int_modulos = null ) { if ( is_numeric( $int_ref_ref_cod_serie ) && is_numeric( $int_ref_ref_cod_escola ) && is_numeric( $int_cod_disciplina ) && is_numeric( $int_ref_ref_cod_turma ) && is_numeric( $int_ref_cod_turma ) && is_numeric( $int_modulos ) ) { $db = new clsBanco(); if ( $conta ) { /*$sql = "SELECT MIN ( ( SELECT COUNT(0) FROM pmieducar.nota_aluno na WHERE na.ref_cod_matricula = mt.ref_cod_matricula AND na.disc_ref_cod_turma = mt.ref_cod_turma AND na.ref_ref_cod_turma = mt.ref_cod_turma AND na.disc_ref_ref_cod_serie = {$int_ref_ref_cod_serie} AND na.disc_ref_ref_cod_escola = {$int_ref_ref_cod_escola} AND na.ativo = 1 AND na.disc_ref_ref_cod_disciplina = {$int_cod_disciplina} ) ) FROM pmieducar.matricula_turma mt WHERE mt.ref_cod_turma = {$int_ref_cod_turma}";*/ /*$sql = "SELECT MIN( ( SELECT COUNT(0) FROM pmieducar.nota_aluno na2 WHERE na2.ref_cod_matricula = mt.ref_cod_matricula AND na2.disc_ref_cod_turma = mt.ref_cod_turma AND na2.ref_ref_cod_turma = mt.ref_cod_turma AND na2.disc_ref_ref_cod_serie = na.disc_ref_ref_cod_serie AND na2.disc_ref_ref_cod_escola = na.disc_ref_ref_cod_escola AND na2.ativo = 1 AND na2.disc_ref_ref_cod_disciplina = na.disc_ref_ref_cod_disciplina ) ) FROM pmieducar.matricula m, pmieducar.matricula_turma mt, pmieducar.nota_aluno na WHERE m.cod_matricula = mt.ref_cod_matricula AND na.ref_cod_matricula = m.cod_matricula AND na.disc_ref_ref_cod_serie = $int_ref_ref_cod_serie AND na.disc_ref_ref_cod_escola = $int_ref_ref_cod_escola AND na.ativo = 1 AND na.disc_ref_ref_cod_disciplina = $int_cod_disciplina AND mt.ref_cod_turma = $int_ref_cod_turma AND NOT EXISTS ( SELECT 1 FROM pmieducar.dispensa_disciplina dd WHERE dd.ref_ref_cod_turma = na.disc_ref_cod_turma AND dd.ref_cod_matricula = na.ref_cod_matricula AND dd.disc_ref_ref_cod_turma = na.disc_ref_cod_turma AND dd.disc_ref_ref_cod_serie = na.disc_ref_ref_cod_serie AND dd.disc_ref_ref_cod_escola = na.disc_ref_ref_cod_escola AND dd.disc_ref_ref_cod_disciplina = na.disc_ref_ref_cod_disciplina )";*/ /*$sql = "SELECT MIN( ( SELECT COUNT(0) FROM pmieducar.nota_aluno na WHERE na.ref_cod_matricula = mt.ref_cod_matricula AND na.disc_ref_cod_turma = mt.ref_cod_turma AND na.ref_ref_cod_turma = mt.ref_cod_turma AND na.disc_ref_ref_cod_serie = m.ref_ref_cod_serie AND na.disc_ref_ref_cod_escola = m.ref_ref_cod_escola AND na.ativo = 1 AND na.disc_ref_ref_cod_disciplina = {$int_cod_disciplina} ) ) FROM pmieducar.matricula m, pmieducar.matricula_turma mt WHERE mt.ref_cod_matricula = m.cod_matricula AND mt.ref_cod_turma = {$int_ref_cod_turma} AND m.ref_ref_cod_serie = {$int_ref_ref_cod_serie} AND m.ref_ref_cod_escola = {$int_ref_ref_cod_escola} AND m.ativo = 1";*/ $sql = "SELECT MIN( ( SELECT DISTINCT CASE WHEN ( SELECT 1 FROM pmieducar.dispensa_disciplina dd WHERE dd.ref_ref_cod_turma = na.ref_ref_cod_turma AND dd.ref_cod_matricula = na.ref_cod_matricula AND dd.disc_ref_ref_cod_turma = na.disc_ref_cod_turma AND dd.disc_ref_ref_cod_serie = na.disc_ref_ref_cod_serie AND dd.disc_ref_ref_cod_escola = na.disc_ref_ref_cod_escola AND dd.disc_ref_ref_cod_disciplina = na.disc_ref_ref_cod_disciplina ) = 1 THEN {$int_modulos} ELSE ( SELECT COUNT(0) FROM pmieducar.nota_aluno n WHERE n.ref_cod_matricula = na.ref_cod_matricula AND n.disc_ref_cod_turma = na.disc_ref_cod_turma AND n.ref_ref_cod_turma = na.ref_ref_cod_turma AND n.disc_ref_ref_cod_serie = na.disc_ref_ref_cod_serie AND n.disc_ref_ref_cod_escola = na.disc_ref_ref_cod_escola AND n.ativo = 1 AND n.disc_ref_ref_cod_disciplina = na.disc_ref_ref_cod_disciplina ) END FROM pmieducar.nota_aluno na WHERE na.ref_cod_matricula = mt.ref_cod_matricula AND na.disc_ref_cod_turma = mt.ref_cod_turma AND na.ref_ref_cod_turma = mt.ref_cod_turma AND na.disc_ref_ref_cod_serie = m.ref_ref_cod_serie AND na.disc_ref_ref_cod_escola = m.ref_ref_cod_escola AND na.ativo = 1 AND na.disc_ref_ref_cod_disciplina = {$int_cod_disciplina} ) ) FROM pmieducar.matricula m, pmieducar.matricula_turma mt WHERE mt.ref_cod_matricula = m.cod_matricula AND mt.ref_cod_turma = {$int_ref_cod_turma} AND m.ref_ref_cod_serie = {$int_ref_ref_cod_serie} AND m.ref_ref_cod_escola = {$int_ref_ref_cod_escola} AND m.ativo = 1"; } else { $sql = "SELECT MIN( qtd ) FROM ( SELECT DISTINCT COUNT( na.cod_nota_aluno ) AS qtd FROM pmieducar.nota_aluno na WHERE na.disc_ref_ref_cod_serie = {$int_ref_ref_cod_serie} AND na.disc_ref_ref_cod_escola = {$int_ref_ref_cod_escola} AND na.disc_ref_cod_turma = {$int_ref_ref_cod_turma} AND na.ref_ref_cod_turma = {$int_ref_cod_turma} AND na.ativo = 1 AND na.disc_ref_ref_cod_disciplina = {$int_cod_disciplina} AND na.disc_ref_ref_cod_disciplina NOT IN ( SELECT dd.disc_ref_ref_cod_disciplina FROM pmieducar.dispensa_disciplina dd WHERE dd.ref_ref_cod_turma = na.ref_ref_cod_turma AND dd.ref_cod_matricula = na.ref_cod_matricula AND dd.disc_ref_ref_cod_turma = na.disc_ref_cod_turma AND dd.disc_ref_ref_cod_serie = na.disc_ref_ref_cod_serie AND dd.disc_ref_ref_cod_escola = na.disc_ref_ref_cod_escola AND dd.disc_ref_ref_cod_disciplina = na.disc_ref_ref_cod_disciplina )"; if ( is_numeric( $int_ref_cod_matricula ) ) { $sql .= " AND ref_cod_matricula = {$int_ref_cod_matricula}"; } $sql .= " GROUP BY ref_cod_matricula ) AS subquery"; } //echo "{$sql}

"; return $db->CampoUnico( $sql ); } return false; } /** * Retorna uma lista com as médias filtradas conforme os parâmetros * * @return array */ function listaMedias( $int_disc_ref_ref_cod_serie = null, $int_disc_ref_ref_cod_escola = null, $int_disc_ref_cod_turma = null, $int_ref_ref_cod_turma = null, $int_qtd_modulos = null, $int_ref_cod_curso = null, $aprovado = false, $reprovado = false, $exame = false, $andamento = false ) { if ( is_numeric( $int_disc_ref_ref_cod_serie ) && is_numeric( $int_disc_ref_ref_cod_escola ) && is_numeric( $int_disc_ref_cod_turma ) && is_numeric( $int_ref_ref_cod_turma ) && is_numeric( $int_qtd_modulos ) && is_numeric( $int_ref_cod_curso ) ) { $sql = "SELECT ( SELECT DISTINCT tav2.valor FROM pmieducar.tipo_avaliacao_valores tav2 WHERE tav2.ref_cod_tipo_avaliacao = ( SELECT DISTINCT na2.ref_ref_cod_tipo_avaliacao FROM pmieducar.nota_aluno na2 WHERE na2.ref_cod_serie = {$int_disc_ref_ref_cod_serie} AND na2.ref_cod_escola = {$int_disc_ref_ref_cod_escola} ) AND tav2.valor_min <= ( SUM( tav.valor ) / ( {$int_qtd_modulos} ) ) AND tav2.valor_max >= ( SUM( tav.valor ) / ( {$int_qtd_modulos} ) ) ) as media, CASE WHEN ( SELECT falta_ch_globalizada FROM pmieducar.curso WHERE cod_curso = {$int_ref_cod_curso} ) = 0 THEN ( SELECT ( ( SUM( fa.faltas ) * c.hora_falta ) / d.carga_horaria ) * 100 FROM pmieducar.falta_aluno fa, pmieducar.disciplina d, pmieducar.curso c WHERE fa.ref_cod_matricula = na.ref_cod_matricula AND fa.ref_cod_disciplina = na.disc_ref_ref_cod_disciplina AND fa.ref_cod_disciplina = d.cod_disciplina AND c.cod_curso = {$int_ref_cod_curso} AND fa.ref_cod_serie = {$int_disc_ref_ref_cod_serie} AND fa.ref_cod_escola = {$int_disc_ref_ref_cod_escola} GROUP BY c.hora_falta, d.carga_horaria) ELSE ( SELECT ( ( SUM( f.falta ) * c.hora_falta ) / c.carga_horaria ) * 100 FROM pmieducar.faltas f, pmieducar.curso c WHERE f.ref_cod_matricula = na.ref_cod_matricula AND c.cod_curso = {$int_ref_cod_curso} GROUP BY c.hora_falta, c.carga_horaria ) END as faltas, na.ref_cod_matricula, na.ref_cod_disciplina FROM pmieducar.nota_aluno na, pmieducar.tipo_avaliacao_valores tav WHERE na.ref_ref_cod_tipo_avaliacao = tav.ref_cod_tipo_avaliacao AND na.ref_sequencial = tav.sequencial AND na.ref_cod_serie = {$int_disc_ref_ref_cod_serie} AND na.ref_cod_escola = {$int_disc_ref_ref_cod_escola} AND na.ref_cod_matricula NOT IN ( SELECT m.cod_matricula FROM pmieducar.matricula m WHERE m.ref_ref_cod_escola = na.disc_ref_ref_cod_escola AND m.ref_ref_cod_serie = na.disc_ref_ref_cod_serie AND m.ultima_matricula = 1 AND m.ativo = 1"; if ( $aprovado || $reprovado || $exame || $andamento ) { $sql .= " AND ("; $conexao = ""; if ( $aprovado ) { $sql .= " {$conexao} m.aprovado = 1"; $conexao = "OR"; } if ( $reprovado ) { $sql .= " {$conexao} m.aprovado = 2"; $conexao = "OR"; } if ( $exame ) { $sql .= " {$conexao} m.aprovado = 7"; $conexao = "OR"; } if ( $andamento ) { $sql .= " {$conexao} m.aprovado = 3"; $conexao = "OR"; } $sql .= " )"; } $sql .= " ) GROUP BY na.ref_cod_matricula, na.ref_cod_disciplina"; $db = new clsBanco(); $countCampos = count( explode( ",", $this->_campos_lista ) ); $resultado = array(); $sql .= $filtros . $this->getOrderby() . $this->getLimite(); $this->_total = $db->CampoUnico( "SELECT COUNT(0) FROM {$this->_tabela} {$filtros}" ); $db->Consulta( $sql ); if( $countCampos > 1 ) { while ( $db->ProximoRegistro() ) { $tupla = $db->Tupla(); $tupla["_total"] = $this->_total; $resultado[] = $tupla; } } else { while ( $db->ProximoRegistro() ) { $tupla = $db->Tupla(); $resultado[] = $tupla[$this->_campos_lista]; } } if( count( $resultado ) ) { return $resultado; } } return false; } /** * Retorna um array com os dados de um registro * * @return array */ function todasNotas( $int_disc_ref_ref_cod_serie = null, $int_disc_ref_ref_cod_escola = null, $int_disc_ref_cod_turma = null, $int_ref_ref_cod_turma = null, $int_qtd_modulos = null, $int_ref_cod_matricula = null ) { $db = new clsBanco(); $sql = "SELECT CASE WHEN ( ( SELECT ( COUNT( * ) - ( SELECT COUNT( * ) FROM pmieducar.dispensa_disciplina WHERE ref_ref_cod_turma = {$int_ref_ref_cod_turma} AND ref_cod_matricula = {$int_ref_cod_matricula} AND disc_ref_ref_cod_turma = {$int_disc_ref_cod_turma} AND disc_ref_ref_cod_serie = {$int_disc_ref_ref_cod_serie} AND disc_ref_ref_cod_escola = {$int_disc_ref_ref_cod_escola} ) ) * {$int_qtd_modulos} FROM pmieducar.turma_disciplina WHERE ref_cod_turma = {$int_disc_ref_cod_turma} AND ref_cod_escola = {$int_disc_ref_ref_cod_escola} AND ref_cod_serie = {$int_disc_ref_ref_cod_serie} ) <= ( SELECT COUNT( * ) FROM pmieducar.nota_aluno WHERE disc_ref_ref_cod_serie = {$int_disc_ref_ref_cod_serie} AND disc_ref_ref_cod_escola = {$int_disc_ref_ref_cod_escola} AND disc_ref_cod_turma = {$int_disc_ref_cod_turma} AND ref_ref_cod_turma = {$int_ref_ref_cod_turma} AND ref_cod_matricula = {$int_ref_cod_matricula} ) ) THEN 'S' ELSE 'N' END AS terminou"; return $db->CampoUnico( $sql ); } /** * Retorna uma variável com o resultado * * @return int */ function retornaDiscNota( $int_ref_ref_cod_serie, $int_ref_ref_cod_escola, $int_ref_ref_cod_turma, $int_ref_cod_turma, $int_ref_cod_matricula, $int_num_modulo ) { $db = new clsBanco(); $sql = "SELECT count( cod_nota_aluno ) FROM pmieducar.nota_aluno WHERE ref_cod_serie = {$int_ref_ref_cod_serie} AND ref_cod_escola = {$int_ref_ref_cod_escola} AND ativo = 1 AND ref_cod_matricula = {$int_ref_cod_matricula}"; $qtd_nota = $db->CampoUnico( $sql ); $sql = "SELECT ( ( SELECT COUNT(*) FROM pmieducar.disciplina_serie WHERE ref_cod_serie = {$int_ref_ref_cod_serie} ) - ( SELECT COUNT(*) FROM pmieducar.dispensa_disciplina WHERE ref_cod_matricula = {$int_ref_cod_matricula} AND ref_cod_serie = {$int_ref_ref_cod_serie} AND ref_cod_escola = {$int_ref_ref_cod_escola} ) )"; $qtd_disc = $db->CampoUnico( $sql ); return ( ( $int_num_modulo > 1 ) ? ( $qtd_nota - ( ( $int_num_modulo - 1 ) * $qtd_disc ) ) : ( $qtd_nota ) ); } /** * Total de notas de uma turma * * @return int */ function retornaTotalNotas( $int_ref_ref_cod_serie, $int_ref_ref_cod_escola, $int_ref_ref_cod_turma, $int_ref_cod_turma ) { $db = new clsBanco(); $sql = "SELECT COUNT(0) FROM pmieducar.nota_aluno WHERE disc_ref_ref_cod_serie = {$int_ref_ref_cod_serie} AND disc_ref_ref_cod_escola = {$int_ref_ref_cod_escola} AND disc_ref_cod_turma = {$int_ref_ref_cod_turma} AND ref_ref_cod_turma = {$int_ref_cod_turma}"; $qtd_nota = $db->CampoUnico( $sql ); return $qtd_nota; } /** * Total de notas de uma turma * * @return int */ function retornaModuloAluno( $int_ref_cod_serie, $int_ref_cod_escola, $int_ref_cod_matricula ) { if ( is_numeric( $int_ref_cod_serie ) && is_numeric( $int_ref_cod_escola ) && is_numeric( $int_ref_cod_matricula ) ) { $db = new clsBanco(); /* SQLs do nagasava $sql = "SELECT ( CEIL(( SELECT COUNT(0) FROM pmieducar.nota_aluno WHERE disc_ref_ref_cod_serie = {$int_ref_ref_cod_serie} AND disc_ref_ref_cod_escola = {$int_ref_ref_cod_escola} AND disc_ref_cod_turma = {$int_ref_ref_cod_turma} AND ref_cod_matricula = {$int_ref_cod_matricula} AND ref_ref_cod_turma = {$int_ref_cod_turma}) / (( SELECT COUNT(*) FROM pmieducar.turma_disciplina WHERE ref_cod_turma = {$int_ref_cod_turma} AND ref_cod_escola = {$int_ref_ref_cod_escola} AND ref_cod_serie = {$int_ref_ref_cod_serie} ) - ( SELECT COUNT(*) FROM pmieducar.dispensa_disciplina WHERE ref_ref_cod_turma = {$int_ref_cod_turma} AND ref_cod_matricula = {$int_ref_cod_matricula} AND disc_ref_ref_cod_turma = {$int_ref_ref_cod_turma} AND disc_ref_ref_cod_serie = {$int_ref_ref_cod_serie} AND disc_ref_ref_cod_escola = {$int_ref_ref_cod_escola} )) ))"; */ /* $sql = "SELECT ( CEIL( ( SELECT COUNT(0) FROM pmieducar.nota_aluno WHERE ref_cod_serie = {$int_ref_cod_serie} AND ref_cod_escola = {$int_ref_cod_escola} AND ref_cod_matricula = {$int_ref_cod_matricula} ) / ( ( SELECT COUNT(*) FROM pmieducar.disciplina_serie WHERE ref_cod_serie = {$int_ref_cod_serie} ) - ( SELECT COUNT(*) FROM pmieducar.dispensa_disciplina WHERE ref_cod_matricula = {$int_ref_cod_matricula} AND ref_cod_serie = {$int_ref_cod_serie} AND ref_cod_escola = {$int_ref_cod_escola} ) ) ) )"; */ // nova versao do romulo $sql = " SELECT COALESCE( MIN(total), 0 ) FROM ( SELECT COUNT(0) AS total FROM pmieducar.nota_aluno WHERE ref_cod_serie = '{$int_ref_cod_serie}' AND ref_cod_escola = '{$int_ref_cod_escola}' AND ref_cod_matricula = '{$int_ref_cod_matricula}' AND ativo = 1 GROUP BY ref_cod_disciplina ) AS sub1 "; $qtd_nota = $db->CampoUnico( $sql ); return $qtd_nota; } return false; } /** * Total de notas do aluno em determinada disciplina * * @return int */ function getQtdNotas( $int_ref_cod_escola = null, $int_ref_cod_serie = null, $int_ref_cod_disciplina = null, $int_ref_cod_matricula = null, $int_ref_cod_curso_disciplina = null ) { if ( is_numeric($int_ref_cod_matricula) ) { $db = new clsBanco(); $sql = "SELECT COUNT(cod_nota_aluno) FROM pmieducar.nota_aluno WHERE ref_cod_matricula = '{$int_ref_cod_matricula}' AND ativo = 1"; if ($int_ref_cod_disciplina) $sql .= " AND ref_cod_disciplina = '{$int_ref_cod_disciplina}'"; if ($int_ref_cod_escola) $sql .= " AND ref_cod_escola = '{$int_ref_cod_escola}'"; if ($int_ref_cod_serie) $sql .= " AND ref_cod_serie = '{$int_ref_cod_serie}'"; if ($int_ref_cod_curso_disciplina) $sql .= " AND ref_cod_curso_disciplina = '{$int_ref_cod_curso_disciplina}'"; $qtd_nota = $db->CampoUnico( $sql ); return $qtd_nota; } return false; } /** * Maximo de notas em uma matricula * * @return int */ function getMaxNotas( $int_ref_cod_matricula ) { if ( is_numeric($int_ref_cod_matricula) ) { $db = new clsBanco(); $sql = "SELECT max(modulo) FROM pmieducar.nota_aluno WHERE ref_cod_matricula = '{$int_ref_cod_matricula}' AND ativo = 1"; $max_nota = $db->CampoUnico( $sql ); return $max_nota; } return false; } /** * Funcao que retorna a ultima nota do modulo para as series que * a ultima nota define a situacao do aluno * * @param int $cod_matricula * @param int $cod_disciplina * @param int $cod_serie * @param int $ultimo_modulo * * @return int * */ function getUltimaNotaModulo($cod_matricula, $cod_disciplina, $cod_serie, $ultimo_modulo) { if (is_numeric($cod_matricula) && is_numeric($cod_disciplina) && is_numeric($cod_serie) && is_numeric($ultimo_modulo)) { $sql = "SELECT tav.valor FROM pmieducar.nota_aluno na , pmieducar.tipo_avaliacao_valores tav WHERE na.ref_cod_matricula = '{$cod_matricula}' AND na.ref_cod_disciplina = '{$cod_disciplina}' AND na.ref_cod_serie = '{$cod_serie}' AND na.ativo = 1 AND tav.ref_cod_tipo_avaliacao = na.ref_ref_cod_tipo_avaliacao AND tav.sequencial = na.ref_sequencial AND na.modulo = '{$ultimo_modulo}'"; $db = new clsBanco(); return $db->CampoUnico($sql); } return false; } } ?>