Commit ab29fb0bc3a088c4cdcd684e1f3aaa3ef1ddf555

Authored by Lucas D'Avila
1 parent 2ffa8db7
Exists in master

Adicionado controllers APIs json

ieducar/modules/Api/Views/AlunoController.php 0 → 100644
... ... @@ -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 @@
  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 +}
... ...
ieducar/modules/Api/Views/DeficienciaController.php 0 → 100644
... ... @@ -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 +}
... ...
ieducar/modules/Api/Views/EscolaController.php 0 → 100644
... ... @@ -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 119 \ No newline at end of file
... ...
ieducar/modules/Api/Views/MatriculaController.php 0 → 100644
... ... @@ -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 +}
... ...
ieducar/modules/Api/Views/MunicipioController.php 0 → 100644
... ... @@ -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 +}
... ...
ieducar/modules/Api/Views/PaisController.php 0 → 100644
... ... @@ -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 +}
... ...
ieducar/modules/Api/Views/PessoaController.php 0 → 100644
... ... @@ -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 +}
... ...
ieducar/modules/Api/Views/ReportController.php 0 → 100644
... ... @@ -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 +}
... ...
ieducar/modules/Api/Views/TurmaController.php 0 → 100644
... ... @@ -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 +}
... ...