Commit 1f2a7d738b0a9a65b1536b370cad58e38daa7c20
1 parent
d7f17457
Exists in
master
Code refactoring no método {{{App_Model_IedFinder::getEscolaSerieDisciplina()}}}…
… e nos códigos clientes
Showing
4 changed files
with
87 additions
and
50 deletions
Show diff stats
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', | ... | ... |