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