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