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,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', |