From 2ee059394f58a2d8b76793ac37d539ef1970e900 Mon Sep 17 00:00:00 2001 From: Lucas D'Avila Date: Mon, 4 Feb 2013 14:57:30 -0200 Subject: [PATCH] Alterado APIs aluno / matricula, para exibir resultados cujo estejam transferidos closes #1 --- ieducar/modules/Api/Views/AlunoController.php | 23 +++++++++++++++-------- ieducar/modules/Api/Views/MatriculaController.php | 21 ++++++++++++++------- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/ieducar/modules/Api/Views/AlunoController.php b/ieducar/modules/Api/Views/AlunoController.php index abe0392..741f774 100644 --- a/ieducar/modules/Api/Views/AlunoController.php +++ b/ieducar/modules/Api/Views/AlunoController.php @@ -478,21 +478,26 @@ class AlunoController extends ApiCoreController // search options protected function searchOptions() { - return array('sqlParams' => array($this->getRequest()->escola_id), + $escolaId = $this->getRequest()->escola_id ? $this->getRequest()->escola_id : 0; + + return array('sqlParams' => array($escolaId), 'selectFields' => array('matricula_id')); } protected function sqlsForNumericSearch() { $sqls = array(); - // caso nao receba id da escola, pesquisa por codigo aluno em todas as escolas + // caso nao receba id da escola, pesquisa por codigo aluno em todas as escolas, + // alunos com e sem matricula são selecionados. if (! $this->getRequest()->escola_id) { $sqls[] = "select distinct aluno.cod_aluno as id, pessoa.nome as name from pmieducar.aluno, cadastro.pessoa where pessoa.idpes = aluno.ref_idpes - and aluno.ativo = 1 and aluno.cod_aluno like $1||'%' and $2 = $2 order by cod_aluno limit 15"; + and aluno.ativo = 1 and aluno.cod_aluno like $1||'%' and $2 = $2 + order by cod_aluno limit 15"; } - // seleciona por (codigo matricula ou codigo aluno) e/ou codigo escola + // seleciona por (codigo matricula ou codigo aluno) e opcionalmente por codigo escola, + // apenas alunos com matricula são selecionados. $sqls[] = "select * from (select distinct ON (aluno.cod_aluno) aluno.cod_aluno as id, matricula.cod_matricula as matricula_id, pessoa.nome as name from pmieducar.matricula, pmieducar.aluno, cadastro.pessoa where aluno.cod_aluno = matricula.ref_cod_aluno and @@ -500,7 +505,7 @@ class AlunoController extends ApiCoreController matricula.ativo = 1 and (select case when $2 != 0 then matricula.ref_ref_cod_escola = $2 else 1=1 end) and (matricula.cod_matricula like $1||'%' or matricula.ref_cod_aluno like $1||'%') and - matricula.aprovado in (1, 2, 3, 7, 8, 9) limit 15) as alunos order by id"; + matricula.aprovado in (1, 2, 3, 4, 7, 8, 9) limit 15) as alunos order by id"; return $sqls; } @@ -509,7 +514,8 @@ class AlunoController extends ApiCoreController protected function sqlsForStringSearch() { $sqls = array(); - // caso nao receba id da escola, pesquisa por codigo aluno em todas as escolas + // caso nao receba id da escola, pesquisa por nome aluno em todas as escolas, + // alunos com e sem matricula são selecionados. if (! $this->getRequest()->escola_id) { $sqls[] = "select distinct aluno.cod_aluno as id, pessoa.nome as name from pmieducar.aluno, cadastro.pessoa where @@ -518,7 +524,8 @@ class AlunoController extends ApiCoreController order by nome limit 15"; } - // seleciona por nome aluno e/ou codigo escola + // seleciona por nome aluno e e opcionalmente por codigo escola, + // apenas alunos com matricula são selecionados. $sqls[] = "select * from(select distinct ON (aluno.cod_aluno) aluno.cod_aluno as id, matricula.cod_matricula as matricula_id, pessoa.nome as name from pmieducar.matricula, pmieducar.aluno, cadastro.pessoa where aluno.cod_aluno = matricula.ref_cod_aluno and @@ -526,7 +533,7 @@ class AlunoController extends ApiCoreController matricula.ativo = 1 and (select case when $2 != 0 then matricula.ref_ref_cod_escola = $2 else 1=1 end) and lower(to_ascii(pessoa.nome)) like lower(to_ascii($1))||'%' and matricula.aprovado in - (1, 2, 3, 7, 8, 9) limit 15) as alunos order by name"; + (1, 2, 3, 4, 7, 8, 9) limit 15) as alunos order by name"; return $sqls; } diff --git a/ieducar/modules/Api/Views/MatriculaController.php b/ieducar/modules/Api/Views/MatriculaController.php index 19814b2..641a2bc 100644 --- a/ieducar/modules/Api/Views/MatriculaController.php +++ b/ieducar/modules/Api/Views/MatriculaController.php @@ -47,30 +47,37 @@ class MatriculaController extends ApiCoreController // search options protected function searchOptions() { - return array('sqlParams' => array($this->getRequest()->escola_id, $this->getRequest()->ano), + $escolaId = $this->getRequest()->escola_id ? $this->getRequest()->escola_id : 0; + $ano = $this->getRequest()->ano ? $this->getRequest()->ano : 0; + + return array('sqlParams' => array($escolaId, $ano), 'selectFields' => array('aluno_id')); } protected function sqlsForNumericSearch() { - + // seleciona por (codigo matricula ou codigo aluno), opcionalmente por codigo escola e + // opcionalmente por ano. return "select distinct ON (aluno.cod_aluno) aluno.cod_aluno as aluno_id, matricula.cod_matricula as id, pessoa.nome as name from pmieducar.matricula, pmieducar.aluno, cadastro.pessoa where aluno.cod_aluno = matricula.ref_cod_aluno and pessoa.idpes = aluno.ref_idpes and aluno.ativo = matricula.ativo and - matricula.ativo = 1 and matricula.ref_ref_cod_escola = $2 and + matricula.ativo = 1 and matricula.aprovado in (1, 2, 3, 4, 7, 8, 9) and (matricula.cod_matricula like $1 or matricula.ref_cod_aluno like $1) and - matricula.aprovado in (1, 2, 3, 7, 8, 9) and ano = $3 limit 15"; + (select case when $2 != 0 then matricula.ref_ref_cod_escola = $2 else 1=1 end) and + (select case when $3 != 0 then matricula.ano = $3 else 1=1 end) limit 15"; } protected function sqlsForStringSearch() { + // seleciona por nome aluno, opcionalmente por codigo escola e opcionalmente por ano. return "select distinct ON (aluno.cod_aluno) aluno.cod_aluno as aluno_id, matricula.cod_matricula as id, pessoa.nome as name from pmieducar.matricula, pmieducar.aluno, cadastro.pessoa where aluno.cod_aluno = matricula.ref_cod_aluno and pessoa.idpes = aluno.ref_idpes and aluno.ativo = matricula.ativo and - matricula.ativo = 1 and matricula.ref_ref_cod_escola = $2 and - lower(to_ascii(pessoa.nome)) like lower(to_ascii($1))||'%' and matricula.aprovado in (1, 2, 3, 7, 8, 9) - and ano = $3 limit 15"; + matricula.ativo = 1 and matricula.aprovado in (1, 2, 3, 4, 7, 8, 9) and + lower(to_ascii(pessoa.nome)) like lower(to_ascii($1))||'%' and + (select case when $2 != 0 then matricula.ref_ref_cod_escola = $2 else 1=1 end) and + (select case when $3 != 0 then matricula.ano = $3 else 1=1 end) limit 15"; } -- libgit2 0.21.2