From 6f9462a0299efb600bdd20a8eafc4ab2b3e25388 Mon Sep 17 00:00:00 2001 From: Lucas D'Avila Date: Fri, 8 Feb 2013 14:48:13 -0200 Subject: [PATCH] Vinculado turma a ano letivo close #4 --- ieducar/intranet/educar_ano_letivo_modulo_cad.php | 125 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- ieducar/intranet/educar_turma_cad.php | 16 +++++++++++----- ieducar/intranet/educar_turma_lst.php | 15 ++++++++++----- ieducar/intranet/include/clsCadastro.inc.php | 2 +- ieducar/intranet/include/clsListagem.inc.php | 8 ++++++++ ieducar/intranet/include/pmieducar/clsPmieducarEscolaAnoLetivo.inc.php | 13 +++++++++++-- ieducar/intranet/include/pmieducar/clsPmieducarTurma.inc.php | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++------------ ieducar/lib/Portabilis/Controller/Page/ListController.php | 7 ------- ieducar/lib/Portabilis/View/Helper/DynamicInput/Turma.php | 27 ++++++++++++++++++++++++++- ieducar/misc/database/deltas/portabilis/50_adiciona_ano_em_turma_e_turmas_por_ano_em_escola_ano_letivo.sql | 17 +++++++++++++++++ ieducar/modules/DynamicInput/Assets/Javascripts/Turma.js | 8 +++++--- ieducar/modules/DynamicInput/Views/TurmaController.php | 26 +++++++++++++++++++++++++- ieducar/modules/Portabilis/Assets/Javascripts/Frontend/Process.js | 2 -- 13 files changed, 288 insertions(+), 41 deletions(-) create mode 100644 ieducar/misc/database/deltas/portabilis/50_adiciona_ano_em_turma_e_turmas_por_ano_em_escola_ano_letivo.sql diff --git a/ieducar/intranet/educar_ano_letivo_modulo_cad.php b/ieducar/intranet/educar_ano_letivo_modulo_cad.php index 76579a3..0e986aa 100644 --- a/ieducar/intranet/educar_ano_letivo_modulo_cad.php +++ b/ieducar/intranet/educar_ano_letivo_modulo_cad.php @@ -35,6 +35,8 @@ require_once 'include/pmieducar/geral.inc.php'; require_once 'App/Date/Utils.php'; +require_once 'ComponenteCurricular/Model/TurmaDataMapper.php'; + /** * clsIndexBase class. * @@ -281,8 +283,11 @@ class indice extends clsCadastro $this->ano_letivo_modulo = unserialize(urldecode($this->ano_letivo_modulo)); if ($this->ano_letivo_modulo) { + + $this->copiarTurmasUltimoAno($this->ref_ref_cod_escola, $this->ref_ano); + $obj = new clsPmieducarEscolaAnoLetivo($this->ref_ref_cod_escola, - $this->ref_ano, $this->pessoa_logada, NULL, 0, NULL, NULL, 1 + $this->ref_ano, $this->pessoa_logada, NULL, 0, NULL, NULL, 1, 1 ); $cadastrou = $obj->cadastra(); @@ -434,6 +439,122 @@ class indice extends clsCadastro return TRUE; } + + function copiarTurmasUltimoAno($escolaId, $anoDestino) { + $sql = 'select ano, turmas_por_ano from pmieducar.escola_ano_letivo where ref_cod_escola = $1 ' . + 'and ativo = 1 and ano in (select max(ano) from pmieducar.escola_ano_letivo where ' . + 'ref_cod_escola = $1 and ativo = 1)'; + + $ultimoAnoLetivo = Portabilis_Utils_Database::selectRow($sql, $escolaId); + + $anoTurmasPorAno = $ultimoAnoLetivo['turmas_por_ano'] == 1 ? $ultimoAnoLetivo['ano'] : null; + + $turmasEscola = new clsPmieducarTurma(); + $turmasEscola = $turmasEscola->lista(null, null, null, null, $escolaId, null, null, null, + null, null, null, null, null, null, 1, null, null, + null, null, null, null, null, null, null, null, null, + null, null, null, null, null, false, null, true, null, + null, $anoTurmasPorAno); + + foreach ($turmasEscola as $turma) + $this->copiarTurma($turma, $ultimoAnoLetivo['ano'], $anoDestino); + } + + function copiarTurma($turmaOrigem, $anoOrigem, $anoDestino) { + $sql = "select 1 from turma where ativo = 1 and visivel = true + and ref_ref_cod_escola = $1 and nm_turma = $2 and ref_ref_cod_serie = $3 and ano = $4 limit 1"; + + $params = array( + $turmaOrigem['ref_ref_cod_escola'], + $turmaOrigem['nm_turma'], + $turmaOrigem['ref_ref_cod_serie'], + $anoDestino + ); + + $existe = Portabilis_Utils_Database::selectField($sql, $params); + + if ($existe != 1) { + $fields = array('ref_usuario_exc', 'ref_usuario_cad', 'ref_ref_cod_serie', 'ref_ref_cod_escola', + 'ref_cod_infra_predio_comodo', 'nm_turma', 'sgl_turma', 'max_aluno', 'multiseriada', + 'data_cadastro', 'data_exclusao', 'ativo', 'ref_cod_turma_tipo', 'hora_inicial', 'hora_final', + 'hora_inicio_intervalo', 'hora_fim_intervalo', 'ref_cod_regente', 'ref_cod_instituicao_regente', + 'ref_cod_instituicao', 'ref_cod_curso', 'ref_ref_cod_serie_mult', 'ref_ref_cod_escola_mult', + 'visivel', 'turma_turno_id', 'tipo_boletim', 'ano'); + + $turmaDestino = new clsPmieducarTurma(); + + foreach ($fields as $fieldName) + $turmaDestino->$fieldName = $turmaOrigem[$fieldName]; + + $turmaDestino->ano = $anoDestino; + $turmaDestinoId = $turmaDestino->cadastra(); + + $this->copiarComponenteCurricularTurma($turmaOrigem['cod_turma'], $turmaDestinoId); + $this->copiarModulosTurma($turmaOrigem['cod_turma'], $turmaDestinoId, $anoOrigem, $anoDestino); + $this->copiarDiasSemanaTurma($turmaOrigem['cod_turma'], $turmaDestinoId); + } + } + + function copiarComponenteCurricularTurma($turmaOrigemId, $turmaDestinoId) { + $dataMapper = new ComponenteCurricular_Model_TurmaDataMapper(); + $componentesTurmaOrigem = $dataMapper->findAll(array(), array('turma' => $turmaOrigemId)); + + foreach ($componentesTurmaOrigem as $componenteTurmaOrigem) { + $data = array( + 'componenteCurricular' => $componenteTurmaOrigem->get('componenteCurricular'), + 'escola' => $componenteTurmaOrigem->get('escola'), + 'cargaHoraria' => $componenteTurmaOrigem->get('cargaHoraria'), + 'turma' => $turmaDestinoId, + + // está sendo mantido o mesmo ano_escolar_id, uma vez que não foi + // foi encontrado de onde o valor deste campo é obtido. + 'anoEscolar' => $componenteTurmaOrigem->get('anoEscolar') + ); + + $componenteTurmaDestino = $dataMapper->createNewEntityInstance($data); + $dataMapper->save($componenteTurmaDestino); + } + } + + function copiarModulosTurma($turmaOrigemId, $turmaDestinoId, $anoOrigem, $anoDestino) { + $modulosTurmaOrigem = new clsPmieducarTurmaModulo(); + $modulosTurmaOrigem = $modulosTurmaOrigem->lista($turmaOrigemId); + + foreach ($modulosTurmaOrigem as $moduloOrigem) { + $moduloDestino = new clsPmieducarTurmaModulo(); + + $moduloDestino->ref_cod_modulo = $moduloOrigem['ref_cod_modulo']; + $moduloDestino->sequencial = $moduloOrigem['sequencial']; + $moduloDestino->ref_cod_turma = $turmaDestinoId; + + $moduloDestino->data_inicio = str_replace( + $anoOrigem, $anoDestino, $moduloOrigem['data_inicio'] + ); + + $moduloDestino->data_fim = str_replace( + $anoOrigem, $anoDestino, $moduloOrigem['data_fim'] + ); + + $moduloDestino->cadastra(); + } + } + + function copiarDiasSemanaTurma($turmaOrigemId, $turmaDestinoId) { + $diasSemanaTurmaOrigem = new clsPmieducarTurmaDiaSemana(); + $diasSemanaTurmaOrigem = $diasSemanaTurmaOrigem->lista(null, $turmaOrigemId); + + $fields = array('dia_semana', 'hora_inicial', 'hora_final'); + + foreach ($diasSemanaTurmaOrigem as $diaSemanaOrigem) { + $diaSemanaDestino = new clsPmieducarTurmaDiaSemana(); + + foreach ($fields as $fieldName) + $diaSemanaDestino->$fieldName = $diaSemanaOrigem[$fieldName]; + + $diaSemanaDestino->ref_cod_turma = $turmaDestinoId; + $diaSemanaDestino->cadastra(); + } + } } // Instancia objeto de página @@ -450,7 +571,7 @@ $pagina->MakeAll(); ?> "); } + + public function inputsHelper() { + if (! isset($this->_inputsHelper)) + $this->_inputsHelper = new Portabilis_View_Helper_Inputs($this); + + return $this->_inputsHelper; + } } diff --git a/ieducar/intranet/include/pmieducar/clsPmieducarEscolaAnoLetivo.inc.php b/ieducar/intranet/include/pmieducar/clsPmieducarEscolaAnoLetivo.inc.php index 58ddc5d..3486490 100644 --- a/ieducar/intranet/include/pmieducar/clsPmieducarEscolaAnoLetivo.inc.php +++ b/ieducar/intranet/include/pmieducar/clsPmieducarEscolaAnoLetivo.inc.php @@ -107,13 +107,13 @@ class clsPmieducarEscolaAnoLetivo * * @return object */ - function clsPmieducarEscolaAnoLetivo( $ref_cod_escola = null, $ano = null, $ref_usuario_cad = null, $ref_usuario_exc = null, $andamento = null, $data_cadastro = null, $data_exclusao = null, $ativo = null ) + function clsPmieducarEscolaAnoLetivo( $ref_cod_escola = null, $ano = null, $ref_usuario_cad = null, $ref_usuario_exc = null, $andamento = null, $data_cadastro = null, $data_exclusao = null, $ativo = null, $turmas_por_ano = null ) { $db = new clsBanco(); $this->_schema = "pmieducar."; $this->_tabela = "{$this->_schema}escola_ano_letivo"; - $this->_campos_lista = $this->_todos_campos = "ref_cod_escola, ano, ref_usuario_cad, ref_usuario_exc, andamento, data_cadastro, data_exclusao, ativo"; + $this->_campos_lista = $this->_todos_campos = "ref_cod_escola, ano, ref_usuario_cad, ref_usuario_exc, andamento, data_cadastro, data_exclusao, ativo, turmas_por_ano"; if( is_numeric( $ref_usuario_exc ) ) { @@ -222,6 +222,7 @@ class clsPmieducarEscolaAnoLetivo $this->ativo = $ativo; } + $this->turmas_por_ano = $turmas_por_ano; } /** @@ -263,13 +264,21 @@ class clsPmieducarEscolaAnoLetivo $valores .= "{$gruda}'{$this->andamento}'"; $gruda = ", "; } + $campos .= "{$gruda}data_cadastro"; $valores .= "{$gruda}NOW()"; $gruda = ", "; + $campos .= "{$gruda}ativo"; $valores .= "{$gruda}'1'"; $gruda = ", "; + if( is_numeric( $this->turmas_por_ano ) ) + { + $campos .= "{$gruda}turmas_por_ano"; + $valores .= "{$gruda}'{$this->turmas_por_ano}'"; + $gruda = ", "; + } $db->Consulta( "INSERT INTO {$this->_tabela} ( $campos ) VALUES( $valores )" ); return true; diff --git a/ieducar/intranet/include/pmieducar/clsPmieducarTurma.inc.php b/ieducar/intranet/include/pmieducar/clsPmieducarTurma.inc.php index a911d14..4677688 100644 --- a/ieducar/intranet/include/pmieducar/clsPmieducarTurma.inc.php +++ b/ieducar/intranet/include/pmieducar/clsPmieducarTurma.inc.php @@ -126,13 +126,13 @@ class clsPmieducarTurma * * @return object */ - function clsPmieducarTurma( $cod_turma = null, $ref_usuario_exc = null, $ref_usuario_cad = null, $ref_ref_cod_serie = null, $ref_ref_cod_escola = null, $ref_cod_infra_predio_comodo = null, $nm_turma = null, $sgl_turma = null, $max_aluno = null, $multiseriada = null, $data_cadastro = null, $data_exclusao = null, $ativo = null, $ref_cod_turma_tipo = null, $hora_inicial = null, $hora_final = null, $hora_inicio_intervalo = null, $hora_fim_intervalo = null, $ref_cod_regente = null, $ref_cod_instituicao_regente = null, $ref_cod_instituicao = null, $ref_cod_curso = null, $ref_ref_cod_serie_mult = null, $ref_ref_cod_escola_mult = null, $visivel = null, $turma_turno_id = null, $tipo_boletim = null) + function clsPmieducarTurma( $cod_turma = null, $ref_usuario_exc = null, $ref_usuario_cad = null, $ref_ref_cod_serie = null, $ref_ref_cod_escola = null, $ref_cod_infra_predio_comodo = null, $nm_turma = null, $sgl_turma = null, $max_aluno = null, $multiseriada = null, $data_cadastro = null, $data_exclusao = null, $ativo = null, $ref_cod_turma_tipo = null, $hora_inicial = null, $hora_final = null, $hora_inicio_intervalo = null, $hora_fim_intervalo = null, $ref_cod_regente = null, $ref_cod_instituicao_regente = null, $ref_cod_instituicao = null, $ref_cod_curso = null, $ref_ref_cod_serie_mult = null, $ref_ref_cod_escola_mult = null, $visivel = null, $turma_turno_id = null, $tipo_boletim = null, $ano = null) { $db = new clsBanco(); $this->_schema = "pmieducar."; $this->_tabela = "{$this->_schema}turma"; - $this->_campos_lista = $this->_todos_campos = "t.cod_turma, t.ref_usuario_exc, t.ref_usuario_cad, t.ref_ref_cod_serie, t.ref_ref_cod_escola, t.ref_cod_infra_predio_comodo, t.nm_turma, t.sgl_turma, t.max_aluno, t.multiseriada, t.data_cadastro, t.data_exclusao, t.ativo, t.ref_cod_turma_tipo, t.hora_inicial, t.hora_final, t.hora_inicio_intervalo, t.hora_fim_intervalo, t.ref_cod_regente, t.ref_cod_instituicao_regente,t.ref_cod_instituicao, t.ref_cod_curso, t.ref_ref_cod_serie_mult, t.ref_ref_cod_escola_mult, t.visivel, t.turma_turno_id, t.tipo_boletim"; + $this->_campos_lista = $this->_todos_campos = "t.cod_turma, t.ref_usuario_exc, t.ref_usuario_cad, t.ref_ref_cod_serie, t.ref_ref_cod_escola, t.ref_cod_infra_predio_comodo, t.nm_turma, t.sgl_turma, t.max_aluno, t.multiseriada, t.data_cadastro, t.data_exclusao, t.ativo, t.ref_cod_turma_tipo, t.hora_inicial, t.hora_final, t.hora_inicio_intervalo, t.hora_fim_intervalo, t.ref_cod_regente, t.ref_cod_instituicao_regente,t.ref_cod_instituicao, t.ref_cod_curso, t.ref_ref_cod_serie_mult, t.ref_ref_cod_escola_mult, t.visivel, t.turma_turno_id, t.tipo_boletim, t.ano"; if( is_numeric( $ref_cod_turma_tipo ) ) { @@ -455,7 +455,7 @@ class clsPmieducarTurma $this->turma_turno_id = $turma_turno_id; $this->tipo_boletim = $tipo_boletim; - + $this->ano = $ano; } /** @@ -610,6 +610,12 @@ class clsPmieducarTurma $gruda = ", "; } + if(is_numeric($this->ano)){ + $campos .= "{$gruda}ano"; + $valores .= "{$gruda}'{$this->ano}'"; + $gruda = ", "; + } + $db->Consulta( "INSERT INTO {$this->_tabela} ( $campos ) VALUES( $valores )" ); return $db->InsertId( "{$this->_tabela}_cod_turma_seq"); } @@ -762,7 +768,7 @@ class clsPmieducarTurma $set .= "{$gruda}visivel = TRUE"; $gruda = ", "; } - else + else { $set .= "{$gruda}visivel = FALSE"; $gruda = ", "; @@ -786,6 +792,15 @@ class clsPmieducarTurma $gruda = ", "; } + if(is_numeric($this->ano)) { + $set .= "{$gruda}ano = '{$this->ano}'"; + $gruda = ", "; + } + else { + $set .= "{$gruda}ano = NULL"; + $gruda = ", "; + } + if( $set ) { $db->Consulta( "UPDATE {$this->_tabela} SET $set WHERE cod_turma = '{$this->cod_turma}'" ); @@ -1131,7 +1146,7 @@ class clsPmieducarTurma * * @return array */ - function lista( $int_cod_turma = null, $int_ref_usuario_exc = null, $int_ref_usuario_cad = null, $int_ref_ref_cod_serie = null, $int_ref_ref_cod_escola = null, $int_ref_cod_infra_predio_comodo = null, $str_nm_turma = null, $str_sgl_turma = null, $int_max_aluno = null, $int_multiseriada = 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_ref_cod_turma_tipo = null, $time_hora_inicial_ini = null, $time_hora_inicial_fim = null, $time_hora_final_ini = null, $time_hora_final_fim = null, $time_hora_inicio_intervalo_ini = null, $time_hora_inicio_intervalo_fim = null, $time_hora_fim_intervalo_ini = null, $time_hora_fim_intervalo_fim = null, $int_ref_cod_curso = null, $int_ref_cod_instituicao = null, $int_ref_cod_regente = null, $int_ref_cod_instituicao_regente = null, $int_ref_ref_cod_escola_mult = null, $int_ref_ref_cod_serie_mult = null, $int_qtd_min_alunos_matriculados = null, $bool_verifica_serie_multiseriada = false, $bool_tem_alunos_aguardando_nota = null, $visivel = null, $turma_turno_id = null) + function lista( $int_cod_turma = null, $int_ref_usuario_exc = null, $int_ref_usuario_cad = null, $int_ref_ref_cod_serie = null, $int_ref_ref_cod_escola = null, $int_ref_cod_infra_predio_comodo = null, $str_nm_turma = null, $str_sgl_turma = null, $int_max_aluno = null, $int_multiseriada = 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_ref_cod_turma_tipo = null, $time_hora_inicial_ini = null, $time_hora_inicial_fim = null, $time_hora_final_ini = null, $time_hora_final_fim = null, $time_hora_inicio_intervalo_ini = null, $time_hora_inicio_intervalo_fim = null, $time_hora_fim_intervalo_ini = null, $time_hora_fim_intervalo_fim = null, $int_ref_cod_curso = null, $int_ref_cod_instituicao = null, $int_ref_cod_regente = null, $int_ref_cod_instituicao_regente = null, $int_ref_ref_cod_escola_mult = null, $int_ref_ref_cod_serie_mult = null, $int_qtd_min_alunos_matriculados = null, $bool_verifica_serie_multiseriada = false, $bool_tem_alunos_aguardando_nota = null, $visivel = null, $turma_turno_id = null, $tipo_boletim = null, $ano = null) { $sql = "SELECT {$this->_campos_lista} FROM {$this->_tabela} t"; @@ -1335,7 +1350,7 @@ class clsPmieducarTurma $filtros .= "{$whereAnd} t.visivel = TRUE"; $whereAnd = " AND "; } - else + else { $filtros .= "{$whereAnd} t.visivel = FALSE"; $whereAnd = " AND "; @@ -1346,17 +1361,27 @@ class clsPmieducarTurma $filtros .= "{$whereAnd} t.visivel IN (".implode(",", $visivel).")"; $whereAnd = " AND "; } - else + else { $filtros .= "{$whereAnd} t.visivel = TRUE"; $whereAnd = " AND "; } - if( is_numeric( $turma_turno_id ) ) - { + + if( is_numeric( $turma_turno_id ) ) { $filtros .= "{$whereAnd} t.turma_turno_id = '{$turma_turno_id}'"; $whereAnd = " AND "; } + if( is_numeric( $tipo_boletim ) ) { + $filtros .= "{$whereAnd} t.tipo_boletim = '{$tipo_boletim}'"; + $whereAnd = " AND "; + } + + if( is_numeric( $ano ) ) { + $filtros .= "{$whereAnd} t.ano = '{$ano}'"; + $whereAnd = " AND "; + } + $db = new clsBanco(); $countCampos = count( explode( ",", $this->_campos_lista ) ); $resultado = array(); @@ -1398,7 +1423,7 @@ class clsPmieducarTurma * * @return array */ - function lista2( $int_cod_turma = null, $int_ref_usuario_exc = null, $int_ref_usuario_cad = null, $int_ref_ref_cod_serie = null, $int_ref_ref_cod_escola = null, $int_ref_cod_infra_predio_comodo = null, $str_nm_turma = null, $str_sgl_turma = null, $int_max_aluno = null, $int_multiseriada = 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_ref_cod_turma_tipo = null, $time_hora_inicial_ini = null, $time_hora_inicial_fim = null, $time_hora_final_ini = null, $time_hora_final_fim = null, $time_hora_inicio_intervalo_ini = null, $time_hora_inicio_intervalo_fim = null, $time_hora_fim_intervalo_ini = null, $time_hora_fim_intervalo_fim = null, $int_ref_cod_curso = null, $int_ref_cod_instituicao = null, $int_ref_cod_regente = null, $int_ref_cod_instituicao_regente = null, $int_ref_ref_cod_escola_mult = null, $int_ref_ref_cod_serie_mult = null, $int_qtd_min_alunos_matriculados = null, $visivel = null ) + function lista2( $int_cod_turma = null, $int_ref_usuario_exc = null, $int_ref_usuario_cad = null, $int_ref_ref_cod_serie = null, $int_ref_ref_cod_escola = null, $int_ref_cod_infra_predio_comodo = null, $str_nm_turma = null, $str_sgl_turma = null, $int_max_aluno = null, $int_multiseriada = 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_ref_cod_turma_tipo = null, $time_hora_inicial_ini = null, $time_hora_inicial_fim = null, $time_hora_final_ini = null, $time_hora_final_fim = null, $time_hora_inicio_intervalo_ini = null, $time_hora_inicio_intervalo_fim = null, $time_hora_fim_intervalo_ini = null, $time_hora_fim_intervalo_fim = null, $int_ref_cod_curso = null, $int_ref_cod_instituicao = null, $int_ref_cod_regente = null, $int_ref_cod_instituicao_regente = null, $int_ref_ref_cod_escola_mult = null, $int_ref_ref_cod_serie_mult = null, $int_qtd_min_alunos_matriculados = null, $visivel = null, $turma_turno_id = null, $tipo_boletim = null, $ano = null ) { /*$nm_escola = "( @@ -1595,7 +1620,7 @@ and e.cod_escola = t.ref_ref_cod_escola $filtros .= "{$whereAnd} t.visivel = TRUE"; $whereAnd = " AND "; } - else + else { $filtros .= "{$whereAnd} t.visivel = FALSE"; $whereAnd = " AND "; @@ -1606,12 +1631,26 @@ and e.cod_escola = t.ref_ref_cod_escola $filtros .= "{$whereAnd} t.visivel IN (".implode(",", $visivel).")"; $whereAnd = " AND "; } - else + else { $filtros .= "{$whereAnd} t.visivel = TRUE"; $whereAnd = " AND "; } + if( is_numeric( $turma_turno_id ) ) { + $filtros .= "{$whereAnd} t.turma_turno_id = '{$turma_turno_id}'"; + $whereAnd = " AND "; + } + + if( is_numeric( $tipo_boletim ) ) { + $filtros .= "{$whereAnd} t.tipo_boletim = '{$tipo_boletim}'"; + $whereAnd = " AND "; + } + + if( is_numeric( $ano ) ) { + $filtros .= "{$whereAnd} t.ano = '{$ano}'"; + $whereAnd = " AND "; + } $db = new clsBanco(); $countCampos = count( explode( ",", $this->_campos_lista ) ); diff --git a/ieducar/lib/Portabilis/Controller/Page/ListController.php b/ieducar/lib/Portabilis/Controller/Page/ListController.php index 7fe8e73..05c6ea1 100644 --- a/ieducar/lib/Portabilis/Controller/Page/ListController.php +++ b/ieducar/lib/Portabilis/Controller/Page/ListController.php @@ -50,13 +50,6 @@ class Portabilis_Controller_Page_ListController extends Core_Controller_Page_Lis parent::__construct(); } - protected function inputsHelper() { - if (! isset($this->_inputsHelper)) - $this->_inputsHelper = new Portabilis_View_Helper_Inputs($this); - - return $this->_inputsHelper; - } - protected function loadResourceAssets($dispatcher){ $rootPath = $_SERVER['DOCUMENT_ROOT']; $controllerName = ucwords($dispatcher->getControllerName()); diff --git a/ieducar/lib/Portabilis/View/Helper/DynamicInput/Turma.php b/ieducar/lib/Portabilis/View/Helper/DynamicInput/Turma.php index d02405b..bd4e34f 100644 --- a/ieducar/lib/Portabilis/View/Helper/DynamicInput/Turma.php +++ b/ieducar/lib/Portabilis/View/Helper/DynamicInput/Turma.php @@ -53,7 +53,8 @@ class Portabilis_View_Helper_DynamicInput_Turma extends Portabilis_View_Helper_D $instituicaoId = $this->getInstituicaoId($options['instituicaoId']); $escolaId = $this->getEscolaId($options['escolaId']); $serieId = $this->getSerieId($options['serieId']); - //$cursoId = $this->getCursoId($options['cursoId']); + $ano = $this->viewInstance->ano; + $userId = $this->getCurrentUserId(); $isProfessor = Portabilis_Business_Professor::isProfessor($instituicaoId, $userId); @@ -64,9 +65,33 @@ class Portabilis_View_Helper_DynamicInput_Turma extends Portabilis_View_Helper_D elseif ($escolaId && $serieId && empty($resources)) $resources = App_Model_IedFinder::getTurmas($escolaId, $serieId); + + // caso no letivo esteja definido para filtrar turmas por ano, + // somente exibe as turmas do ano letivo. + + if ($escolaId && $ano && $this->turmasPorAno($escolaId, $ano)) { + foreach ($resources as $id => $nome) { + $turma = new clsPmieducarTurma(); + $turma->cod_turma = $id; + $turma = $turma->detalhe(); + + if ($turma['ano'] != $ano) + unset($resources[$id]); + } + } + return $this->insertOption(null, "Selecione uma turma", $resources); } + protected function turmasPorAno($escolaId, $ano) { + $anoLetivo = new clsPmieducarEscolaAnoLetivo(); + $anoLetivo->ref_cod_escola = $escolaId; + $anoLetivo->ano = $ano; + $anoLetivo = $anoLetivo->detalhe(); + + return ($anoLetivo['turmas_por_ano'] == 1); + } + public function turma($options = array()) { parent::select($options); } diff --git a/ieducar/misc/database/deltas/portabilis/50_adiciona_ano_em_turma_e_turmas_por_ano_em_escola_ano_letivo.sql b/ieducar/misc/database/deltas/portabilis/50_adiciona_ano_em_turma_e_turmas_por_ano_em_escola_ano_letivo.sql new file mode 100644 index 0000000..e31d877 --- /dev/null +++ b/ieducar/misc/database/deltas/portabilis/50_adiciona_ano_em_turma_e_turmas_por_ano_em_escola_ano_letivo.sql @@ -0,0 +1,17 @@ + -- // + + -- + -- Adiciona ano em em pmieducar.turma e turmas_por_ano em pmieducar.escola_ano_letivo + -- @author Lucas D'Avila + -- @license @@license@@ + -- @version $Id$ + + ALTER TABLE pmieducar.turma ADD COLUMN ano integer; + ALTER TABLE pmieducar.escola_ano_letivo ADD COLUMN turmas_por_ano smallint; + + -- //@UNDO + + ALTER TABLE pmieducar.turma DROP COLUMN ano; + ALTER TABLE pmieducar.escola_ano_letivo DROP COLUMN turmas_por_ano; + + -- // diff --git a/ieducar/modules/DynamicInput/Assets/Javascripts/Turma.js b/ieducar/modules/DynamicInput/Assets/Javascripts/Turma.js index 5c74822..bbacf7b 100644 --- a/ieducar/modules/DynamicInput/Assets/Javascripts/Turma.js +++ b/ieducar/modules/DynamicInput/Assets/Javascripts/Turma.js @@ -7,6 +7,7 @@ var $serieField = getElementFor('serie'); var $turmaField = getElementFor('turma'); + var $ano = getElementFor('ano'); var handleGetTurmas = function(response) { var selectOptions = jsonResourcesToSelectOptions(response['options']); @@ -20,9 +21,10 @@ $turmaField.children().first().html('Aguarde carregando...'); var urlForGetTurmas = getResourceUrlBuilder.buildUrl('/module/DynamicInput/turma', 'turmas', { - instituicao_id : $instituicaoField.attr('value'), - escola_id : $escolaField.attr('value'), - serie_id : $serieField.attr('value') + instituicao_id : $instituicaoField.val(), + escola_id : $escolaField.val(), + serie_id : $serieField.val(), + ano : $ano.val() }); var options = { diff --git a/ieducar/modules/DynamicInput/Views/TurmaController.php b/ieducar/modules/DynamicInput/Views/TurmaController.php index a35c5ae..56b4770 100644 --- a/ieducar/modules/DynamicInput/Views/TurmaController.php +++ b/ieducar/modules/DynamicInput/Views/TurmaController.php @@ -55,12 +55,22 @@ class TurmaController extends ApiCoreController $this->validatesId('serie'); } + protected function turmasPorAno($escolaId, $ano) { + $anoLetivo = new clsPmieducarEscolaAnoLetivo(); + $anoLetivo->ref_cod_escola = $escolaId; + $anoLetivo->ano = $ano; + $anoLetivo = $anoLetivo->detalhe(); + + return ($anoLetivo['turmas_por_ano'] == 1); + } + protected function getTurmas() { if ($this->canGetTurmas()) { $userId = $this->getSession()->id_pessoa; $instituicaoId = $this->getRequest()->instituicao_id; $escolaId = $this->getRequest()->escola_id; $serieId = $this->getRequest()->serie_id; + $ano = $this->getRequest()->ano; $isProfessor = Portabilis_Business_Professor::isProfessor($instituicaoId, $userId); @@ -68,13 +78,27 @@ class TurmaController extends ApiCoreController $turmas = Portabilis_Business_Professor::turmasAlocado($escolaId, $serieId, $userId); else { - $sql = "select cod_turma as id, nm_turma as nome from pmieducar.turma where ref_ref_cod_escola = $1 + $sql = "select cod_turma as id, nm_turma as nome from pmieducar.turma where ref_ref_cod_escola = $1 and (ref_ref_cod_serie = $2 or ref_ref_cod_serie_mult = $2) and ativo = 1 and visivel != 'f' order by nm_turma asc"; $turmas = $this->fetchPreparedQuery($sql, array($escolaId, $serieId)); } + // caso no ano letivo esteja definido para filtrar turmas por ano, + // somente retorna as turmas do ano letivo. + + if ($ano && $this->turmasPorAno($escolaId, $ano)) { + foreach ($turmas as $index => $t) { + $turma = new clsPmieducarTurma(); + $turma->cod_turma = $t['id']; + $turma = $turma->detalhe(); + + if ($turma['ano'] != $ano) + unset($turmas[$index]); + } + } + $options = array(); foreach ($turmas as $turma) $options['__' . $turma['id']] = $this->toUtf8($turma['nome']); diff --git a/ieducar/modules/Portabilis/Assets/Javascripts/Frontend/Process.js b/ieducar/modules/Portabilis/Assets/Javascripts/Frontend/Process.js index 4968cdb..b4e70aa 100644 --- a/ieducar/modules/Portabilis/Assets/Javascripts/Frontend/Process.js +++ b/ieducar/modules/Portabilis/Assets/Javascripts/Frontend/Process.js @@ -256,7 +256,5 @@ var $resultTable = $j('#form_resultado .tablelistagem').addClass('horizontal-exp onClickSelectAllEvent ? $selectAllButton.click(onClickSelectAllEvent) : $selectAllButton.hide(); onClickActionEvent ? $actionButton.click(onClickActionEvent) : $actionButton.hide(); onClickDeleteEvent ? $deleteButton.click(onClickDeleteEvent) : $deleteButton.hide(); - - fixupFieldsWidth(); }); // ready })(jQuery); -- libgit2 0.21.2