Commit 71b852ce7f2874abb55d3ceb19be5477b362fea8

Authored by Lucas D'Avila
1 parent fe475b0f
Exists in master

Adicionado finders para biblioteca, escola, curso, turma e aluno

Showing 1 changed file with 281 additions and 31 deletions   Show diff stats
ieducar/lib/App/Model/IedFinder.php
@@ -63,6 +63,46 @@ class App_Model_IedFinder extends CoreExt_Entity @@ -63,6 +63,46 @@ class App_Model_IedFinder extends CoreExt_Entity
63 } 63 }
64 64
65 /** 65 /**
  66 + * Retorna um array com as informações de escola a partir de seu código.
  67 + * @param int $id
  68 + * @return array
  69 + */
  70 + public static function getEscola($id)
  71 + {
  72 + $escola = self::addClassToStorage('clsPmieducarEscola', NULL,
  73 + 'include/pmieducar/clsPmieducarEscola.inc.php');
  74 + $escola->cod_escola = $id;
  75 + $escola = $escola->detalhe();
  76 +
  77 + if (FALSE === $escola) {
  78 + throw new App_Model_Exception(
  79 + sprintf('Escola com o código "%d" não existe.', $id)
  80 + );
  81 + }
  82 +
  83 + return $escola;
  84 + }
  85 +
  86 + /**
  87 + * Retorna todas as escolas cadastradas na tabela pmieducar.escola, selecionando
  88 + * opcionalmente pelo código da instituição.
  89 + * @param int $instituicaoId
  90 + * @return array
  91 + */
  92 + public static function getEscolas($instituicaoId = NULL)
  93 + {
  94 + $_escolas = self::addClassToStorage('clsPmieducarEscola', NULL,
  95 + 'include/pmieducar/clsPmieducarEscola.inc.php');
  96 +
  97 + $escolas = array();
  98 + foreach ($_escolas->lista(NULL, NULL, NULL, $instituicaoId) as $escola) {
  99 + $escolas[$escola['cod_escola']] = $escola['nome'];
  100 + }
  101 +
  102 + return $escolas;
  103 + }
  104 +
  105 + /**
66 * Retorna um nome de curso, procurando pelo seu código. 106 * Retorna um nome de curso, procurando pelo seu código.
67 * @param int $id 107 * @param int $id
68 * @return string|FALSE 108 * @return string|FALSE
@@ -77,6 +117,31 @@ class App_Model_IedFinder extends CoreExt_Entity @@ -77,6 +117,31 @@ class App_Model_IedFinder extends CoreExt_Entity
77 } 117 }
78 118
79 /** 119 /**
  120 + * Retorna todos os cursos cadastradas na tabela pmieducar.escola_curso, selecionando
  121 + * opcionalmente pelo código da escola.
  122 + * @param int $escolaId
  123 + * @return array
  124 + */
  125 + public static function getCursos($escolaId = NULL)
  126 + {
  127 + $escola_curso = self::addClassToStorage('clsPmieducarEscolaCurso', NULL,
  128 + 'include/pmieducar/clsPmieducarEscolaCurso.inc.php');
  129 +
  130 + // Carrega os cursos
  131 + $escola_curso->setOrderby('ref_cod_escola ASC, cod_curso ASC');
  132 + $escola_curso = $escola_curso->lista($escolaId);
  133 +
  134 + $cursos = array();
  135 + foreach ($escola_curso as $key => $val) {
  136 + $nomeCurso = self::getCurso($val['ref_cod_curso']);
  137 + $cursos[$val['ref_cod_curso']] = $nomeCurso;
  138 + }
  139 +
  140 + return $cursos;
  141 + }
  142 +
  143 +
  144 + /**
80 * Retorna um array com as informações da série a partir de seu código. 145 * Retorna um array com as informações da série a partir de seu código.
81 * 146 *
82 * @param int $codSerie 147 * @param int $codSerie
@@ -104,41 +169,71 @@ class App_Model_IedFinder extends CoreExt_Entity @@ -104,41 +169,71 @@ class App_Model_IedFinder extends CoreExt_Entity
104 169
105 /** 170 /**
106 * Retorna todas as séries cadastradas na tabela pmieducar.serie, selecionando 171 * Retorna todas as séries cadastradas na tabela pmieducar.serie, selecionando
107 - * opcionalmente pelo código da instituição. 172 + * opcionalmente pelo código da instituição, da escola ou do curso.
108 * @param int $instituicaoId 173 * @param int $instituicaoId
  174 + * @param int $escolaId
  175 + * @param int $cursoId
109 * @return array 176 * @return array
110 */ 177 */
111 - public static function getSeries($instituicaoId = NULL) 178 + public static function getSeries($instituicaoId = NULL, $escolaId = NULL, $cursoId = NULL)
112 { 179 {
113 - $serie = self::addClassToStorage('clsPmieducarSerie', NULL,  
114 - 'include/pmieducar/clsPmieducarSerie.inc.php'); 180 + $series = self::addClassToStorage('clsPmieducarSerie', NULL,
  181 + 'include/pmieducar/clsPmieducarSerie.inc.php');
  182 +
  183 + $series->setOrderby('ref_cod_curso ASC, cod_serie ASC, etapa_curso ASC');
  184 + $series = $series->lista(NULL, NULL, NULL, $cursoId, NULL, NULL, NULL, NULL, NULL,
  185 + NULL, NULL, NULL, NULL, $instituicaoId, NULL, NULL, NULL, $escolaId);
  186 +
  187 + $_series = array();
  188 +
  189 + foreach ($series as $serie) {
  190 + //$series[$val['cod_serie']] = $val;
  191 + $_series[$serie['cod_serie']] = $serie['nm_serie'];
  192 + }
  193 +
  194 + return $_series;
  195 + }
  196 +
  197 + /**
  198 + * Retorna um array com as informações da turma a partir de seu código.
  199 + *
  200 + * @param int $codTurma
  201 + * @return array
  202 + * @throws App_Model_Exception
  203 + */
  204 + public static function getTurma($codTurma)
  205 + {
  206 + // Recupera clsPmieducarTurma do storage de classe estático
  207 + $turma = self::addClassToStorage('clsPmieducarTurma', NULL,
  208 + 'include/pmieducar/clsPmieducarTurma.inc.php');
115 209
116 - // Carrega as séries  
117 - $serie->setOrderby('ref_cod_curso ASC, cod_serie ASC, etapa_curso ASC');  
118 - $serie = $serie->lista(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,  
119 - NULL, NULL, NULL, NULL, $instituicaoId); 210 + // Usa o atributo público para depois chamar o método detalhe()
  211 + $turma->cod_turma = $codTurma;
  212 + $turma = $turma->detalhe();
120 213
121 - $series = array();  
122 - foreach ($serie as $key => $val) {  
123 - $series[$val['cod_serie']] = $val; 214 + if (FALSE === $turma) {
  215 + throw new App_Model_Exception(
  216 + sprintf('Turma com o código "%d" não existe.', $codTurma)
  217 + );
124 } 218 }
125 219
126 - return $series; 220 + return $turma;
127 } 221 }
128 222
129 /** 223 /**
130 - * Retorna as turmas de uma escola.  
131 - * @param int $escola 224 + * Retorna as turmas de uma escola, selecionando opcionalmente pelo código da série.
  225 + * @param int $escolaId
  226 + * @param int $serieId
132 * @return array (cod_turma => nm_turma) 227 * @return array (cod_turma => nm_turma)
133 */ 228 */
134 - public static function getTurmas($escola) 229 + public static function getTurmas($escolaId, $serieId = NULL)
135 { 230 {
136 $turma = self::addClassToStorage('clsPmieducarTurma', NULL, 231 $turma = self::addClassToStorage('clsPmieducarTurma', NULL,
137 'include/pmieducar/clsPmieducarTurma.inc.php'); 232 'include/pmieducar/clsPmieducarTurma.inc.php');
138 233
139 // Carrega as turmas da escola 234 // Carrega as turmas da escola
140 $turma->setOrderBy('nm_turma ASC'); 235 $turma->setOrderBy('nm_turma ASC');
141 - $turmas = $turma->lista(NULL, NULL, NULL, NULL, $escola); 236 + $turmas = $turma->lista(NULL, NULL, NULL, $serieId, $escolaId);
142 237
143 $ret = array(); 238 $ret = array();
144 foreach ($turmas as $turma) { 239 foreach ($turmas as $turma) {
@@ -190,13 +285,14 @@ class App_Model_IedFinder extends CoreExt_Entity @@ -190,13 +285,14 @@ class App_Model_IedFinder extends CoreExt_Entity
190 285
191 // Pela restrição na criação de anos letivos, eu posso confiar no primeiro 286 // Pela restrição na criação de anos letivos, eu posso confiar no primeiro
192 // e único resultado que deve ter retornado 287 // e único resultado que deve ter retornado
193 - if (FALSE !== $anosEmAndamento && 1 == count($anosEmAndamento)) {  
194 - $ano = array_shift($anosEmAndamento);  
195 - $ano = $ano['ano'];  
196 - }  
197 - else {  
198 - throw new App_Model_Exception('Existem vários anos escolares em andamento.');  
199 - } 288 + if (FALSE == $anosEmAndamento || count($anosEmAndamento) < 1)
  289 + throw new App_Model_Exception('Não foi encontrado um ano escolar em andamento.');
  290 +
  291 + elseif (count($anosEmAndamento) > 1)
  292 + throw new App_Model_Exception('Existe mais de um ano escolar em andamento.');
  293 +
  294 + $ano = array_shift($anosEmAndamento);
  295 + $ano = $ano['ano'];
200 296
201 $anoLetivoModulo = self::addClassToStorage('clsPmieducarAnoLetivoModulo', 297 $anoLetivoModulo = self::addClassToStorage('clsPmieducarAnoLetivoModulo',
202 NULL, 'include/pmieducar/clsPmieducarAnoLetivoModulo.inc.php'); 298 NULL, 'include/pmieducar/clsPmieducarAnoLetivoModulo.inc.php');
@@ -250,13 +346,14 @@ class App_Model_IedFinder extends CoreExt_Entity @@ -250,13 +346,14 @@ class App_Model_IedFinder extends CoreExt_Entity
250 * atribuídos ao ano escolar/série da escola. 346 * atribuídos ao ano escolar/série da escola.
251 */ 347 */
252 public static function getEscolaSerieDisciplina($anoEscolar, $escola, 348 public static function getEscolaSerieDisciplina($anoEscolar, $escola,
253 - ComponenteCurricular_Model_ComponenteDataMapper $mapper = NULL) 349 + ComponenteCurricular_Model_ComponenteDataMapper $mapper = NULL,
  350 + $disciplinaId = null)
254 { 351 {
255 // Disciplinas na série na escola 352 // Disciplinas na série na escola
256 $escolaSerieDisciplina = self::addClassToStorage('clsPmieducarEscolaSerieDisciplina', 353 $escolaSerieDisciplina = self::addClassToStorage('clsPmieducarEscolaSerieDisciplina',
257 NULL, 'include/pmieducar/clsPmieducarEscolaSerieDisciplina.inc.php'); 354 NULL, 'include/pmieducar/clsPmieducarEscolaSerieDisciplina.inc.php');
258 355
259 - $disciplinas = $escolaSerieDisciplina->lista($anoEscolar, $escola, NULL, 1); 356 + $disciplinas = $escolaSerieDisciplina->lista($anoEscolar, $escola, $disciplinaId, 1);
260 357
261 if (FALSE === $disciplinas) { 358 if (FALSE === $disciplinas) {
262 throw new App_Model_Exception(sprintf( 359 throw new App_Model_Exception(sprintf(
@@ -294,18 +391,24 @@ class App_Model_IedFinder extends CoreExt_Entity @@ -294,18 +391,24 @@ class App_Model_IedFinder extends CoreExt_Entity
294 */ 391 */
295 public static function getComponentesTurma($anoEscolar, $escola, $turma, 392 public static function getComponentesTurma($anoEscolar, $escola, $turma,
296 ComponenteCurricular_Model_TurmaDataMapper $mapper = NULL, 393 ComponenteCurricular_Model_TurmaDataMapper $mapper = NULL,
297 - ComponenteCurricular_Model_ComponenteDataMapper $componenteMapper = NULL) 394 + ComponenteCurricular_Model_ComponenteDataMapper $componenteMapper = NULL,
  395 + $componenteCurricularId = null)
298 { 396 {
299 if (is_null($mapper)) { 397 if (is_null($mapper)) {
300 require_once 'ComponenteCurricular/Model/TurmaDataMapper.php'; 398 require_once 'ComponenteCurricular/Model/TurmaDataMapper.php';
301 $mapper = new ComponenteCurricular_Model_TurmaDataMapper(); 399 $mapper = new ComponenteCurricular_Model_TurmaDataMapper();
302 } 400 }
303 401
304 - $componentesTurma = $mapper->findAll(array(), array('turma' => $turma)); 402 + $where = array('turma' => $turma);
  403 +
  404 + if (is_numeric($componenteCurricularId))
  405 + $where['componente_curricular_id'] = $componenteCurricularId;
  406 +
  407 + $componentesTurma = $mapper->findAll(array(), $where);
305 408
306 // Não existem componentes específicos para a turma 409 // Não existem componentes específicos para a turma
307 if (0 == count($componentesTurma)) { 410 if (0 == count($componentesTurma)) {
308 - return self::getEscolaSerieDisciplina($anoEscolar, $escola, $componenteMapper); 411 + return self::getEscolaSerieDisciplina($anoEscolar, $escola, $componenteMapper, $componenteCurricularId);
309 } 412 }
310 413
311 $componentes = array(); 414 $componentes = array();
@@ -412,6 +515,7 @@ class App_Model_IedFinder extends CoreExt_Entity @@ -412,6 +515,7 @@ class App_Model_IedFinder extends CoreExt_Entity
412 $matricula['curso_carga_horaria'] = $curso['carga_horaria']; 515 $matricula['curso_carga_horaria'] = $curso['carga_horaria'];
413 $matricula['curso_hora_falta'] = $curso['hora_falta']; 516 $matricula['curso_hora_falta'] = $curso['hora_falta'];
414 $matricula['serie_carga_horaria'] = $serie['carga_horaria']; 517 $matricula['serie_carga_horaria'] = $serie['carga_horaria'];
  518 + $matricula['serie_dias_letivos'] = $serie['dias_letivos'];
415 519
416 $matricula['curso_nome'] = isset($curso['nm_curso']) ? $curso['nm_curso'] : NULL; 520 $matricula['curso_nome'] = isset($curso['nm_curso']) ? $curso['nm_curso'] : NULL;
417 $matricula['serie_nome'] = isset($serie['nm_serie']) ? $serie['nm_serie'] : NULL; 521 $matricula['serie_nome'] = isset($serie['nm_serie']) ? $serie['nm_serie'] : NULL;
@@ -458,7 +562,8 @@ class App_Model_IedFinder extends CoreExt_Entity @@ -458,7 +562,8 @@ class App_Model_IedFinder extends CoreExt_Entity
458 */ 562 */
459 public static function getComponentesPorMatricula($codMatricula, 563 public static function getComponentesPorMatricula($codMatricula,
460 ComponenteCurricular_Model_ComponenteDataMapper $componenteMapper = NULL, 564 ComponenteCurricular_Model_ComponenteDataMapper $componenteMapper = NULL,
461 - ComponenteCurricular_Model_TurmaDataMapper $turmaMapper = NULL) 565 + ComponenteCurricular_Model_TurmaDataMapper $turmaMapper = NULL,
  566 + $componenteCurricularId = null)
462 { 567 {
463 $matricula = self::getMatricula($codMatricula); 568 $matricula = self::getMatricula($codMatricula);
464 569
@@ -470,7 +575,7 @@ class App_Model_IedFinder extends CoreExt_Entity @@ -470,7 +575,7 @@ class App_Model_IedFinder extends CoreExt_Entity
470 575
471 // Disciplinas da escola na série em que o aluno está matriculado 576 // Disciplinas da escola na série em que o aluno está matriculado
472 $componentes = self::getComponentesTurma( 577 $componentes = self::getComponentesTurma(
473 - $codSerie, $codEscola, $turma, $turmaMapper, $componenteMapper 578 + $codSerie, $codEscola, $turma, $turmaMapper, $componenteMapper, $componenteCurricularId
474 ); 579 );
475 580
476 // Dispensas do aluno 581 // Dispensas do aluno
@@ -541,10 +646,155 @@ class App_Model_IedFinder extends CoreExt_Entity @@ -541,10 +646,155 @@ class App_Model_IedFinder extends CoreExt_Entity
541 } 646 }
542 647
543 /** 648 /**
  649 + * Retorna um array com as informações de biblioteca a partir de seu código.
  650 + * @param int $id
  651 + * @return array
  652 + */
  653 + public static function getBiblioteca($id)
  654 + {
  655 + $biblioteca = self::addClassToStorage('clsPmieducarBiblioteca', NULL,
  656 + 'include/pmieducar/clsPmieducarBiblioteca.inc.php');
  657 + $biblioteca->cod_biblioteca = $id;
  658 + $biblioteca = $biblioteca->detalhe();
  659 +
  660 + if (FALSE === $biblioteca) {
  661 + throw new App_Model_Exception(
  662 + sprintf('Biblioteca com o código "%d" não existe.', $id)
  663 + );
  664 + }
  665 +
  666 + return $biblioteca;
  667 + }
  668 +
  669 + /**
  670 + * Retorna todas as bibliotecas cadastradas na tabela pmieducar.biblioteca, selecionando
  671 + * opcionalmente pelo código da instituição e/ ou escola.
  672 + * @param int $instituicaoId
  673 + * @return array
  674 + */
  675 + public static function getBibliotecas($instituicaoId = NULL, $escolaId = NULL)
  676 + {
  677 + $_bibliotecas = self::addClassToStorage('clsPmieducarBiblioteca', NULL,
  678 + 'include/pmieducar/clsPmieducarBiblioteca.inc.php');
  679 +
  680 + $bibliotecas = array();
  681 + foreach ($_bibliotecas->lista(NULL, $instituicaoId, $escolaId) as $biblioteca) {
  682 + $bibliotecas[$biblioteca['cod_biblioteca']] = $biblioteca['nm_biblioteca'];
  683 + }
  684 +
  685 + return $bibliotecas;
  686 + }
  687 +
  688 + /**
  689 + * Retorna todas as situações cadastradas para as bibliotecas na tabela pmieducar.situacao, selecionando
  690 + * opcionalmente pelo código da biblioteca.
  691 + * @param int $bibliotecaId
  692 + * @return array
  693 + */
  694 + public static function getBibliotecaSituacoes($bibliotecaId = NULL)
  695 + {
  696 + $_situacoes = self::addClassToStorage('clsPmieducarSituacao', NULL,
  697 + 'include/pmieducar/clsPmieducarSituacao.inc.php');
  698 +
  699 + $situacoes = array();
  700 + foreach ($_situacoes->lista(null, null, null, null, null, null, null, null, null, null, null, null, null, $bibliotecaId) as $situacao) {
  701 + $situacoes[$situacao['cod_situacao']] = $situacao['nm_situacao'];
  702 + }
  703 +
  704 + return $situacoes;
  705 + }
  706 +
  707 + /**
  708 + * Retorna todas as fontes cadastradas para as bibliotecas na tabela pmieducar.fonte, selecionando
  709 + * opcionalmente pelo código da biblioteca.
  710 + * @param int $bibliotecaId
  711 + * @return array
  712 + */
  713 + public static function getBibliotecaFontes($bibliotecaId = NULL)
  714 + {
  715 + $_fontes = self::addClassToStorage('clsPmieducarFonte', NULL,
  716 + 'include/pmieducar/clsPmieducarFonte.inc.php');
  717 +
  718 + $fontes = array();
  719 + foreach ($_fontes->lista(null,null,null,null,null,null,null,null,null,1, $bibliotecaId) as $fonte) {
  720 + $fontes[$fonte['cod_fonte']] = $fonte['nm_fonte'];
  721 + }
  722 +
  723 + return $fontes;
  724 + }
  725 +
  726 + /**
  727 + * Retorna uma obra cadastrada para uma biblioteca na tabela pmieducar.acervo, selecionando
  728 + * obrigatóriamente pelo código da biblioteca e opcionalmente pelo código da obra.
  729 + * @param int $bibliotecaId
  730 + * @return array
  731 + */
  732 + public static function getBibliotecaObra($bibliotecaId, $id = NULL)
  733 + {
  734 + $obra = self::addClassToStorage('clsPmieducarAcervo', NULL,
  735 + 'include/pmieducar/clsPmieducarAcervo.inc.php');
  736 +
  737 + $obra->ref_cod_biblioteca = $$bibliotecaId;
  738 + $obra->cod_acervo = $id;
  739 + $obra = $obra->detalhe();
  740 +
  741 + if (FALSE === $obra) {
  742 + throw new App_Model_Exception(
  743 + sprintf('Obra com o código "%d" não existe.', $id)
  744 + );
  745 + }
  746 +
  747 + return $obra;
  748 + }
  749 +
  750 + /**
  751 + * Retorna um aluno cadastrado para uma escola na tabela pmieducar.aluno, selecionando
  752 + * obrigatóriamente pelo código da escola e opcionalmente pelo código do aluno.
  753 + * @param int $id
  754 + * @return array
  755 + */
  756 + public static function getAluno($escolaId, $id)
  757 + {
  758 + $aluno = self::addClassToStorage('clsPmieducarAluno', NULL,
  759 + 'include/pmieducar/clsPmieducarAluno.inc.php');
  760 + #$aluno->cod_aluno = $id;
  761 + #$aluno = $aluno->detalhe();
  762 +
  763 + $aluno = $aluno->lista($id, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, $escolaId);
  764 +
  765 + if (FALSE === $aluno) {
  766 + throw new App_Model_Exception(
  767 + sprintf('Aluno com o código "%d" não existe.', $id)
  768 + );
  769 + }
  770 +
  771 + return $aluno[0];
  772 + }
  773 +
  774 + /**
  775 + * Retorna todos os tipos de cliente cadastrados para determinada biblioteca na tabela
  776 + * pmieducar.cliente_tipo, selecionando obrigatoriamente pelo código da biblioteca.
  777 + * @param int $bibliotecaId
  778 + * @return array
  779 + */
  780 + public static function getBibliotecaTiposCliente($bibliotecaId)
  781 + {
  782 + $resources = self::addClassToStorage('clsPmieducarClienteTipo', NULL,
  783 + 'include/pmieducar/clsPmieducarClienteTipo.inc.php');
  784 +
  785 + $filtered_resources = array();
  786 + foreach ($resources->lista(null, $bibliotecaId) as $resource) {
  787 + $filtered_resources[$resource['cod_cliente_tipo']] = $resource['nm_tipo'];
  788 + }
  789 +
  790 + return $filtered_resources;
  791 + }
  792 +
  793 + /**
544 * @see CoreExt_Entity_Validatable#getDefaultValidatorCollection() 794 * @see CoreExt_Entity_Validatable#getDefaultValidatorCollection()
545 */ 795 */
546 public function getDefaultValidatorCollection() 796 public function getDefaultValidatorCollection()
547 { 797 {
548 return array(); 798 return array();
549 } 799 }
550 -}  
551 \ No newline at end of file 800 \ No newline at end of file
  801 +}