Commit ab29fb0bc3a088c4cdcd684e1f3aaa3ef1ddf555
1 parent
2ffa8db7
Exists in
master
Adicionado controllers APIs json
Showing
10 changed files
with
1684 additions
and
0 deletions
Show diff stats
@@ -0,0 +1,774 @@ | @@ -0,0 +1,774 @@ | ||
1 | +<?php | ||
2 | + | ||
3 | +#error_reporting(E_ALL); | ||
4 | +#ini_set("display_errors", 1); | ||
5 | + | ||
6 | +/** | ||
7 | + * i-Educar - Sistema de gestão escolar | ||
8 | + * | ||
9 | + * Copyright (C) 2006 Prefeitura Municipal de Itajaí | ||
10 | + * <ctima@itajai.sc.gov.br> | ||
11 | + * | ||
12 | + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo | ||
13 | + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free | ||
14 | + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) | ||
15 | + * qualquer versão posterior. | ||
16 | + * | ||
17 | + * Este programa é distribuído na expectativa de que seja útil, porém, SEM | ||
18 | + * NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU | ||
19 | + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral | ||
20 | + * do GNU para mais detalhes. | ||
21 | + * | ||
22 | + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto | ||
23 | + * com este programa; se não, escreva para a Free Software Foundation, Inc., no | ||
24 | + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | ||
25 | + * | ||
26 | + * @author Lucas D'Avila <lucasdavila@portabilis.com.br> | ||
27 | + * @category i-Educar | ||
28 | + * @license @@license@@ | ||
29 | + * @package Api | ||
30 | + * @subpackage Modules | ||
31 | + * @since Arquivo disponível desde a versão ? | ||
32 | + * @version $Id$ | ||
33 | + */ | ||
34 | + | ||
35 | +require_once 'include/pmieducar/clsPmieducarAluno.inc.php'; | ||
36 | + | ||
37 | +require_once 'App/Model/MatriculaSituacao.php'; | ||
38 | + | ||
39 | +require_once 'Portabilis/Controller/ApiCoreController.php'; | ||
40 | +require_once 'Portabilis/Array/Utils.php'; | ||
41 | +require_once 'Portabilis/String/Utils.php'; | ||
42 | +require_once 'Portabilis/Array/Utils.php'; | ||
43 | +require_once 'Portabilis/Date/Utils.php'; | ||
44 | + | ||
45 | +require_once 'Transporte/Model/Responsavel.php'; | ||
46 | + | ||
47 | +class AlunoController extends ApiCoreController | ||
48 | +{ | ||
49 | + protected $_processoAp = 578; | ||
50 | + protected $_nivelAcessoOption = App_Model_NivelAcesso::SOMENTE_ESCOLA; | ||
51 | + | ||
52 | + | ||
53 | + // validators | ||
54 | + | ||
55 | + protected function validatesPessoaId() { | ||
56 | + $existenceOptions = array('schema_name' => 'cadastro', 'field_name' => 'idpes'); | ||
57 | + | ||
58 | + return $this->validatesPresenceOf('pessoa_id') && | ||
59 | + $this->validatesExistenceOf('fisica', $this->getRequest()->pessoa_id, $existenceOptions); | ||
60 | + } | ||
61 | + | ||
62 | + | ||
63 | + protected function validatesReligiaoId() { | ||
64 | + $isValid = true; | ||
65 | + | ||
66 | + // beneficio is optional | ||
67 | + if (is_numeric($this->getRequest()->religiao_id)) { | ||
68 | + $isValid = $this->validatesPresenceOf('religiao_id') && | ||
69 | + $this->validatesExistenceOf('religiao', $this->getRequest()->religiao_id); | ||
70 | + } | ||
71 | + | ||
72 | + return $isValid; | ||
73 | + } | ||
74 | + | ||
75 | + | ||
76 | + protected function validatesBeneficioId() { | ||
77 | + $isValid = true; | ||
78 | + | ||
79 | + // beneficio is optional | ||
80 | + if (is_numeric($this->getRequest()->beneficio_id)) { | ||
81 | + $isValid = $this->validatesPresenceOf('beneficio_id') && | ||
82 | + $this->validatesExistenceOf('aluno_beneficio', $this->getRequest()->beneficio_id); | ||
83 | + } | ||
84 | + | ||
85 | + return $isValid; | ||
86 | + } | ||
87 | + | ||
88 | + | ||
89 | + protected function validatesResponsavelId() { | ||
90 | + $isValid = true; | ||
91 | + | ||
92 | + if ($this->getRequest()->tipo_responsavel == 'outra_pessoa') { | ||
93 | + $existenceOptions = array('schema_name' => 'cadastro', 'field_name' => 'idpes'); | ||
94 | + | ||
95 | + $isValid = $this->validatesPresenceOf('responsavel_id') && | ||
96 | + $this->validatesExistenceOf('fisica', $this->getRequest()->responsavel_id, $existenceOptions); | ||
97 | + } | ||
98 | + | ||
99 | + return $isValid; | ||
100 | + } | ||
101 | + | ||
102 | + | ||
103 | + protected function validatesResponsavelTipo() { | ||
104 | + $expectedValues = array('mae', 'pai', 'outra_pessoa'); | ||
105 | + | ||
106 | + return $this->validatesPresenceOf('tipo_responsavel') && | ||
107 | + $this->validator->validatesValueInSetOf($this->getRequest()->tipo_responsavel, | ||
108 | + $expectedValues, 'tipo_responsavel'); | ||
109 | + } | ||
110 | + | ||
111 | + | ||
112 | + protected function validatesResponsavel() { | ||
113 | + return $this->validatesResponsavelTipo() && | ||
114 | + $this->validatesResponsavelId(); | ||
115 | + } | ||
116 | + | ||
117 | + | ||
118 | + protected function validatesTransporte() { | ||
119 | + $expectedValues = array('nenhum', 'municipal', 'estadual'); | ||
120 | + | ||
121 | + return $this->validatesPresenceOf('tipo_transporte') && | ||
122 | + $this->validator->validatesValueInSetOf($this->getRequest()->tipo_transporte, | ||
123 | + $expectedValues, 'tipo_transporte'); | ||
124 | + } | ||
125 | + | ||
126 | + | ||
127 | + protected function validatesUniquenessOfAlunoByPessoaId() { | ||
128 | + $existenceOptions = array('schema_name' => 'pmieducar', 'field_name' => 'ref_idpes', 'add_msg_on_error' => false); | ||
129 | + | ||
130 | + if( ! $this->validatesUniquenessOf('aluno', $this->getRequest()->pessoa_id, $existenceOptions)) { | ||
131 | + $this->messenger->append("Já existe um aluno cadastrado para a pessoa {$this->getRequest()->pessoa_id}."); | ||
132 | + return false; | ||
133 | + } | ||
134 | + | ||
135 | + return true; | ||
136 | + } | ||
137 | + | ||
138 | + | ||
139 | + protected function validatesUniquenessOfAlunoInepId() { | ||
140 | + if ($this->getRequest()->aluno_inep_id) { | ||
141 | + $where = array('alunoInep' => '$1'); | ||
142 | + $params = array($this->getRequest()->aluno_inep_id); | ||
143 | + | ||
144 | + if ($this->getRequest()->id) { | ||
145 | + $where['aluno'] = '!= $2'; | ||
146 | + $params[] = $this->getRequest()->id; | ||
147 | + } | ||
148 | + | ||
149 | + $dataMapper = $this->getDataMapperFor('educacenso', 'aluno'); | ||
150 | + $entity = $dataMapper->findAllUsingPreparedQuery(array('aluno'), $where, $params, array(), false); | ||
151 | + | ||
152 | + if (count($entity) && $entity[0]->get('aluno')) { | ||
153 | + $this->messenger->append("Já existe o aluno {$entity[0]->get('aluno')} cadastrado com código inep ". | ||
154 | + "{$this->getRequest()->aluno_inep_id}."); | ||
155 | + | ||
156 | + return false; | ||
157 | + } | ||
158 | + } | ||
159 | + | ||
160 | + return true; | ||
161 | + } | ||
162 | + | ||
163 | + | ||
164 | + protected function validatesUniquenessOfAlunoEstadoId() { | ||
165 | + if ($this->getRequest()->aluno_estado_id) { | ||
166 | + $sql = "select cod_aluno from pmieducar.aluno where aluno_estado_id = $1"; | ||
167 | + $params = array($this->getRequest()->aluno_estado_id); | ||
168 | + | ||
169 | + if($this->getRequest()->id) { | ||
170 | + $sql .= " and cod_aluno != $2"; | ||
171 | + $params[] = $this->getRequest()->id; | ||
172 | + } | ||
173 | + | ||
174 | + $alunoId = $this->fetchPreparedQuery($sql, $params, true, 'first-field'); | ||
175 | + | ||
176 | + if ($alunoId) { | ||
177 | + $this->messenger->append("Já existe o aluno $alunoId cadastrado com código estado ". | ||
178 | + "{$this->getRequest()->aluno_estado_id}."); | ||
179 | + | ||
180 | + return false; | ||
181 | + } | ||
182 | + } | ||
183 | + | ||
184 | + return true; | ||
185 | + } | ||
186 | + | ||
187 | + // validations | ||
188 | + | ||
189 | + protected function canGetMatriculas() { | ||
190 | + return $this->validatesId('aluno'); | ||
191 | + } | ||
192 | + | ||
193 | + protected function canChange() { | ||
194 | + return $this->validatesPessoaId() && | ||
195 | + $this->validatesResponsavel() && | ||
196 | + $this->validatesTransporte() && | ||
197 | + $this->validatesReligiaoId() && | ||
198 | + $this->validatesBeneficioId() && | ||
199 | + $this->validatesUniquenessOfAlunoInepId() && | ||
200 | + $this->validatesUniquenessOfAlunoEstadoId(); | ||
201 | + } | ||
202 | + | ||
203 | + protected function canPost() { | ||
204 | + return parent::canPost() && | ||
205 | + $this->validatesUniquenessOfAlunoByPessoaId(); | ||
206 | + } | ||
207 | + | ||
208 | + | ||
209 | + protected function canGetOcorrenciasDisciplinares() { | ||
210 | + return $this->validatesId('escola') && | ||
211 | + $this->validatesId('aluno'); | ||
212 | + } | ||
213 | + | ||
214 | + // load resources | ||
215 | + | ||
216 | + protected function loadNomeAluno($alunoId) { | ||
217 | + $sql = "select nome from cadastro.pessoa, pmieducar.aluno where idpes = ref_idpes and cod_aluno = $1"; | ||
218 | + $nome = $this->fetchPreparedQuery($sql, $alunoId, false, 'first-field'); | ||
219 | + | ||
220 | + return $this->toUtf8($nome, array('transform' => true)); | ||
221 | + } | ||
222 | + | ||
223 | + | ||
224 | + protected function loadTransporte($alunoId) { | ||
225 | + | ||
226 | + $tiposTransporte = array( | ||
227 | + Transporte_Model_Responsavel::NENHUM => 'nenhum', | ||
228 | + Transporte_Model_Responsavel::MUNICIPAL => 'municipal', | ||
229 | + Transporte_Model_Responsavel::ESTADUAL =>'estadual' | ||
230 | + ); | ||
231 | + | ||
232 | + $dataMapper = $this->getDataMapperFor('transporte', 'aluno'); | ||
233 | + $entity = $this->tryGetEntityOf($dataMapper, $alunoId); | ||
234 | + | ||
235 | + // no antigo cadastro de alunos era considerado como não utiliza transporte, | ||
236 | + // quando não existia dados, para o novo cadastro foi adicionado a opcao 0 (nenhum), | ||
237 | + // então por compatibilidade esta API retorna nenhum, quando não foi encontrado dados. | ||
238 | + if (is_null($entity)) | ||
239 | + $tipo = $tiposTransporte[Transporte_Model_Responsavel::NENHUM]; | ||
240 | + else | ||
241 | + $tipo = $tiposTransporte[$entity->get('responsavel')]; | ||
242 | + | ||
243 | + return $tipo; | ||
244 | + } | ||
245 | + | ||
246 | + | ||
247 | + protected function createOrUpdateTransporte($alunoId) { | ||
248 | + $tiposTransporte = array( | ||
249 | + 'nenhum' => Transporte_Model_Responsavel::NENHUM, | ||
250 | + 'municipal' => Transporte_Model_Responsavel::MUNICIPAL, | ||
251 | + 'estadual' => Transporte_Model_Responsavel::ESTADUAL | ||
252 | + ); | ||
253 | + | ||
254 | + $data = array( | ||
255 | + 'aluno' => $alunoId, | ||
256 | + 'responsavel' => $tiposTransporte[$this->getRequest()->tipo_transporte], | ||
257 | + 'user' => $this->getSession()->id_pessoa, | ||
258 | + | ||
259 | + // always setting now... | ||
260 | + 'created_at' => 'NOW()', | ||
261 | + ); | ||
262 | + | ||
263 | + $dataMapper = $this->getDataMapperFor('transporte', 'aluno'); | ||
264 | + $entity = $this->getOrCreateEntityOf($dataMapper, $alunoId); | ||
265 | + $entity->setOptions($data); | ||
266 | + | ||
267 | + return $this->saveEntity($dataMapper, $entity); | ||
268 | + } | ||
269 | + | ||
270 | + | ||
271 | + protected function loadAlunoInepId($alunoId) { | ||
272 | + $dataMapper = $this->getDataMapperFor('educacenso', 'aluno'); | ||
273 | + $entity = $this->tryGetEntityOf($dataMapper, $alunoId); | ||
274 | + | ||
275 | + return (is_null($entity) ? null : $entity->get('alunoInep')); | ||
276 | + } | ||
277 | + | ||
278 | + | ||
279 | + protected function createUpdateOrDestroyEducacensoAluno($alunoId) { | ||
280 | + $dataMapper = $this->getDataMapperFor('educacenso', 'aluno'); | ||
281 | + | ||
282 | + if (empty($this->getRequest()->aluno_inep_id)) | ||
283 | + $result = $this->deleteEntityOf($dataMapper, $alunoId); | ||
284 | + else { | ||
285 | + $data = array( | ||
286 | + 'aluno' => $alunoId, | ||
287 | + 'alunoInep' => $this->getRequest()->aluno_inep_id, | ||
288 | + | ||
289 | + // campos deprecados? | ||
290 | + 'fonte' => 'fonte', | ||
291 | + 'nomeInep' => '-', | ||
292 | + | ||
293 | + // always setting now... | ||
294 | + 'created_at' => 'NOW()', | ||
295 | + ); | ||
296 | + | ||
297 | + $entity = $this->getOrCreateEntityOf($dataMapper, $alunoId); | ||
298 | + $entity->setOptions($data); | ||
299 | + | ||
300 | + $result = $this->saveEntity($dataMapper, $entity); | ||
301 | + } | ||
302 | + | ||
303 | + return $result; | ||
304 | + } | ||
305 | + | ||
306 | + | ||
307 | + // #TODO mover updateResponsavel e updateDeficiencias para API pessoa ? | ||
308 | + | ||
309 | + protected function updateResponsavel() { | ||
310 | + $pessoa = new clsFisica(); | ||
311 | + $pessoa->idpes = $this->getRequest()->pessoa_id; | ||
312 | + $pessoa->nome_responsavel = ''; | ||
313 | + | ||
314 | + if ($this->getRequest()->tipo_responsavel == 'outra_pessoa') | ||
315 | + $pessoa->idpes_responsavel = $this->getRequest()->responsavel_id; | ||
316 | + else | ||
317 | + $pessoa->idpes_responsavel = 'NULL'; | ||
318 | + | ||
319 | + return $pessoa->edita(); | ||
320 | + } | ||
321 | + | ||
322 | + | ||
323 | + protected function updateDeficiencias() { | ||
324 | + $sql = "delete from cadastro.fisica_deficiencia where ref_idpes = $1"; | ||
325 | + $this->fetchPreparedQuery($sql, $this->getRequest()->pessoa_id, false); | ||
326 | + | ||
327 | + foreach ($this->getRequest()->deficiencias as $id) { | ||
328 | + if (! empty($id)) { | ||
329 | + $deficiencia = new clsCadastroFisicaDeficiencia($this->getRequest()->pessoa_id, $id); | ||
330 | + $deficiencia->cadastra(); | ||
331 | + } | ||
332 | + } | ||
333 | + } | ||
334 | + | ||
335 | + | ||
336 | + protected function createOrUpdateAluno($id = null){ | ||
337 | + $tiposResponsavel = array('pai' => 'p', 'mae' => 'm', 'outra_pessoa' => 'r'); | ||
338 | + | ||
339 | + $aluno = new clsPmieducarAluno(); | ||
340 | + $aluno->cod_aluno = $id; | ||
341 | + $aluno->aluno_estado_id = $this->getRequest()->aluno_estado_id; | ||
342 | + | ||
343 | + // após cadastro não muda mais id pessoa | ||
344 | + if (is_null($id)) | ||
345 | + $aluno->ref_idpes = $this->getRequest()->pessoa_id; | ||
346 | + | ||
347 | + $aluno->ref_cod_aluno_beneficio = $this->getRequest()->beneficio_id; | ||
348 | + $aluno->ref_cod_religiao = $this->getRequest()->religiao_id; | ||
349 | + $aluno->analfabeto = $this->getRequest()->alfabetizado ? 0 : 1; | ||
350 | + $aluno->tipo_responsavel = $tiposResponsavel[$this->getRequest()->tipo_responsavel]; | ||
351 | + $aluno->ref_usuario_exc = $this->getSession()->id_pessoa; | ||
352 | + | ||
353 | + return (is_null($id) ? $aluno->cadastra() : $aluno->edita()); | ||
354 | + } | ||
355 | + | ||
356 | + protected function loadTurmaByMatriculaId($matriculaId) { | ||
357 | + $sql = 'select ref_cod_turma as id, turma.nm_turma as nome from pmieducar.matricula_turma, | ||
358 | + pmieducar.turma where ref_cod_matricula = $1 and matricula_turma.ativo = 1 and | ||
359 | + turma.cod_turma = ref_cod_turma limit 1'; | ||
360 | + | ||
361 | + $turma = Portabilis_Utils_Database::selectRow($sql, $matriculaId); | ||
362 | + $turma['nome'] = $this->toUtf8($turma['nome'], array('transform' => true)); | ||
363 | + | ||
364 | + return $turma; | ||
365 | + } | ||
366 | + | ||
367 | + protected function loadEscolaNome($id) { | ||
368 | + $escola = new clsPmieducarEscola(); | ||
369 | + $escola->cod_escola = $id; | ||
370 | + $escola = $escola->detalhe(); | ||
371 | + | ||
372 | + return $this->toUtf8($escola['nome'], array('transform' => true)); | ||
373 | + } | ||
374 | + | ||
375 | + protected function loadCursoNome($id) { | ||
376 | + $curso = new clsPmieducarCurso(); | ||
377 | + $curso->cod_curso = $id; | ||
378 | + $curso = $curso->detalhe(); | ||
379 | + | ||
380 | + return $this->toUtf8($curso['nm_curso'], array('transform' => true)); | ||
381 | + } | ||
382 | + | ||
383 | + protected function loadSerieNome($id) { | ||
384 | + $serie = new clsPmieducarSerie(); | ||
385 | + $serie->cod_serie = $id; | ||
386 | + $serie = $serie->detalhe(); | ||
387 | + | ||
388 | + return $this->toUtf8($serie['nm_serie'], array('transform' => true)); | ||
389 | + } | ||
390 | + | ||
391 | + protected function loadTransferenciaDataEntrada($matriculaId) { | ||
392 | + $sql = "select to_char(data_transferencia, 'DD/MM/YYYY') from | ||
393 | + pmieducar.transferencia_solicitacao where ref_cod_matricula_entrada = $1 and ativo = 1"; | ||
394 | + | ||
395 | + return Portabilis_Utils_Database::selectField($sql, $matriculaId); | ||
396 | + } | ||
397 | + | ||
398 | + protected function loadTransferenciaDataSaida($matriculaId) { | ||
399 | + $sql = "select to_char(data_transferencia, 'DD/MM/YYYY') from | ||
400 | + pmieducar.transferencia_solicitacao where ref_cod_matricula_saida = $1 and ativo = 1"; | ||
401 | + | ||
402 | + return Portabilis_Utils_Database::selectField($sql, $matriculaId); | ||
403 | + } | ||
404 | + | ||
405 | + protected function possuiTransferenciaEmAberto($matriculaId) { | ||
406 | + $sql = "select count(cod_transferencia_solicitacao) from pmieducar.transferencia_solicitacao where | ||
407 | + ativo = 1 and ref_cod_matricula_saida = $1 and ref_cod_matricula_entrada is null and | ||
408 | + data_transferencia is null"; | ||
409 | + | ||
410 | + return (Portabilis_Utils_Database::selectField($sql, $matriculaId) > 0); | ||
411 | + } | ||
412 | + | ||
413 | + protected function loadTipoOcorrenciaDisciplinar($id) { | ||
414 | + if (! isset($this->_tiposOcorrenciasDisciplinares)) | ||
415 | + $this->_tiposOcorrenciasDisciplinares = array(); | ||
416 | + | ||
417 | + if (! isset($this->_tiposOcorrenciasDisciplinares[$id])) { | ||
418 | + $ocorrencia = new clsPmieducarTipoOcorrenciaDisciplinar; | ||
419 | + $ocorrencia->cod_tipo_ocorrencia_disciplinar = $id; | ||
420 | + $ocorrencia = $ocorrencia->detalhe(); | ||
421 | + | ||
422 | + $this->_tiposOcorrenciasDisciplinares[$id] = $this->toUtf8( | ||
423 | + $ocorrencia['nm_tipo'], | ||
424 | + array('transform' => true) | ||
425 | + ); | ||
426 | + | ||
427 | + } | ||
428 | + | ||
429 | + return $this->_tiposOcorrenciasDisciplinares[$id]; | ||
430 | + } | ||
431 | + | ||
432 | + | ||
433 | + protected function loadOcorrenciasDisciplinares() { | ||
434 | + $ocorrenciasAluno = array(); | ||
435 | + | ||
436 | + $sql = "select cod_matricula as id from pmieducar.matricula, pmieducar.escola where | ||
437 | + cod_escola = ref_ref_cod_escola and ref_cod_aluno = $1 and ref_ref_cod_escola = | ||
438 | + $2 and matricula.ativo = 1 order by ano desc, id"; | ||
439 | + | ||
440 | + $params = array($this->getRequest()->aluno_id, $this->getRequest()->escola_id); | ||
441 | + $matriculas = $this->fetchPreparedQuery($sql, $params); | ||
442 | + | ||
443 | + $_ocorrenciasMatricula = new clsPmieducarMatriculaOcorrenciaDisciplinar(); | ||
444 | + | ||
445 | + foreach($matriculas as $matricula) { | ||
446 | + $ocorrenciasMatricula = $_ocorrenciasMatricula->lista($matricula['id'], | ||
447 | + null, | ||
448 | + null, | ||
449 | + null, | ||
450 | + null, | ||
451 | + null, | ||
452 | + null, | ||
453 | + null, | ||
454 | + null, | ||
455 | + null, | ||
456 | + 1, | ||
457 | + $visivel_pais = 1); | ||
458 | + | ||
459 | + if (is_array($ocorrenciasMatricula)) { | ||
460 | + $attrsFilter = array('ref_cod_tipo_ocorrencia_disciplinar' => 'tipo', | ||
461 | + 'data_cadastro' => 'data_hora', | ||
462 | + 'observacao' => 'descricao'); | ||
463 | + | ||
464 | + $ocorrenciasMatricula = Portabilis_Array_Utils::filterSet($ocorrenciasMatricula, $attrsFilter); | ||
465 | + | ||
466 | + foreach($ocorrenciasMatricula as $ocorrenciaMatricula) { | ||
467 | + $ocorrenciaMatricula['tipo'] = $this->loadTipoOcorrenciaDisciplinar($ocorrenciaMatricula['tipo']); | ||
468 | + $ocorrenciaMatricula['data_hora'] = Portabilis_Date_Utils::pgSQLToBr($ocorrenciaMatricula['data_hora']); | ||
469 | + $ocorrenciaMatricula['descricao'] = $this->toUtf8($ocorrenciaMatricula['descricao']); | ||
470 | + $ocorrenciasAluno[] = $ocorrenciaMatricula; | ||
471 | + } | ||
472 | + } | ||
473 | + } | ||
474 | + | ||
475 | + return array('ocorrencias_disciplinares' => $ocorrenciasAluno); | ||
476 | + } | ||
477 | + | ||
478 | + // search options | ||
479 | + | ||
480 | + protected function searchOptions() { | ||
481 | + return array('sqlParams' => array($this->getRequest()->escola_id), | ||
482 | + 'selectFields' => array('matricula_id')); | ||
483 | + } | ||
484 | + | ||
485 | + protected function sqlsForNumericSearch() { | ||
486 | + $sqls = array(); | ||
487 | + | ||
488 | + // caso nao receba id da escola, pesquisa por codigo aluno em todas as escolas | ||
489 | + if (! $this->getRequest()->escola_id) { | ||
490 | + $sqls[] = "select distinct aluno.cod_aluno as id, pessoa.nome as name from | ||
491 | + pmieducar.aluno, cadastro.pessoa where pessoa.idpes = aluno.ref_idpes | ||
492 | + and aluno.ativo = 1 and aluno.cod_aluno like $1||'%' and $2 = $2 order by cod_aluno limit 15"; | ||
493 | + } | ||
494 | + | ||
495 | + // seleciona por (codigo matricula ou codigo aluno) e/ou codigo escola | ||
496 | + $sqls[] = "select * from (select distinct ON (aluno.cod_aluno) aluno.cod_aluno as id, | ||
497 | + matricula.cod_matricula as matricula_id, pessoa.nome as name from pmieducar.matricula, | ||
498 | + pmieducar.aluno, cadastro.pessoa where aluno.cod_aluno = matricula.ref_cod_aluno and | ||
499 | + pessoa.idpes = aluno.ref_idpes and aluno.ativo = matricula.ativo and | ||
500 | + matricula.ativo = 1 and | ||
501 | + (select case when $2 != 0 then matricula.ref_ref_cod_escola = $2 else 1=1 end) and | ||
502 | + (matricula.cod_matricula like $1||'%' or matricula.ref_cod_aluno like $1||'%') and | ||
503 | + matricula.aprovado in (1, 2, 3, 7, 8, 9) limit 15) as alunos order by id"; | ||
504 | + | ||
505 | + return $sqls; | ||
506 | + } | ||
507 | + | ||
508 | + | ||
509 | + protected function sqlsForStringSearch() { | ||
510 | + $sqls = array(); | ||
511 | + | ||
512 | + // caso nao receba id da escola, pesquisa por codigo aluno em todas as escolas | ||
513 | + if (! $this->getRequest()->escola_id) { | ||
514 | + $sqls[] = "select distinct aluno.cod_aluno as id, | ||
515 | + pessoa.nome as name from pmieducar.aluno, cadastro.pessoa where | ||
516 | + pessoa.idpes = aluno.ref_idpes and aluno.ativo = 1 and | ||
517 | + lower(to_ascii(pessoa.nome)) like lower(to_ascii($1))||'%' and $2 = $2 | ||
518 | + order by nome limit 15"; | ||
519 | + } | ||
520 | + | ||
521 | + // seleciona por nome aluno e/ou codigo escola | ||
522 | + $sqls[] = "select * from(select distinct ON (aluno.cod_aluno) aluno.cod_aluno as id, | ||
523 | + matricula.cod_matricula as matricula_id, pessoa.nome as name from pmieducar.matricula, | ||
524 | + pmieducar.aluno, cadastro.pessoa where aluno.cod_aluno = matricula.ref_cod_aluno and | ||
525 | + pessoa.idpes = aluno.ref_idpes and aluno.ativo = matricula.ativo and | ||
526 | + matricula.ativo = 1 and (select case when $2 != 0 then matricula.ref_ref_cod_escola = $2 | ||
527 | + else 1=1 end) and | ||
528 | + lower(to_ascii(pessoa.nome)) like lower(to_ascii($1))||'%' and matricula.aprovado in | ||
529 | + (1, 2, 3, 7, 8, 9) limit 15) as alunos order by name"; | ||
530 | + | ||
531 | + return $sqls; | ||
532 | + } | ||
533 | + | ||
534 | + // api | ||
535 | + | ||
536 | + protected function tipoResponsavel($aluno) { | ||
537 | + $tipos = array('p' => 'pai', 'm' => 'mae', 'r' => 'outra_pessoa'); | ||
538 | + $tipo = $tipos[$aluno['tipo_responsavel']]; | ||
539 | + | ||
540 | + // no antigo cadastro de aluno, caso não fosse encontrado um tipo de responsavel | ||
541 | + // verificava se a pessoa possua responsavel, pai ou mãe, considerando como | ||
542 | + // responsavel um destes, na respectiva ordem, sendo assim esta api mantem | ||
543 | + // compatibilidade com o antigo cadastro. | ||
544 | + if (! $tipo) { | ||
545 | + $pessoa = new clsFisica(); | ||
546 | + $pessoa->idpes = $aluno['pessoa_id']; | ||
547 | + $pessoa = $pessoa->detalhe(); | ||
548 | + | ||
549 | + if ($pessoa['idpes_responsavel'] || $pessoa['nome_responsavel']) | ||
550 | + $tipo = $tipos['r']; | ||
551 | + elseif ($pessoa['idpes_pai'] || $pessoa['nome_pai']) | ||
552 | + $tipo = $tipos['p']; | ||
553 | + elseif ($pessoa['idpes_mae'] || $pessoa['nome_mae']) | ||
554 | + $tipo = $tipos['m']; | ||
555 | + } | ||
556 | + | ||
557 | + return $tipo; | ||
558 | + } | ||
559 | + | ||
560 | + protected function get() { | ||
561 | + if ($this->canGet()) { | ||
562 | + $id = $this->getRequest()->id; | ||
563 | + | ||
564 | + $aluno = new clsPmieducarAluno(); | ||
565 | + $aluno->cod_aluno = $id; | ||
566 | + $aluno = $aluno->detalhe(); | ||
567 | + | ||
568 | + $attrs = array( | ||
569 | + 'cod_aluno' => 'id', | ||
570 | + 'ref_cod_aluno_beneficio' => 'beneficio_id', | ||
571 | + 'ref_cod_religiao' => 'religiao_id', | ||
572 | + 'ref_idpes' => 'pessoa_id', | ||
573 | + 'tipo_responsavel' => 'tipo_responsavel', | ||
574 | + 'ref_usuario_exc' => 'destroyed_by', | ||
575 | + 'data_exclusao' => 'destroyed_at', | ||
576 | + 'analfabeto', | ||
577 | + 'ativo', | ||
578 | + 'aluno_estado_id' | ||
579 | + ); | ||
580 | + | ||
581 | + $aluno = Portabilis_Array_Utils::filter($aluno, $attrs); | ||
582 | + | ||
583 | + $aluno['nome'] = $this->loadNomeAluno($id); | ||
584 | + $aluno['tipo_transporte'] = $this->loadTransporte($id); | ||
585 | + $aluno['tipo_responsavel'] = $this->tipoResponsavel($aluno); | ||
586 | + $aluno['aluno_inep_id'] = $this->loadAlunoInepId($id); | ||
587 | + $aluno['ativo'] = $aluno['ativo'] == 1; | ||
588 | + | ||
589 | + $aluno['alfabetizado'] = $aluno['analfabeto'] == 0; | ||
590 | + unset($aluno['analfabeto']); | ||
591 | + | ||
592 | + // destroyed_by username | ||
593 | + $dataMapper = $this->getDataMapperFor('usuario', 'funcionario'); | ||
594 | + $entity = $this->tryGetEntityOf($dataMapper, $aluno['destroyed_by']); | ||
595 | + $aluno['destroyed_by'] = is_null($entity) ? null : $entity->get('matricula'); | ||
596 | + | ||
597 | + $aluno['destroyed_at'] = Portabilis_Date_Utils::pgSQLToBr($aluno['destroyed_at']); | ||
598 | + | ||
599 | + return $aluno; | ||
600 | + } | ||
601 | + } | ||
602 | + | ||
603 | + protected function getMatriculas() { | ||
604 | + if ($this->canGetMatriculas()) { | ||
605 | + $matriculas = new clsPmieducarMatricula(); | ||
606 | + $matriculas->setOrderby('ano DESC, ref_ref_cod_serie DESC, cod_matricula DESC, aprovado'); | ||
607 | + | ||
608 | + $matriculas = $matriculas->lista( | ||
609 | + null, | ||
610 | + null, | ||
611 | + null, | ||
612 | + null, | ||
613 | + null, | ||
614 | + null, | ||
615 | + $this->getRequest()->aluno_id, | ||
616 | + null, | ||
617 | + null, | ||
618 | + null, | ||
619 | + null, | ||
620 | + null, | ||
621 | + 1 | ||
622 | + ); | ||
623 | + | ||
624 | + $attrs = array( | ||
625 | + 'cod_matricula' => 'id', | ||
626 | + 'ref_cod_instituicao' => 'instituicao_id', | ||
627 | + 'ref_ref_cod_escola' => 'escola_id', | ||
628 | + 'ref_cod_curso' => 'curso_id', | ||
629 | + 'ref_ref_cod_serie' => 'serie_id', | ||
630 | + 'ref_cod_aluno' => 'aluno_id', | ||
631 | + 'nome' => 'aluno_nome', | ||
632 | + 'aprovado' => 'situacao', | ||
633 | + 'ano' | ||
634 | + ); | ||
635 | + | ||
636 | + $matriculas = Portabilis_Array_Utils::filterSet($matriculas, $attrs); | ||
637 | + | ||
638 | + foreach ($matriculas as $index => $matricula) { | ||
639 | + $turma = $this->loadTurmaByMatriculaId($matricula['id']); | ||
640 | + | ||
641 | + $matriculas[$index]['aluno_nome'] = $this->toUtf8($matricula['aluno_nome'], array('transform' => true)); | ||
642 | + $matriculas[$index]['turma_id'] = $turma['id']; | ||
643 | + $matriculas[$index]['turma_nome'] = $turma['nome']; | ||
644 | + $matriculas[$index]['escola_nome'] = $this->loadEscolaNome($matricula['escola_id']); | ||
645 | + $matriculas[$index]['curso_nome'] = $this->loadCursoNome($matricula['curso_id']); | ||
646 | + $matriculas[$index]['serie_nome'] = $this->loadSerieNome($matricula['serie_id']); | ||
647 | + | ||
648 | + $matriculas[$index]['data_entrada'] = $this->loadTransferenciaDataEntrada($matricula['id']); | ||
649 | + $matriculas[$index]['data_saida'] = $this->loadTransferenciaDataSaida($matricula['id']); | ||
650 | + | ||
651 | + $matriculas[$index]['situacao'] = App_Model_MatriculaSituacao::getInstance()->getValue( | ||
652 | + $matricula['situacao'] | ||
653 | + ); | ||
654 | + | ||
655 | + $matriculas[$index]['user_can_access'] = Portabilis_Utils_User::canAccessEscola($matricula['escola_id']); | ||
656 | + $matriculas[$index]['transferencia_em_aberto'] = $this->possuiTransferenciaEmAberto($matricula['id']); | ||
657 | + } | ||
658 | + | ||
659 | + return array('matriculas' => $matriculas); | ||
660 | + } | ||
661 | + } | ||
662 | + | ||
663 | + protected function getOcorrenciasDisciplinares() { | ||
664 | + if ($this->canGetOcorrenciasDisciplinares()) | ||
665 | + return $this->loadOcorrenciasDisciplinares(); | ||
666 | + } | ||
667 | + | ||
668 | + protected function post() { | ||
669 | + if ($this->canPost()) { | ||
670 | + $id = $this->createOrUpdateAluno(); | ||
671 | + | ||
672 | + if (is_numeric($id)) { | ||
673 | + $this->updateResponsavel(); | ||
674 | + $this->createOrUpdateTransporte($id); | ||
675 | + $this->createUpdateOrDestroyEducacensoAluno($id); | ||
676 | + $this->updateDeficiencias(); | ||
677 | + | ||
678 | + $this->messenger->append('Cadastrado realizado com sucesso', 'success', false, 'error'); | ||
679 | + } | ||
680 | + else | ||
681 | + $this->messenger->append('Aparentemente o aluno não pode ser cadastrado, por favor, verifique.'); | ||
682 | + } | ||
683 | + | ||
684 | + return array('id' => $id); | ||
685 | + } | ||
686 | + | ||
687 | + protected function put() { | ||
688 | + $id = $this->getRequest()->id; | ||
689 | + | ||
690 | + if ($this->canPut() && $this->createOrUpdateAluno($id)) { | ||
691 | + $this->updateResponsavel(); | ||
692 | + $this->createOrUpdateTransporte($id); | ||
693 | + $this->createUpdateOrDestroyEducacensoAluno($id); | ||
694 | + $this->updateDeficiencias(); | ||
695 | + | ||
696 | + $this->messenger->append('Cadastro alterado com sucesso', 'success', false, 'error'); | ||
697 | + } | ||
698 | + else | ||
699 | + $this->messenger->append('Aparentemente o cadastro não pode ser alterado, por favor, verifique.', | ||
700 | + 'error', false, 'error'); | ||
701 | + | ||
702 | + return array('id' => $id); | ||
703 | + } | ||
704 | + | ||
705 | + | ||
706 | + protected function enable() { | ||
707 | + $id = $this->getRequest()->id; | ||
708 | + | ||
709 | + if ($this->canEnable()) { | ||
710 | + $aluno = new clsPmieducarAluno(); | ||
711 | + $aluno->cod_aluno = $id; | ||
712 | + $aluno->ref_usuario_exc = $this->getSession()->id_pessoa; | ||
713 | + $aluno->ativo = 1; | ||
714 | + | ||
715 | + if($aluno->edita()) | ||
716 | + $this->messenger->append('Cadastro ativado com sucesso', 'success', false, 'error'); | ||
717 | + else | ||
718 | + $this->messenger->append('Aparentemente o cadastro não pode ser ativado, por favor, verifique.', | ||
719 | + 'error', false, 'error'); | ||
720 | + } | ||
721 | + | ||
722 | + return array('id' => $id); | ||
723 | + } | ||
724 | + | ||
725 | + protected function delete() { | ||
726 | + $id = $this->getRequest()->id; | ||
727 | + | ||
728 | + if ($this->canDelete()) { | ||
729 | + $aluno = new clsPmieducarAluno(); | ||
730 | + $aluno->cod_aluno = $id; | ||
731 | + $aluno->ref_usuario_exc = $this->getSession()->id_pessoa; | ||
732 | + | ||
733 | + if($aluno->excluir()) | ||
734 | + $this->messenger->append('Cadastro removido com sucesso', 'success', false, 'error'); | ||
735 | + else | ||
736 | + $this->messenger->append('Aparentemente o cadastro não pode ser removido, por favor, verifique.', | ||
737 | + 'error', false, 'error'); | ||
738 | + } | ||
739 | + | ||
740 | + return array('id' => $id); | ||
741 | + } | ||
742 | + | ||
743 | + | ||
744 | + public function Gerar() { | ||
745 | + if ($this->isRequestFor('get', 'aluno')) | ||
746 | + $this->appendResponse($this->get()); | ||
747 | + | ||
748 | + elseif ($this->isRequestFor('get', 'aluno-search')) | ||
749 | + $this->appendResponse($this->search()); | ||
750 | + | ||
751 | + elseif ($this->isRequestFor('get', 'matriculas')) | ||
752 | + $this->appendResponse($this->getMatriculas()); | ||
753 | + | ||
754 | + elseif ($this->isRequestFor('get', 'ocorrencias_disciplinares')) | ||
755 | + $this->appendResponse($this->getOcorrenciasDisciplinares()); | ||
756 | + | ||
757 | + // create | ||
758 | + elseif ($this->isRequestFor('post', 'aluno')) | ||
759 | + $this->appendResponse($this->post()); | ||
760 | + | ||
761 | + // update | ||
762 | + elseif ($this->isRequestFor('put', 'aluno')) | ||
763 | + $this->appendResponse($this->put()); | ||
764 | + | ||
765 | + elseif ($this->isRequestFor('enable', 'aluno')) | ||
766 | + $this->appendResponse($this->enable()); | ||
767 | + | ||
768 | + elseif ($this->isRequestFor('delete', 'aluno')) | ||
769 | + $this->appendResponse($this->delete()); | ||
770 | + | ||
771 | + else | ||
772 | + $this->notImplementedOperationError(); | ||
773 | + } | ||
774 | +} |
ieducar/modules/Api/Views/ComponenteCurricularController.php
0 → 100644
@@ -0,0 +1,64 @@ | @@ -0,0 +1,64 @@ | ||
1 | +<?php | ||
2 | + | ||
3 | +#error_reporting(E_ALL); | ||
4 | +#ini_set("display_errors", 1); | ||
5 | + | ||
6 | +/** | ||
7 | + * i-Educar - Sistema de gestão escolar | ||
8 | + * | ||
9 | + * Copyright (C) 2006 Prefeitura Municipal de Itajaí | ||
10 | + * <ctima@itajai.sc.gov.br> | ||
11 | + * | ||
12 | + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo | ||
13 | + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free | ||
14 | + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) | ||
15 | + * qualquer versão posterior. | ||
16 | + * | ||
17 | + * Este programa é distribuído na expectativa de que seja útil, porém, SEM | ||
18 | + * NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU | ||
19 | + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral | ||
20 | + * do GNU para mais detalhes. | ||
21 | + * | ||
22 | + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto | ||
23 | + * com este programa; se não, escreva para a Free Software Foundation, Inc., no | ||
24 | + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | ||
25 | + * | ||
26 | + * @author Lucas D'Avila <lucasdavila@portabilis.com.br> | ||
27 | + * @category i-Educar | ||
28 | + * @license @@license@@ | ||
29 | + * @package Api | ||
30 | + * @subpackage Modules | ||
31 | + * @since Arquivo disponível desde a versão ? | ||
32 | + * @version $Id$ | ||
33 | + */ | ||
34 | + | ||
35 | +require_once 'lib/Portabilis/Controller/ApiCoreController.php'; | ||
36 | +require_once 'lib/Portabilis/Array/Utils.php'; | ||
37 | +require_once 'lib/Portabilis/String/Utils.php'; | ||
38 | + | ||
39 | +class ComponenteCurricularController extends ApiCoreController | ||
40 | +{ | ||
41 | + // search options | ||
42 | + | ||
43 | + protected function searchOptions() { | ||
44 | + return array('namespace' => 'modules', 'idAttr' => 'id'); | ||
45 | + } | ||
46 | + | ||
47 | + // subescreve para pesquisar %query%, e nao query% como por padrão | ||
48 | + protected function sqlsForStringSearch() { | ||
49 | + return "select distinct id, nome as name from modules.componente_curricular | ||
50 | + where lower(to_ascii(nome)) like '%'||lower(to_ascii($1))||'%' order by nome limit 15"; | ||
51 | + } | ||
52 | + | ||
53 | + // subscreve formatResourceValue para não adicionar 'id -' a frente do resultado | ||
54 | + protected function formatResourceValue($resource) { | ||
55 | + return $this->toUtf8(mb_strtoupper($resource['name'])); | ||
56 | + } | ||
57 | + | ||
58 | + public function Gerar() { | ||
59 | + if ($this->isRequestFor('get', 'componente_curricular-search')) | ||
60 | + $this->appendResponse($this->search()); | ||
61 | + else | ||
62 | + $this->notImplementedOperationError(); | ||
63 | + } | ||
64 | +} |
@@ -0,0 +1,57 @@ | @@ -0,0 +1,57 @@ | ||
1 | +<?php | ||
2 | + | ||
3 | +#error_reporting(E_ALL); | ||
4 | +#ini_set("display_errors", 1); | ||
5 | + | ||
6 | +/** | ||
7 | + * i-Educar - Sistema de gestão escolar | ||
8 | + * | ||
9 | + * Copyright (C) 2006 Prefeitura Municipal de Itajaí | ||
10 | + * <ctima@itajai.sc.gov.br> | ||
11 | + * | ||
12 | + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo | ||
13 | + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free | ||
14 | + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) | ||
15 | + * qualquer versão posterior. | ||
16 | + * | ||
17 | + * Este programa é distribuído na expectativa de que seja útil, porém, SEM | ||
18 | + * NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU | ||
19 | + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral | ||
20 | + * do GNU para mais detalhes. | ||
21 | + * | ||
22 | + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto | ||
23 | + * com este programa; se não, escreva para a Free Software Foundation, Inc., no | ||
24 | + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | ||
25 | + * | ||
26 | + * @author Lucas D'Avila <lucasdavila@portabilis.com.br> | ||
27 | + * @category i-Educar | ||
28 | + * @license @@license@@ | ||
29 | + * @package Api | ||
30 | + * @subpackage Modules | ||
31 | + * @since Arquivo disponível desde a versão ? | ||
32 | + * @version $Id$ | ||
33 | + */ | ||
34 | + | ||
35 | +require_once 'lib/Portabilis/Controller/ApiCoreController.php'; | ||
36 | +require_once 'lib/Portabilis/Array/Utils.php'; | ||
37 | +require_once 'lib/Portabilis/String/Utils.php'; | ||
38 | + | ||
39 | +class DeficienciaController extends ApiCoreController | ||
40 | +{ | ||
41 | + // search options | ||
42 | + | ||
43 | + protected function searchOptions() { | ||
44 | + return array('namespace' => 'cadastro', 'labelAttr' => 'nm_deficiencia', 'idAttr' => 'cod_deficiencia'); | ||
45 | + } | ||
46 | + | ||
47 | + protected function formatResourceValue($resource) { | ||
48 | + return $this->toUtf8($resource['name'], array('transform' => true)); | ||
49 | + } | ||
50 | + | ||
51 | + public function Gerar() { | ||
52 | + if ($this->isRequestFor('get', 'deficiencia-search')) | ||
53 | + $this->appendResponse($this->search()); | ||
54 | + else | ||
55 | + $this->notImplementedOperationError(); | ||
56 | + } | ||
57 | +} |
@@ -0,0 +1,118 @@ | @@ -0,0 +1,118 @@ | ||
1 | +<?php | ||
2 | + | ||
3 | +#error_reporting(E_ALL); | ||
4 | +#ini_set("display_errors", 1); | ||
5 | + | ||
6 | +/** | ||
7 | + * i-Educar - Sistema de gestão escolar | ||
8 | + * | ||
9 | + * Copyright (C) 2006 Prefeitura Municipal de Itajaí | ||
10 | + * <ctima@itajai.sc.gov.br> | ||
11 | + * | ||
12 | + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo | ||
13 | + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free | ||
14 | + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) | ||
15 | + * qualquer versão posterior. | ||
16 | + * | ||
17 | + * Este programa é distribuído na expectativa de que seja útil, porém, SEM | ||
18 | + * NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU | ||
19 | + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral | ||
20 | + * do GNU para mais detalhes. | ||
21 | + * | ||
22 | + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto | ||
23 | + * com este programa; se não, escreva para a Free Software Foundation, Inc., no | ||
24 | + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | ||
25 | + * | ||
26 | + * @author Lucas D'Avila <lucasdavila@portabilis.com.br> | ||
27 | + * @category i-Educar | ||
28 | + * @license @@license@@ | ||
29 | + * @package Api | ||
30 | + * @subpackage Modules | ||
31 | + * @since Arquivo disponível desde a versão ? | ||
32 | + * @version $Id$ | ||
33 | + */ | ||
34 | + | ||
35 | +require_once 'lib/Portabilis/Controller/ApiCoreController.php'; | ||
36 | + | ||
37 | +class EscolaController extends ApiCoreController | ||
38 | +{ | ||
39 | + protected $_processoAp = 561; | ||
40 | + protected $_nivelAcessoOption = App_Model_NivelAcesso::SOMENTE_ESCOLA; | ||
41 | + | ||
42 | + | ||
43 | + protected function canChange() { | ||
44 | + return true; | ||
45 | + } | ||
46 | + | ||
47 | + protected function loadEscolaInepId($escolaId) { | ||
48 | + $dataMapper = $this->getDataMapperFor('educacenso', 'escola'); | ||
49 | + $entity = $this->tryGetEntityOf($dataMapper, $escolaId); | ||
50 | + | ||
51 | + return (is_null($entity) ? null : $entity->get('escolaInep')); | ||
52 | + } | ||
53 | + | ||
54 | + | ||
55 | + protected function createUpdateOrDestroyEducacensoEscola($escolaId) { | ||
56 | + $dataMapper = $this->getDataMapperFor('educacenso', 'escola'); | ||
57 | + | ||
58 | + if (empty($this->getRequest()->escola_inep_id)) | ||
59 | + $result = $this->deleteEntityOf($dataMapper, $escolaId); | ||
60 | + else { | ||
61 | + $data = array( | ||
62 | + 'escola' => $escolaId, | ||
63 | + 'escolaInep' => $this->getRequest()->escola_inep_id, | ||
64 | + | ||
65 | + // campos deprecados? | ||
66 | + 'fonte' => 'fonte', | ||
67 | + 'nomeInep' => '-', | ||
68 | + | ||
69 | + // always setting now... | ||
70 | + 'created_at' => 'NOW()', | ||
71 | + ); | ||
72 | + | ||
73 | + $entity = $this->getOrCreateEntityOf($dataMapper, $escolaId); | ||
74 | + $entity->setOptions($data); | ||
75 | + | ||
76 | + $result = $this->saveEntity($dataMapper, $entity); | ||
77 | + } | ||
78 | + | ||
79 | + return $result; | ||
80 | + } | ||
81 | + | ||
82 | + protected function get() { | ||
83 | + if ($this->canGet()) { | ||
84 | + $id = $this->getRequest()->id; | ||
85 | + | ||
86 | + $escola = array(); | ||
87 | + $escola['escola_inep_id'] = $this->loadEscolaInepId($id); | ||
88 | + | ||
89 | + return $escola; | ||
90 | + } | ||
91 | + } | ||
92 | + | ||
93 | + protected function put() { | ||
94 | + $id = $this->getRequest()->id; | ||
95 | + | ||
96 | + if ($this->canPut()) { | ||
97 | + $this->createUpdateOrDestroyEducacensoEscola($id); | ||
98 | + | ||
99 | + $this->messenger->append('Cadastro alterado com sucesso', 'success', false, 'error'); | ||
100 | + } | ||
101 | + else | ||
102 | + $this->messenger->append('Aparentemente o cadastro não pode ser alterado, por favor, verifique.', | ||
103 | + 'error', false, 'error'); | ||
104 | + | ||
105 | + return array('id' => $id); | ||
106 | + } | ||
107 | + | ||
108 | + public function Gerar() { | ||
109 | + if ($this->isRequestFor('get', 'escola')) | ||
110 | + $this->appendResponse($this->get()); | ||
111 | + | ||
112 | + elseif ($this->isRequestFor('put', 'escola')) | ||
113 | + $this->appendResponse($this->put()); | ||
114 | + | ||
115 | + else | ||
116 | + $this->notImplementedOperationError(); | ||
117 | + } | ||
118 | +} | ||
0 | \ No newline at end of file | 119 | \ No newline at end of file |
@@ -0,0 +1,199 @@ | @@ -0,0 +1,199 @@ | ||
1 | +<?php | ||
2 | + | ||
3 | +#error_reporting(E_ALL); | ||
4 | +#ini_set("display_errors", 1); | ||
5 | + | ||
6 | +/** | ||
7 | + * i-Educar - Sistema de gestão escolar | ||
8 | + * | ||
9 | + * Copyright (C) 2006 Prefeitura Municipal de Itajaí | ||
10 | + * <ctima@itajai.sc.gov.br> | ||
11 | + * | ||
12 | + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo | ||
13 | + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free | ||
14 | + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) | ||
15 | + * qualquer versão posterior. | ||
16 | + * | ||
17 | + * Este programa é distribuído na expectativa de que seja útil, porém, SEM | ||
18 | + * NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU | ||
19 | + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral | ||
20 | + * do GNU para mais detalhes. | ||
21 | + * | ||
22 | + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto | ||
23 | + * com este programa; se não, escreva para a Free Software Foundation, Inc., no | ||
24 | + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | ||
25 | + * | ||
26 | + * @author Lucas D'Avila <lucasdavila@portabilis.com.br> | ||
27 | + * @category i-Educar | ||
28 | + * @license @@license@@ | ||
29 | + * @package Api | ||
30 | + * @subpackage Modules | ||
31 | + * @since Arquivo disponível desde a versão ? | ||
32 | + * @version $Id$ | ||
33 | + */ | ||
34 | + | ||
35 | +require_once 'lib/Portabilis/Controller/ApiCoreController.php'; | ||
36 | +require_once 'lib/Portabilis/Array/Utils.php'; | ||
37 | +require_once 'lib/Portabilis/String/Utils.php'; | ||
38 | + | ||
39 | +class MatriculaController extends ApiCoreController | ||
40 | +{ | ||
41 | + | ||
42 | + protected function canGetMatriculas() { | ||
43 | + return $this->validatesId('escola') && | ||
44 | + $this->validatesId('aluno'); | ||
45 | + } | ||
46 | + | ||
47 | + // search options | ||
48 | + | ||
49 | + protected function searchOptions() { | ||
50 | + return array('sqlParams' => array($this->getRequest()->escola_id, $this->getRequest()->ano), | ||
51 | + 'selectFields' => array('aluno_id')); | ||
52 | + } | ||
53 | + | ||
54 | + protected function sqlsForNumericSearch() { | ||
55 | + | ||
56 | + return "select distinct ON (aluno.cod_aluno) aluno.cod_aluno as aluno_id, | ||
57 | + matricula.cod_matricula as id, pessoa.nome as name from pmieducar.matricula, | ||
58 | + pmieducar.aluno, cadastro.pessoa where aluno.cod_aluno = matricula.ref_cod_aluno and | ||
59 | + pessoa.idpes = aluno.ref_idpes and aluno.ativo = matricula.ativo and | ||
60 | + matricula.ativo = 1 and matricula.ref_ref_cod_escola = $2 and | ||
61 | + (matricula.cod_matricula like $1 or matricula.ref_cod_aluno like $1) and | ||
62 | + matricula.aprovado in (1, 2, 3, 7, 8, 9) and ano = $3 limit 15"; | ||
63 | + } | ||
64 | + | ||
65 | + | ||
66 | + protected function sqlsForStringSearch() { | ||
67 | + return "select distinct ON (aluno.cod_aluno) aluno.cod_aluno as aluno_id, | ||
68 | + matricula.cod_matricula as id, pessoa.nome as name from pmieducar.matricula, | ||
69 | + pmieducar.aluno, cadastro.pessoa where aluno.cod_aluno = matricula.ref_cod_aluno and | ||
70 | + pessoa.idpes = aluno.ref_idpes and aluno.ativo = matricula.ativo and | ||
71 | + matricula.ativo = 1 and matricula.ref_ref_cod_escola = $2 and | ||
72 | + lower(to_ascii(pessoa.nome)) like lower(to_ascii($1))||'%' and matricula.aprovado in (1, 2, 3, 7, 8, 9) | ||
73 | + and ano = $3 limit 15"; | ||
74 | + } | ||
75 | + | ||
76 | + | ||
77 | + protected function formatResourceValue($resource) { | ||
78 | + $alunoId = $resource['aluno_id']; | ||
79 | + $nome = $this->toUtf8($resource['name'], array('transform' => true)); | ||
80 | + | ||
81 | + return $resource['id'] . " - ($alunoId) $nome"; | ||
82 | + } | ||
83 | + | ||
84 | + | ||
85 | + // load | ||
86 | + | ||
87 | + protected function loadNomeEscola($escolaId) { | ||
88 | + $sql = "select nome from cadastro.pessoa, pmieducar.escola where idpes = ref_idpes and cod_escola = $1"; | ||
89 | + $nome = $this->fetchPreparedQuery($sql, $escolaId, false, 'first-field'); | ||
90 | + | ||
91 | + return $this->safeString($nome); | ||
92 | + } | ||
93 | + | ||
94 | + protected function loadNameFor($resourceName, $id){ | ||
95 | + $sql = "select nm_{$resourceName} from pmieducar.{$resourceName} where cod_{$resourceName} = $1"; | ||
96 | + $nome = $this->fetchPreparedQuery($sql, $id, false, 'first-field'); | ||
97 | + | ||
98 | + return $this->safeString($nome); | ||
99 | + } | ||
100 | + | ||
101 | + protected function loadDadosForMatricula($matriculaId){ | ||
102 | + $sql = "select cod_matricula as id, ref_cod_aluno as aluno_id, matricula.ano, | ||
103 | + escola.ref_cod_instituicao as instituicao_id, matricula.ref_ref_cod_escola | ||
104 | + as escola_id, matricula.ref_cod_curso as curso_id, matricula.ref_ref_cod_serie | ||
105 | + as serie_id, matricula_turma.ref_cod_turma as turma_id from | ||
106 | + pmieducar.matricula_turma, pmieducar.matricula, pmieducar.escola where escola.cod_escola = | ||
107 | + matricula.ref_ref_cod_escola and ref_cod_matricula = cod_matricula and ref_cod_matricula = | ||
108 | + $1 and matricula.ativo = matricula_turma.ativo and matricula_turma.ativo = 1 order by | ||
109 | + matricula_turma.sequencial limit 1"; | ||
110 | + | ||
111 | + $dadosMatricula = $this->fetchPreparedQuery($sql, $matriculaId, false, 'first-row'); | ||
112 | + | ||
113 | + $attrs = array('id', 'aluno_id', 'ano', 'instituicao_id', 'escola_id', | ||
114 | + 'curso_id', 'serie_id', 'turma_id'); | ||
115 | + | ||
116 | + return Portabilis_Array_Utils::filter($dadosMatricula, $attrs); | ||
117 | + } | ||
118 | + | ||
119 | + protected function tryLoadMatriculaTurma($matriculaId) { | ||
120 | + $sql = "select ref_cod_turma as turma_id, turma.tipo_boletim from pmieducar.matricula_turma, | ||
121 | + pmieducar.turma where ref_cod_turma = cod_turma and ref_cod_matricula = $1 and | ||
122 | + matricula_turma.ativo = 1 limit 1"; | ||
123 | + | ||
124 | + $matriculaTurma = $this->fetchPreparedQuery($sql, $matriculaId, false, 'first-row'); | ||
125 | + | ||
126 | + if (is_array($matriculaTurma) and count($matriculaTurma) > 0) { | ||
127 | + $attrs = array('turma_id', 'tipo_boletim'); | ||
128 | + | ||
129 | + $matriculaTurma = Portabilis_Array_Utils::filter($matriculaTurma, $attrs); | ||
130 | + $matriculaTurma['nome_turma'] = $this->loadNameFor('turma', $matriculaTurma['turma_id']); | ||
131 | + } | ||
132 | + | ||
133 | + return $matriculaTurma; | ||
134 | + } | ||
135 | + | ||
136 | + protected function loadMatriculasAluno($alunoId, $escolaId) { | ||
137 | + // #TODO mostrar o nome da situação da matricula | ||
138 | + | ||
139 | + // seleciona somente matriculas em andamento, aprovado, reprovado, em exame, aprovado apos exame e retido faltas | ||
140 | + $sql = "select cod_matricula as id, ano, ref_cod_instituicao as instituicao_id, ref_ref_cod_escola as | ||
141 | + escola_id, ref_cod_curso as curso_id, ref_ref_cod_serie as serie_id from pmieducar.matricula, | ||
142 | + pmieducar.escola where cod_escola = ref_ref_cod_escola and ref_cod_aluno = $1 and ref_ref_cod_escola = | ||
143 | + $2 and matricula.ativo = 1 and matricula.aprovado in (1, 2, 3, 7, 8, 9) order by ano desc, id"; | ||
144 | + | ||
145 | + $params = array($alunoId, $escolaId); | ||
146 | + $matriculas = $this->fetchPreparedQuery($sql, $params, false); | ||
147 | + | ||
148 | + if (is_array($matriculas) && count($matriculas) > 0) { | ||
149 | + $attrs = array('id', 'ano', 'instituicao_id', 'escola_id', 'curso_id', 'serie_id'); | ||
150 | + $matriculas = Portabilis_Array_Utils::filterSet($matriculas, $attrs); | ||
151 | + | ||
152 | + foreach($matriculas as $key => $matricula) { | ||
153 | + $matriculas[$key]['nome_curso'] = $this->loadNameFor('curso', $matricula['curso_id']); | ||
154 | + $matriculas[$key]['nome_escola'] = $this->loadNomeEscola($this->getRequest()->escola_id); | ||
155 | + $matriculas[$key]['nome_serie'] = $this->loadNameFor('serie', $matricula['serie_id']); | ||
156 | + $matriculas[$key]['situacao'] = '#TODO'; | ||
157 | + $turma = $this->tryLoadMatriculaTurma($matricula['id']); | ||
158 | + | ||
159 | + if (is_array($turma) and count($turma) > 0) { | ||
160 | + $matriculas[$key]['turma_id'] = $turma['turma_id']; | ||
161 | + $matriculas[$key]['nome_turma'] = $turma['nome_turma']; | ||
162 | + $matriculas[$key]['report_boletim_template'] = $turma['report_boletim_template']; | ||
163 | + } | ||
164 | + } | ||
165 | + } | ||
166 | + | ||
167 | + return $matriculas; | ||
168 | + } | ||
169 | + | ||
170 | + // api | ||
171 | + | ||
172 | + protected function get() { | ||
173 | + if ($this->canGet()) | ||
174 | + return $this->loadDadosForMatricula($this->getRequest()->id); | ||
175 | + } | ||
176 | + | ||
177 | + | ||
178 | + protected function getMatriculas() { | ||
179 | + if ($this->canGetMatriculas()) { | ||
180 | + $matriculas = $this->loadMatriculasAluno($this->getRequest()->aluno_id, $this->getRequest()->escola_id); | ||
181 | + return array('matriculas' => $matriculas); | ||
182 | + } | ||
183 | + } | ||
184 | + | ||
185 | + | ||
186 | + public function Gerar() { | ||
187 | + if ($this->isRequestFor('get', 'matricula')) | ||
188 | + $this->appendResponse($this->get()); | ||
189 | + | ||
190 | + elseif ($this->isRequestFor('get', 'matriculas')) | ||
191 | + $this->appendResponse($this->getMatriculas()); | ||
192 | + | ||
193 | + elseif ($this->isRequestFor('get', 'matricula-search')) | ||
194 | + $this->appendResponse($this->search()); | ||
195 | + | ||
196 | + else | ||
197 | + $this->notImplementedOperationError(); | ||
198 | + } | ||
199 | +} |
@@ -0,0 +1,62 @@ | @@ -0,0 +1,62 @@ | ||
1 | +<?php | ||
2 | + | ||
3 | +#error_reporting(E_ALL); | ||
4 | +#ini_set("display_errors", 1); | ||
5 | + | ||
6 | +/** | ||
7 | + * i-Educar - Sistema de gestão escolar | ||
8 | + * | ||
9 | + * Copyright (C) 2006 Prefeitura Municipal de Itajaí | ||
10 | + * <ctima@itajai.sc.gov.br> | ||
11 | + * | ||
12 | + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo | ||
13 | + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free | ||
14 | + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) | ||
15 | + * qualquer versão posterior. | ||
16 | + * | ||
17 | + * Este programa é distribuído na expectativa de que seja útil, porém, SEM | ||
18 | + * NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU | ||
19 | + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral | ||
20 | + * do GNU para mais detalhes. | ||
21 | + * | ||
22 | + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto | ||
23 | + * com este programa; se não, escreva para a Free Software Foundation, Inc., no | ||
24 | + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | ||
25 | + * | ||
26 | + * @author Lucas D'Avila <lucasdavila@portabilis.com.br> | ||
27 | + * @category i-Educar | ||
28 | + * @license @@license@@ | ||
29 | + * @package Api | ||
30 | + * @subpackage Modules | ||
31 | + * @since Arquivo disponível desde a versão ? | ||
32 | + * @version $Id$ | ||
33 | + */ | ||
34 | + | ||
35 | +require_once 'lib/Portabilis/Controller/ApiCoreController.php'; | ||
36 | +require_once 'lib/Portabilis/Array/Utils.php'; | ||
37 | +require_once 'lib/Portabilis/String/Utils.php'; | ||
38 | + | ||
39 | +class MunicipioController extends ApiCoreController | ||
40 | +{ | ||
41 | + // search options | ||
42 | + | ||
43 | + protected function searchOptions() { | ||
44 | + return array('namespace' => 'public', 'idAttr' => 'idmun', 'selectFields' => array('sigla_uf')); | ||
45 | + } | ||
46 | + | ||
47 | + // subscreve formatResourceValue para adicionar a sigla do estado ao final do valor, | ||
48 | + // "<id_municipio> - <nome_municipio> (<sigla_uf>)", ex: "1 - Içara (SC)" | ||
49 | + protected function formatResourceValue($resource) { | ||
50 | + $siglaUf = $resource['sigla_uf']; | ||
51 | + $nome = $this->toUtf8($resource['name'], array('transform' => true)); | ||
52 | + | ||
53 | + return $resource['id'] . " - $nome ($siglaUf)"; | ||
54 | + } | ||
55 | + | ||
56 | + public function Gerar() { | ||
57 | + if ($this->isRequestFor('get', 'municipio-search')) | ||
58 | + $this->appendResponse($this->search()); | ||
59 | + else | ||
60 | + $this->notImplementedOperationError(); | ||
61 | + } | ||
62 | +} |
@@ -0,0 +1,53 @@ | @@ -0,0 +1,53 @@ | ||
1 | +<?php | ||
2 | + | ||
3 | +#error_reporting(E_ALL); | ||
4 | +#ini_set("display_errors", 1); | ||
5 | + | ||
6 | +/** | ||
7 | + * i-Educar - Sistema de gestão escolar | ||
8 | + * | ||
9 | + * Copyright (C) 2006 Prefeitura Municipal de Itajaí | ||
10 | + * <ctima@itajai.sc.gov.br> | ||
11 | + * | ||
12 | + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo | ||
13 | + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free | ||
14 | + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) | ||
15 | + * qualquer versão posterior. | ||
16 | + * | ||
17 | + * Este programa é distribuído na expectativa de que seja útil, porém, SEM | ||
18 | + * NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU | ||
19 | + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral | ||
20 | + * do GNU para mais detalhes. | ||
21 | + * | ||
22 | + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto | ||
23 | + * com este programa; se não, escreva para a Free Software Foundation, Inc., no | ||
24 | + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | ||
25 | + * | ||
26 | + * @author Lucas D'Avila <lucasdavila@portabilis.com.br> | ||
27 | + * @category i-Educar | ||
28 | + * @license @@license@@ | ||
29 | + * @package Api | ||
30 | + * @subpackage Modules | ||
31 | + * @since Arquivo disponível desde a versão ? | ||
32 | + * @version $Id$ | ||
33 | + */ | ||
34 | + | ||
35 | +require_once 'lib/Portabilis/Controller/ApiCoreController.php'; | ||
36 | +require_once 'lib/Portabilis/Array/Utils.php'; | ||
37 | +require_once 'lib/Portabilis/String/Utils.php'; | ||
38 | + | ||
39 | +class PaisController extends ApiCoreController | ||
40 | +{ | ||
41 | + // search options | ||
42 | + | ||
43 | + protected function searchOptions() { | ||
44 | + return array('namespace' => 'public', 'idAttr' => 'idpais'); | ||
45 | + } | ||
46 | + | ||
47 | + public function Gerar() { | ||
48 | + if ($this->isRequestFor('get', 'pais-search')) | ||
49 | + $this->appendResponse($this->search()); | ||
50 | + else | ||
51 | + $this->notImplementedOperationError(); | ||
52 | + } | ||
53 | +} |
@@ -0,0 +1,171 @@ | @@ -0,0 +1,171 @@ | ||
1 | +<?php | ||
2 | + | ||
3 | +#error_reporting(E_ALL); | ||
4 | +#ini_set("display_errors", 1); | ||
5 | + | ||
6 | +/** | ||
7 | + * i-Educar - Sistema de gestão escolar | ||
8 | + * | ||
9 | + * Copyright (C) 2006 Prefeitura Municipal de Itajaí | ||
10 | + * <ctima@itajai.sc.gov.br> | ||
11 | + * | ||
12 | + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo | ||
13 | + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free | ||
14 | + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) | ||
15 | + * qualquer versão posterior. | ||
16 | + * | ||
17 | + * Este programa é distribuído na expectativa de que seja útil, porém, SEM | ||
18 | + * NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU | ||
19 | + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral | ||
20 | + * do GNU para mais detalhes. | ||
21 | + * | ||
22 | + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto | ||
23 | + * com este programa; se não, escreva para a Free Software Foundation, Inc., no | ||
24 | + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | ||
25 | + * | ||
26 | + * @author Lucas D'Avila <lucasdavila@portabilis.com.br> | ||
27 | + * @category i-Educar | ||
28 | + * @license @@license@@ | ||
29 | + * @package Api | ||
30 | + * @subpackage Modules | ||
31 | + * @since Arquivo disponível desde a versão ? | ||
32 | + * @version $Id$ | ||
33 | + */ | ||
34 | + | ||
35 | +require_once 'lib/Portabilis/Controller/ApiCoreController.php'; | ||
36 | +require_once 'lib/Portabilis/Array/Utils.php'; | ||
37 | +require_once 'lib/Portabilis/String/Utils.php'; | ||
38 | + | ||
39 | +class PessoaController extends ApiCoreController | ||
40 | +{ | ||
41 | + | ||
42 | + // validators | ||
43 | + | ||
44 | + // overwrite api core validator | ||
45 | + protected function validatesResourceId() { | ||
46 | + $existenceOptions = array('schema_name' => 'cadastro', 'field_name' => 'idpes'); | ||
47 | + | ||
48 | + return $this->validatesPresenceOf('id') && | ||
49 | + $this->validatesExistenceOf('fisica', $this->getRequest()->id, $existenceOptions); | ||
50 | + } | ||
51 | + | ||
52 | + | ||
53 | + // load resources | ||
54 | + | ||
55 | + protected function tryLoadAlunoId($pessoaId) { | ||
56 | + $sql = "select cod_aluno as id from pmieducar.aluno where ref_idpes = $1"; | ||
57 | + $id = $this->fetchPreparedQuery($sql, $pessoaId, false, 'first-field'); | ||
58 | + | ||
59 | + // when not exists, returns an empty array that causes error on loadDetails | ||
60 | + if (empty($id)) | ||
61 | + $id = null; | ||
62 | + | ||
63 | + return $id; | ||
64 | + } | ||
65 | + | ||
66 | + protected function loadPessoa($id = null) { | ||
67 | + $sql = "select idpes as id, nome from cadastro.pessoa where idpes = $1"; | ||
68 | + | ||
69 | + $pessoa = $this->fetchPreparedQuery($sql, $id, false, 'first-row'); | ||
70 | + $pessoa['nome'] = $this->toUtf8($pessoa['nome'], array('transform' => true)); | ||
71 | + | ||
72 | + return $pessoa; | ||
73 | + } | ||
74 | + | ||
75 | + protected function loadDetails($pessoaId = null) { | ||
76 | + $alunoId = $this->tryLoadAlunoId($pessoaId); | ||
77 | + | ||
78 | + $sql = "select cpf, idpes_pai as pai_id, idpes_mae as mae_id, idpes_responsavel as responsavel_id, | ||
79 | + coalesce((select nome from cadastro.pessoa where idpes = fisica.idpes_pai), | ||
80 | + (select nm_pai from pmieducar.aluno where cod_aluno = $1)) as nome_pai, | ||
81 | + coalesce((select nome from cadastro.pessoa where idpes = fisica.idpes_mae), | ||
82 | + (select nm_mae from pmieducar.aluno where cod_aluno = $1)) as nome_mae, | ||
83 | + (select nome from cadastro.pessoa where idpes = fisica.idpes_responsavel) as nome_responsavel, | ||
84 | + (select rg from cadastro.documento where documento.idpes = fisica.idpes) as rg | ||
85 | + from cadastro.fisica where idpes = $2"; | ||
86 | + | ||
87 | + $details = $this->fetchPreparedQuery($sql, array($alunoId, $pessoaId), false, 'first-row'); | ||
88 | + | ||
89 | + $attrs = array('cpf', 'rg', 'pai_id', 'mae_id', 'responsavel_id', 'nome_pai', 'nome_mae', 'nome_responsavel'); | ||
90 | + $details = Portabilis_Array_Utils::filter($details, $attrs); | ||
91 | + | ||
92 | + $details['aluno_id'] = $alunoId; | ||
93 | + $details['nome_mae'] = $this->toUtf8($details['nome_mae'], array('transform' => true)); | ||
94 | + $details['nome_pai'] = $this->toUtf8($details['nome_pai'], array('transform' => true)); | ||
95 | + $details['nome_responsavel'] = $this->toUtf8($details['nome_responsavel'], array('transform' => true)); | ||
96 | + | ||
97 | + return $details; | ||
98 | + } | ||
99 | + | ||
100 | + protected function loadDeficiencias($pessoaId) { | ||
101 | + $sql = "select cod_deficiencia as id, nm_deficiencia as nome from cadastro.fisica_deficiencia, | ||
102 | + cadastro.deficiencia where cod_deficiencia = ref_cod_deficiencia and ref_idpes = $1"; | ||
103 | + | ||
104 | + $deficiencias = $this->fetchPreparedQuery($sql, $pessoaId, false); | ||
105 | + | ||
106 | + // transforma array de arrays em array chave valor | ||
107 | + $_deficiencias = array(); | ||
108 | + | ||
109 | + foreach ($deficiencias as $deficiencia) { | ||
110 | + $nome = $this->toUtf8($deficiencia['nome'], array('transform' => true)); | ||
111 | + $_deficiencias[$deficiencia['id']] = $nome; | ||
112 | + } | ||
113 | + | ||
114 | + return $_deficiencias; | ||
115 | + } | ||
116 | + | ||
117 | + | ||
118 | + // search | ||
119 | + | ||
120 | + protected function searchOptions() { | ||
121 | + return array('namespace' => 'cadastro', 'idAttr' => 'idpes'); | ||
122 | + } | ||
123 | + | ||
124 | + protected function sqlsForNumericSearch() { | ||
125 | + $sqls = array(); | ||
126 | + | ||
127 | + // search by idpes or cpf | ||
128 | + $sqls[] = "select distinct pessoa.idpes as id, pessoa.nome as name from cadastro.pessoa, | ||
129 | + cadastro.fisica where fisica.idpes = pessoa.idpes and (pessoa.idpes like $1||'%' or | ||
130 | + trim(leading '0' from fisica.cpf) like trim(leading '0' from $1)||'%' or | ||
131 | + fisica.cpf like $1||'%') order by id limit 15"; | ||
132 | + | ||
133 | + // search by rg | ||
134 | + $sqls[] = "select distinct pessoa.idpes as id, pessoa.nome as name from cadastro.pessoa, cadastro.documento | ||
135 | + where pessoa.idpes = documento.idpes and ((documento.rg like $1||'%') or | ||
136 | + trim(leading '0' from documento.rg) like trim(leading '0' from $1)||'%') order by id limit 15"; | ||
137 | + | ||
138 | + return $sqls; | ||
139 | + } | ||
140 | + | ||
141 | + // api responders | ||
142 | + | ||
143 | + protected function get() { | ||
144 | + $pessoa = array(); | ||
145 | + | ||
146 | + if ($this->canGet()) { | ||
147 | + $attrs = array('id', 'nome'); | ||
148 | + | ||
149 | + $pessoa = $this->loadPessoa($this->getRequest()->id); | ||
150 | + $pessoa = Portabilis_Array_Utils::filter($pessoa, $attrs); | ||
151 | + | ||
152 | + $details = $this->loadDetails($this->getRequest()->id); | ||
153 | + $pessoa = Portabilis_Array_Utils::merge($pessoa, $details); | ||
154 | + | ||
155 | + $pessoa['deficiencias'] = $this->loadDeficiencias($this->getRequest()->id); | ||
156 | + } | ||
157 | + | ||
158 | + return $pessoa; | ||
159 | + } | ||
160 | + | ||
161 | + | ||
162 | + public function Gerar() { | ||
163 | + if ($this->isRequestFor('get', 'pessoa-search')) | ||
164 | + $this->appendResponse($this->search()); | ||
165 | + | ||
166 | + elseif ($this->isRequestFor('get', 'pessoa')) | ||
167 | + $this->appendResponse($this->get()); | ||
168 | + else | ||
169 | + $this->notImplementedOperationError(); | ||
170 | + } | ||
171 | +} |
@@ -0,0 +1,102 @@ | @@ -0,0 +1,102 @@ | ||
1 | +<?php | ||
2 | + | ||
3 | +#error_reporting(E_ALL); | ||
4 | +#ini_set("display_errors", 1); | ||
5 | + | ||
6 | +/** | ||
7 | + * i-Educar - Sistema de gestão escolar | ||
8 | + * | ||
9 | + * Copyright (C) 2006 Prefeitura Municipal de Itajaí | ||
10 | + * <ctima@itajai.sc.gov.br> | ||
11 | + * | ||
12 | + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo | ||
13 | + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free | ||
14 | + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) | ||
15 | + * qualquer versão posterior. | ||
16 | + * | ||
17 | + * Este programa é distribuído na expectativa de que seja útil, porém, SEM | ||
18 | + * NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU | ||
19 | + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral | ||
20 | + * do GNU para mais detalhes. | ||
21 | + * | ||
22 | + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto | ||
23 | + * com este programa; se não, escreva para a Free Software Foundation, Inc., no | ||
24 | + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | ||
25 | + * | ||
26 | + * @author Lucas D'Avila <lucasdavila@portabilis.com.br> | ||
27 | + * @category i-Educar | ||
28 | + * @license @@license@@ | ||
29 | + * @package Api | ||
30 | + * @subpackage Modules | ||
31 | + * @since Arquivo disponível desde a versão ? | ||
32 | + * @version $Id$ | ||
33 | + */ | ||
34 | + | ||
35 | +require_once 'lib/Portabilis/Controller/ApiCoreController.php'; | ||
36 | +require_once "Reports/Reports/BoletimReport.php"; | ||
37 | + | ||
38 | +class ReportController extends ApiCoreController | ||
39 | +{ | ||
40 | + | ||
41 | + // validations | ||
42 | + | ||
43 | + protected function canGetBoletim() { | ||
44 | + return $this->validatesId('escola') && | ||
45 | + $this->validatesId('matricula'); | ||
46 | + } | ||
47 | + | ||
48 | + | ||
49 | + // load | ||
50 | + | ||
51 | + protected function loadDadosForMatricula($matriculaId){ | ||
52 | + $sql = "select cod_matricula as id, ref_cod_aluno as aluno_id, matricula.ano, | ||
53 | + escola.ref_cod_instituicao as instituicao_id, matricula.ref_ref_cod_escola | ||
54 | + as escola_id, matricula.ref_cod_curso as curso_id, matricula.ref_ref_cod_serie | ||
55 | + as serie_id, matricula_turma.ref_cod_turma as turma_id from | ||
56 | + pmieducar.matricula_turma, pmieducar.matricula, pmieducar.escola where escola.cod_escola = | ||
57 | + matricula.ref_ref_cod_escola and ref_cod_matricula = cod_matricula and ref_cod_matricula = | ||
58 | + $1 and matricula.ativo = matricula_turma.ativo and matricula_turma.ativo = 1 order by | ||
59 | + matricula_turma.sequencial limit 1"; | ||
60 | + | ||
61 | + $dadosMatricula = $this->fetchPreparedQuery($sql, $matriculaId, false, 'first-row'); | ||
62 | + | ||
63 | + $attrs = array('id', 'aluno_id', 'ano', 'instituicao_id', 'escola_id', | ||
64 | + 'curso_id', 'serie_id', 'turma_id'); | ||
65 | + | ||
66 | + return Portabilis_Array_Utils::filter($dadosMatricula, $attrs); | ||
67 | + } | ||
68 | + | ||
69 | + // api | ||
70 | + | ||
71 | + protected function getBoletim() { | ||
72 | + if ($this->canGetBoletim()) { | ||
73 | + $dadosMatricula = $this->loadDadosForMatricula($this->getRequest()->matricula_id); | ||
74 | + | ||
75 | + $boletimReport = new BoletimReport(); | ||
76 | + | ||
77 | + $boletimReport->addArg('matricula', (int)$dadosMatricula['id']); | ||
78 | + $boletimReport->addArg('ano', (int)$dadosMatricula['ano']); | ||
79 | + $boletimReport->addArg('instituicao', (int)$dadosMatricula['instituicao_id']); | ||
80 | + $boletimReport->addArg('escola', (int)$dadosMatricula['escola_id']); | ||
81 | + $boletimReport->addArg('curso', (int)$dadosMatricula['curso_id']); | ||
82 | + $boletimReport->addArg('serie', (int)$dadosMatricula['serie_id']); | ||
83 | + $boletimReport->addArg('turma', (int)$dadosMatricula['turma_id']); | ||
84 | + | ||
85 | + $encoding = 'base64'; | ||
86 | + | ||
87 | + $dumpsOptions = array('options' => array('encoding' => $encoding)); | ||
88 | + $encoded = $boletimReport->dumps($dumpsOptions); | ||
89 | + | ||
90 | + return array('matricula_id' => $this->getRequest()->matricula_id, | ||
91 | + 'encoding' => $encoding, | ||
92 | + 'encoded' => $encoded); | ||
93 | + } | ||
94 | + } | ||
95 | + | ||
96 | + public function Gerar() { | ||
97 | + if ($this->isRequestFor('get', 'boletim')) | ||
98 | + $this->appendResponse($this->getBoletim()); | ||
99 | + else | ||
100 | + $this->notImplementedOperationError(); | ||
101 | + } | ||
102 | +} |
@@ -0,0 +1,84 @@ | @@ -0,0 +1,84 @@ | ||
1 | +<?php | ||
2 | + | ||
3 | +#error_reporting(E_ALL); | ||
4 | +#ini_set("display_errors", 1); | ||
5 | + | ||
6 | +/** | ||
7 | + * i-Educar - Sistema de gestão escolar | ||
8 | + * | ||
9 | + * Copyright (C) 2006 Prefeitura Municipal de Itajaí | ||
10 | + * <ctima@itajai.sc.gov.br> | ||
11 | + * | ||
12 | + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo | ||
13 | + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free | ||
14 | + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) | ||
15 | + * qualquer versão posterior. | ||
16 | + * | ||
17 | + * Este programa é distribuído na expectativa de que seja útil, porém, SEM | ||
18 | + * NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU | ||
19 | + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral | ||
20 | + * do GNU para mais detalhes. | ||
21 | + * | ||
22 | + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto | ||
23 | + * com este programa; se não, escreva para a Free Software Foundation, Inc., no | ||
24 | + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | ||
25 | + * | ||
26 | + * @author Lucas D'Avila <lucasdavila@portabilis.com.br> | ||
27 | + * @category i-Educar | ||
28 | + * @license @@license@@ | ||
29 | + * @package Api | ||
30 | + * @subpackage Modules | ||
31 | + * @since Arquivo disponível desde a versão ? | ||
32 | + * @version $Id$ | ||
33 | + */ | ||
34 | + | ||
35 | +require_once 'lib/Portabilis/Controller/ApiCoreController.php'; | ||
36 | +require_once 'lib/Portabilis/Array/Utils.php'; | ||
37 | +require_once 'lib/Portabilis/String/Utils.php'; | ||
38 | +require_once 'Portabilis/Model/Report/TipoBoletim.php'; | ||
39 | +require_once "App/Model/IedFinder.php"; | ||
40 | + | ||
41 | +class TurmaController extends ApiCoreController | ||
42 | +{ | ||
43 | + // validators | ||
44 | + | ||
45 | + protected function validatesTurmaId() { | ||
46 | + return $this->validatesPresenceOf('id') && | ||
47 | + $this->validatesExistenceOf('turma', $this->getRequest()->id); | ||
48 | + } | ||
49 | + | ||
50 | + // validations | ||
51 | + | ||
52 | + protected function canGet() { | ||
53 | + return $this->canAcceptRequest() && | ||
54 | + $this->validatesTurmaId(); | ||
55 | + } | ||
56 | + | ||
57 | + // api | ||
58 | + | ||
59 | + protected function getTipoBoletim() { | ||
60 | + $tipo = App_Model_IedFinder::getTurma($codTurma = $this->getRequest()->id); | ||
61 | + $tipo = $tipo['tipo_boletim']; | ||
62 | + | ||
63 | + $tiposBoletim = Portabilis_Model_Report_TipoBoletim; | ||
64 | + | ||
65 | + $tipos = array(null => 'indefinido', | ||
66 | + $tiposBoletim::BIMESTRAL => 'portabilis_boletim', | ||
67 | + $tiposBoletim::TRIMESTRAL => 'portabilis_boletim_trimestral', | ||
68 | + $tiposBoletim::TRIMESTRAL_CONCEITUAL => 'portabilis_boletim_primeiro_ano_trimestral', | ||
69 | + $tiposBoletim::SEMESTRAL => 'portabilis_boletim_semestral', | ||
70 | + $tiposBoletim::SEMESTRAL_CONCEITUAL => 'portabilis_boletim_conceitual_semestral', | ||
71 | + $tiposBoletim::SEMESTRAL_EDUCACAO_INFANTIL => 'portabilis_boletim_educ_infantil_semestral', | ||
72 | + $tiposBoletim::PARECER_DESCRITIVO_COMPONENTE => 'portabilis_boletim_parecer', | ||
73 | + $tiposBoletim::PARECER_DESCRITIVO_GERAL => 'portabilis_boletim_parecer_geral'); | ||
74 | + | ||
75 | + return array('tipo-boletim' => $tipos[$tipo]); | ||
76 | + } | ||
77 | + | ||
78 | + public function Gerar() { | ||
79 | + if ($this->isRequestFor('get', 'tipo-boletim')) | ||
80 | + $this->appendResponse($this->getTipoBoletim()); | ||
81 | + else | ||
82 | + $this->notImplementedOperationError(); | ||
83 | + } | ||
84 | +} |