Commit 1f2a7d738b0a9a65b1536b370cad58e38daa7c20

Authored by Eriksen Costa
1 parent d7f17457
Exists in master

Code refactoring no método {{{App_Model_IedFinder::getEscolaSerieDisciplina()}}}…

… e nos códigos clientes
ieducar/intranet/educar_relatorio_diario_classe_avaliacao_proc.php
@@ -211,7 +211,7 @@ class indice extends clsCadastro @@ -211,7 +211,7 @@ class indice extends clsCadastro
211 211
212 // Recupera a lista de componentes curriculares da escola/série 212 // Recupera a lista de componentes curriculares da escola/série
213 $componentes = App_Model_IedFinder::getEscolaSerieDisciplina( 213 $componentes = App_Model_IedFinder::getEscolaSerieDisciplina(
214 - $this->ref_cod_serie, $this->ref_cod_escola, TRUE 214 + $this->ref_cod_serie, $this->ref_cod_escola
215 ); 215 );
216 216
217 if (0 == count($componentes)) { 217 if (0 == count($componentes)) {
@@ -477,4 +477,4 @@ $miolo = new indice(); @@ -477,4 +477,4 @@ $miolo = new indice();
477 $pagina->addForm($miolo); 477 $pagina->addForm($miolo);
478 478
479 // Gera o código HTML 479 // Gera o código HTML
480 -$pagina->MakeAll();  
481 \ No newline at end of file 480 \ No newline at end of file
  481 +$pagina->MakeAll();
ieducar/intranet/educar_relatorio_diario_classe_proc.php
@@ -293,7 +293,7 @@ class indice extends clsCadastro @@ -293,7 +293,7 @@ class indice extends clsCadastro
293 293
294 // Seleciona os componentes da escola/série 294 // Seleciona os componentes da escola/série
295 $componentes = App_Model_IedFinder::getEscolaSerieDisciplina( 295 $componentes = App_Model_IedFinder::getEscolaSerieDisciplina(
296 - $this->ref_cod_serie, $this->ref_cod_escola, TRUE 296 + $this->ref_cod_serie, $this->ref_cod_escola
297 ); 297 );
298 298
299 if (0 < count($componentes) && FALSE == $presencaGeral) { 299 if (0 < count($componentes) && FALSE == $presencaGeral) {
@@ -887,4 +887,4 @@ $miolo = new indice(); @@ -887,4 +887,4 @@ $miolo = new indice();
887 $pagina->addForm($miolo); 887 $pagina->addForm($miolo);
888 888
889 // Gera o código HTML 889 // Gera o código HTML
890 -$pagina->MakeAll();  
891 \ No newline at end of file 890 \ No newline at end of file
  891 +$pagina->MakeAll();
ieducar/lib/App/Model/IedFinder.php
@@ -239,46 +239,48 @@ class App_Model_IedFinder extends CoreExt_Entity @@ -239,46 +239,48 @@ class App_Model_IedFinder extends CoreExt_Entity
239 * Retorna array com as referências de pmieducar.escola_serie_disciplina 239 * Retorna array com as referências de pmieducar.escola_serie_disciplina
240 * a modules.componente_curricular ('ref_ref_cod_disciplina'). 240 * a modules.componente_curricular ('ref_ref_cod_disciplina').
241 * 241 *
242 - * @param int $codSerie  
243 - * @param int $codEscola  
244 - * @param bool $hydrate 242 + * @param int $codSerie
  243 + * @param int $codEscola
  244 + * @param ComponenteCurricular_Model_ComponenteDataMapper $mapper
245 * @return array 245 * @return array
246 * @throws App_Model_Exception 246 * @throws App_Model_Exception
247 */ 247 */
248 - public static function getEscolaSerieDisciplina($codSerie, $codEscola, $hydrate = FALSE) 248 + public static function getEscolaSerieDisciplina($codSerie, $codEscola,
  249 + ComponenteCurricular_Model_ComponenteDataMapper $mapper = NULL)
249 { 250 {
250 // Disciplinas na série na escola 251 // Disciplinas na série na escola
251 $escolaSerieDisciplina = self::addClassToStorage('clsPmieducarEscolaSerieDisciplina', 252 $escolaSerieDisciplina = self::addClassToStorage('clsPmieducarEscolaSerieDisciplina',
252 NULL, 'include/pmieducar/clsPmieducarEscolaSerieDisciplina.inc.php'); 253 NULL, 'include/pmieducar/clsPmieducarEscolaSerieDisciplina.inc.php');
253 254
254 - $disciplinasEscolaSerie = $escolaSerieDisciplina->lista($codSerie, $codEscola, NULL, 1); 255 + $disciplinas = $escolaSerieDisciplina->lista($codSerie, $codEscola, NULL, 1);
255 256
256 - if (FALSE === $disciplinasEscolaSerie) {  
257 - throw new App_Model_Exception(  
258 - sprintf('Nenhuma disciplina para a série (%d) e a escola (%d) informados',  
259 - $codSerie, $codEscola)  
260 - ); 257 + if (FALSE === $disciplinas) {
  258 + throw new App_Model_Exception(sprintf(
  259 + 'Nenhuma disciplina para a série (%d) e a escola (%d) informados',
  260 + $codSerie, $codEscola
  261 + ));
261 } 262 }
262 263
263 - if ($hydrate) { 264 + if (is_null($mapper)) {
264 require_once 'ComponenteCurricular/Model/ComponenteDataMapper.php'; 265 require_once 'ComponenteCurricular/Model/ComponenteDataMapper.php';
265 $mapper = new ComponenteCurricular_Model_ComponenteDataMapper(); 266 $mapper = new ComponenteCurricular_Model_ComponenteDataMapper();
266 } 267 }
267 268
268 - $disciplinas = array();  
269 - foreach ($disciplinasEscolaSerie as $disciplinaEscolaSerie) {  
270 - if ($hydrate) {  
271 - $disciplinas[] = $mapper->find($disciplinaEscolaSerie['ref_cod_disciplina']);  
272 - continue; 269 + $ret = array();
  270 + foreach ($disciplinas as $disciplina) {
  271 + $id = $disciplina['ref_cod_disciplina'];
  272 + $carga = $disciplina['carga_horaria'];
  273 +
  274 + $componente = $mapper->findComponenteCurricularAnoEscolar($id, $codSerie);
  275 +
  276 + if (!is_null($carga)) {
  277 + $componente->cargaHoraria = $carga;
273 } 278 }
274 279
275 - $disciplinas[] = array(  
276 - 'ref_cod_disciplina' => $disciplinaEscolaSerie['ref_cod_disciplina'],  
277 - 'carga_horaria' => $disciplinaEscolaSerie['carga_horaria']  
278 - ); 280 + $ret[$id] = $componente;
279 } 281 }
280 282
281 - return $disciplinas; 283 + return $ret;
282 } 284 }
283 285
284 /** 286 /**
@@ -388,40 +390,23 @@ class App_Model_IedFinder extends CoreExt_Entity @@ -388,40 +390,23 @@ class App_Model_IedFinder extends CoreExt_Entity
388 $serie = self::getSerie($codSerie); 390 $serie = self::getSerie($codSerie);
389 391
390 // Disciplinas da escola na série em que o aluno está matriculado 392 // Disciplinas da escola na série em que o aluno está matriculado
391 - $disciplinas = self::getEscolaSerieDisciplina($codSerie, $codEscola); 393 + $componentes = self::getEscolaSerieDisciplina($codSerie, $codEscola, $mapper);
392 394
393 // Dispensas do aluno 395 // Dispensas do aluno
394 $disciplinasDispensa = self::getDisciplinasDispensadasPorMatricula( 396 $disciplinasDispensa = self::getDisciplinasDispensadasPorMatricula(
395 $codMatricula, $codSerie, $codEscola 397 $codMatricula, $codSerie, $codEscola
396 ); 398 );
397 399
398 - // Instancia um data mapper caso nenhum seja provido  
399 - if (is_null($mapper)) {  
400 - require_once 'ComponenteCurricular/Model/ComponenteDataMapper.php';  
401 - $mapper = new ComponenteCurricular_Model_ComponenteDataMapper();  
402 - }  
403 -  
404 - // Seleciona os componentes curriculares em que o aluno está cursando  
405 - $componentes = array();  
406 -  
407 - foreach ($disciplinas as $disciplina) {  
408 - if (in_array($disciplina['ref_cod_disciplina'], $disciplinasDispensa)) { 400 + $ret = array();
  401 + foreach ($componentes as $id => $componente) {
  402 + if (in_array($id, $disciplinasDispensa)) {
409 continue; 403 continue;
410 } 404 }
411 405
412 - $componenteCurricular = $mapper->findComponenteCurricularAnoEscolar(  
413 - $disciplina['ref_cod_disciplina'],  
414 - $codSerie  
415 - );  
416 -  
417 - if (!is_null($disciplina['carga_horaria'])) {  
418 - $componenteCurricular->cargaHoraria = $disciplina['carga_horaria'];  
419 - }  
420 -  
421 - $componentes[$componenteCurricular->id] = $componenteCurricular; 406 + $ret[$id] = $componente;
422 } 407 }
423 408
424 - return $componentes; 409 + return $ret;
425 } 410 }
426 411
427 /** 412 /**
ieducar/tests/unit/App/Model/IedFinderTest.php
@@ -194,6 +194,56 @@ class App_Model_IedFinderTest extends UnitBaseTest @@ -194,6 +194,56 @@ class App_Model_IedFinderTest extends UnitBaseTest
194 ); 194 );
195 } 195 }
196 196
  197 + public function testGetEscolaSerieDisciplina()
  198 + {
  199 + $returnAnoEscolar = array(
  200 + 1 => new ComponenteCurricular_Model_Componente(
  201 + array('id' => 1, 'nome' => 'Matemática', 'cargaHoraria' => 100)
  202 + ),
  203 + 2 => new ComponenteCurricular_Model_Componente(
  204 + array('id' => 2, 'nome' => 'Português', 'cargaHoraria' => 100)
  205 + ),
  206 + 3 => new ComponenteCurricular_Model_Componente(
  207 + array('id' => 3, 'nome' => 'Ciências', 'cargaHoraria' => 60)
  208 + ),
  209 + 4 => new ComponenteCurricular_Model_Componente(
  210 + array('id' => 4, 'nome' => 'Física', 'cargaHoraria' => 60)
  211 + )
  212 + );
  213 +
  214 + $expected = $returnAnoEscolar;
  215 +
  216 + $anoEscolarMock = $this->getCleanMock('ComponenteCurricular_Model_ComponenteDataMapper');
  217 + $anoEscolarMock->expects($this->exactly(4))
  218 + ->method('findComponenteCurricularAnoEscolar')
  219 + ->will($this->onConsecutiveCalls(
  220 + $returnAnoEscolar[1], $returnAnoEscolar[2], $returnAnoEscolar[3], $returnAnoEscolar[4]
  221 + ));
  222 +
  223 + // Retorna para clsPmieducarEscolaSerieDisciplina
  224 + $returnEscolaSerieDisciplina = array(
  225 + array('ref_cod_serie' => 1, 'ref_cod_disciplina' => 1, 'carga_horaria' => 80),
  226 + array('ref_cod_serie' => 1, 'ref_cod_disciplina' => 2, 'carga_horaria' => NULL),
  227 + array('ref_cod_serie' => 1, 'ref_cod_disciplina' => 3, 'carga_horaria' => NULL),
  228 + array('ref_cod_serie' => 1, 'ref_cod_disciplina' => 4, 'carga_horaria' => NULL),
  229 + );
  230 +
  231 + // Mock para clsPmieducarEscolaSerieDisciplina
  232 + $escolaMock = $this->getCleanMock('clsPmieducarEscolaSerieDisciplina');
  233 + $escolaMock->expects($this->any())
  234 + ->method('lista')
  235 + ->with(1, 1, NULL, 1)
  236 + ->will($this->returnValue($returnEscolaSerieDisciplina));
  237 +
  238 + App_Model_IedFinder::addClassToStorage('clsPmieducarEscolaSerieDisciplina', $escolaMock, NULL, TRUE);
  239 +
  240 + $componentes = App_Model_IedFinder::getEscolaSerieDisciplina(1, 1, $anoEscolarMock);
  241 + $this->assertEquals(
  242 + $expected, $componentes,
  243 + '::getEscolaSerieDisciplina() retorna os componentes de um escola-série.'
  244 + );
  245 + }
  246 +
197 public function testGetMatricula() 247 public function testGetMatricula()
198 { 248 {
199 $expected = array( 249 $expected = array(
@@ -352,9 +402,11 @@ class App_Model_IedFinderTest extends UnitBaseTest @@ -352,9 +402,11 @@ class App_Model_IedFinderTest extends UnitBaseTest
352 402
353 // Mock para ComponenteCurricular_Model_ComponenteDataMapper 403 // Mock para ComponenteCurricular_Model_ComponenteDataMapper
354 $mapperMock = $this->getCleanMock('ComponenteCurricular_Model_ComponenteDataMapper'); 404 $mapperMock = $this->getCleanMock('ComponenteCurricular_Model_ComponenteDataMapper');
355 - $mapperMock->expects($this->any()) 405 + $mapperMock->expects($this->exactly(4))
356 ->method('findComponenteCurricularAnoEscolar') 406 ->method('findComponenteCurricularAnoEscolar')
357 - ->will($this->onConsecutiveCalls($expected[1], $expected[3])); 407 + ->will($this->onConsecutiveCalls(
  408 + $componentes[0], $componentes[1], $componentes[2], $componentes[3]
  409 + ));
358 410
359 // Registra mocks 411 // Registra mocks
360 CoreExt_Entity::addClassToStorage('clsPmieducarEscolaSerieDisciplina', 412 CoreExt_Entity::addClassToStorage('clsPmieducarEscolaSerieDisciplina',