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 211  
212 212 // Recupera a lista de componentes curriculares da escola/série
213 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 217 if (0 == count($componentes)) {
... ... @@ -477,4 +477,4 @@ $miolo = new indice();
477 477 $pagina->addForm($miolo);
478 478  
479 479 // Gera o código HTML
480   -$pagina->MakeAll();
481 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 293  
294 294 // Seleciona os componentes da escola/série
295 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 299 if (0 < count($componentes) && FALSE == $presencaGeral) {
... ... @@ -887,4 +887,4 @@ $miolo = new indice();
887 887 $pagina->addForm($miolo);
888 888  
889 889 // Gera o código HTML
890   -$pagina->MakeAll();
891 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 239 * Retorna array com as referências de pmieducar.escola_serie_disciplina
240 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 245 * @return array
246 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 251 // Disciplinas na série na escola
251 252 $escolaSerieDisciplina = self::addClassToStorage('clsPmieducarEscolaSerieDisciplina',
252 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 265 require_once 'ComponenteCurricular/Model/ComponenteDataMapper.php';
265 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 390 $serie = self::getSerie($codSerie);
389 391  
390 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 395 // Dispensas do aluno
394 396 $disciplinasDispensa = self::getDisciplinasDispensadasPorMatricula(
395 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 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 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 247 public function testGetMatricula()
198 248 {
199 249 $expected = array(
... ... @@ -352,9 +402,11 @@ class App_Model_IedFinderTest extends UnitBaseTest
352 402  
353 403 // Mock para ComponenteCurricular_Model_ComponenteDataMapper
354 404 $mapperMock = $this->getCleanMock('ComponenteCurricular_Model_ComponenteDataMapper');
355   - $mapperMock->expects($this->any())
  405 + $mapperMock->expects($this->exactly(4))
356 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 411 // Registra mocks
360 412 CoreExt_Entity::addClassToStorage('clsPmieducarEscolaSerieDisciplina',
... ...