From cace3890b929a50871e7111e789f5f92df54c62a Mon Sep 17 00:00:00 2001 From: Caroline Salib Canto Date: Sat, 16 Apr 2016 22:48:28 -0300 Subject: [PATCH] Adicionado modal para cadastro de pessoa fisica dentro de aluno; portabilis/ieducar#155 --- ieducar/intranet/scripts/dom.js | 18 +++++++++--------- ieducar/modules/Api/Views/AlunoController.php | 37 +++++++++++++++++++++++++++++++++++-- ieducar/modules/Api/Views/PessoaController.php | 276 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- ieducar/modules/Cadastro/Assets/Javascripts/Aluno.js | 655 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------- ieducar/modules/Cadastro/Assets/Javascripts/Endereco.js | 16 +++++++++++++--- ieducar/modules/Cadastro/Assets/Stylesheets/Aluno.css | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- ieducar/modules/Cadastro/Views/AlunoController.php | 218 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- ieducar/modules/Portabilis/Assets/Version.php | 2 +- 8 files changed, 1251 insertions(+), 40 deletions(-) diff --git a/ieducar/intranet/scripts/dom.js b/ieducar/intranet/scripts/dom.js index d36fd22..fd5384f 100755 --- a/ieducar/intranet/scripts/dom.js +++ b/ieducar/intranet/scripts/dom.js @@ -268,7 +268,7 @@ function showExpansivel( largura, altura, conteudo ) expansivel.setAttribute("id", "div_dinamico_"+exp_id); insertAfter(expansivel, document.getElementById("DOM_expansivel")); DOM_divs[exp_id] = expansivel; - expansivel.style.zIndex = 30+exp_id; + expansivel.style.zIndex = 1003+exp_id; expansivel.style.position = "absolute"; if( typeof window.innerHeight == 'number' ) @@ -1539,7 +1539,7 @@ function getPDFouvidoriaEquipe() Obj = document.getElementById('imprimir'); Obj.value = 'Gerando Arquivo...'; - Obj.onclick = function() { alert('O sistema está gerando o arquivo. Aguarde!')}; + Obj.onclick = function() { alert('O sistema está gerando o arquivo. Aguarde!')}; //document.location.href = strURL; } @@ -1566,7 +1566,7 @@ function getPDFouvidoriaTipoServico() DOM_loadXMLDoc( strURL ); Obj = document.getElementById('imprimir'); Obj.value = 'Gerando Arquivo...'; - Obj.onclick = function() { alert('O sistema está gerando o arquivo. Aguarde!')}; + Obj.onclick = function() { alert('O sistema está gerando o arquivo. Aguarde!')}; //document.location.href = strURL; } @@ -1594,7 +1594,7 @@ function getPDFouvidoriaAtendimento() DOM_loadXMLDoc( strURL ); Obj = document.getElementById('imprimir'); Obj.value = 'Gerando Arquivo...'; - Obj.onclick = function() { alert('O sistema está gerando o arquivo. Aguarde!')}; + Obj.onclick = function() { alert('O sistema está gerando o arquivo. Aguarde!')}; } function getPDFouvidoriaAtendimentoDone() @@ -1626,7 +1626,7 @@ function getPDFestoquesaida() DOM_loadXMLDoc( strURL ); Obj = document.getElementById('imprimir'); Obj.value = 'Gerando Arquivo...'; - Obj.onclick = function() { alert('O sistema está gerando o arquivo. Aguarde!')}; + Obj.onclick = function() { alert('O sistema está gerando o arquivo. Aguarde!')}; } function getPDFestoquesaidaDone() @@ -1657,7 +1657,7 @@ function getPDFouvidoriaAtendimentoSetor() DOM_loadXMLDoc( strURL ); Obj = document.getElementById('imprimir'); Obj.value = 'Gerando Arquivo...'; - Obj.onclick = function() { alert('O sistema está gerando o arquivo. Aguarde!')}; + Obj.onclick = function() { alert('O sistema está gerando o arquivo. Aguarde!')}; } @@ -1695,7 +1695,7 @@ function getPDFouvidoriaOrdem() DOM_loadXMLDoc( strURL ); Obj = document.getElementById('imprimir'); Obj.value = 'Gerando Arquivo...'; - Obj.onclick = function() { alert('O sistema está gerando o arquivo. Aguarde!')}; + Obj.onclick = function() { alert('O sistema está gerando o arquivo. Aguarde!')}; //document.location.href = strURL; } @@ -1707,7 +1707,7 @@ function getPDFouvidoriaOrdemDone() Obj = document.getElementById('imprimir'); Obj.value = 'Clique para baixar arquivo!'; Obj.onclick = function() { document.location.href = link;}; - //alert('Arquivo Concluído'); + //alert('Arquivo Conclu?o'); document.location.href = link; } @@ -1717,7 +1717,7 @@ function fecha_notificacao( id_notificacao ) { if( DOM_itensArray[0].firstChild.data == 0 ) { - alert( 'Erro de permissão. A notificação não foi deletada.' ); + alert( 'Erro de permissão. A notificação não foi deletada.' ); document.getElementById('notificacao_' + id_notificacao).style.display='block'; } } diff --git a/ieducar/modules/Api/Views/AlunoController.php b/ieducar/modules/Api/Views/AlunoController.php index 0da19cf..0e6eb8f 100644 --- a/ieducar/modules/Api/Views/AlunoController.php +++ b/ieducar/modules/Api/Views/AlunoController.php @@ -788,8 +788,9 @@ protected function createOrUpdateUniforme($id) { $aluno = Portabilis_Array_Utils::merge($objMoradia,$aluno); } - $sql = "select sus from cadastro.fisica where idpes = $1"; - $aluno['sus'] = Portabilis_String_Utils::toUtf8($this->fetchPreparedQuery($sql, $aluno['pessoa_id'], false, 'first-field')); + $sql = "select sus, idpes_mae, idpes_pai from cadastro.fisica where idpes = $1"; + $camposFisica = Portabilis_String_Utils::toUtf8($this->fetchPreparedQuery($sql, $aluno['pessoa_id'], false, 'first-row')); + $aluno['sus'] = $camposFisica['sus']; return $aluno; } @@ -856,6 +857,34 @@ protected function createOrUpdateUniforme($id) { } } + protected function saveParents(){ + + $maeId = $this->getRequest()->mae_id; + $paiId = $this->getRequest()->pai_id; + $pessoaId = $this->getRequest()->pessoa_id; + + if($maeId || $paiId){ + + $sql = "UPDATE cadastro.fisica set "; + + $virgulaOuNada = ''; + + if ($maeId){ + $sql .= " idpes_mae = {$maeId} "; + $virgulaOuNada = ", "; + } + + if ($paiId){ + $sql .= "{$virgulaOuNada} idpes_pai = {$paiId} "; + $virgulaOuNada = ", "; + } + + $sql .= " WHERE idpes = {$pessoaId}"; + + Portabilis_Utils_Database::fetchPreparedQuery($sql); + } + } + protected function getOcorrenciasDisciplinares() { if ($this->canGetOcorrenciasDisciplinares()) return $this->loadOcorrenciasDisciplinares(); @@ -866,6 +895,8 @@ protected function createOrUpdateUniforme($id) { $id = $this->createOrUpdateAluno(); $pessoaId = $this->getRequest()->pessoa_id; + $this->saveParents(); + if (is_numeric($id)) { $this->updateResponsavel(); $this->saveSus($pessoaId); @@ -889,6 +920,8 @@ protected function createOrUpdateUniforme($id) { $id = $this->getRequest()->id; $pessoaId = $this->getRequest()->pessoa_id; + $this->saveParents(); + if ($this->canPut() && $this->createOrUpdateAluno($id)) { $this->updateResponsavel(); $this->saveSus($pessoaId); diff --git a/ieducar/modules/Api/Views/PessoaController.php b/ieducar/modules/Api/Views/PessoaController.php index e2d0d1d..c62e921 100644 --- a/ieducar/modules/Api/Views/PessoaController.php +++ b/ieducar/modules/Api/Views/PessoaController.php @@ -36,6 +36,9 @@ require_once 'lib/Portabilis/Controller/ApiCoreController.php'; require_once 'lib/Portabilis/Array/Utils.php'; require_once 'lib/Portabilis/String/Utils.php'; require_once 'lib/Portabilis/Date/Utils.php'; +require_once 'include/pessoa/clsPessoa_.inc.php'; +require_once 'include/pessoa/clsFisica.inc.php'; +require_once 'intranet/include/funcoes.inc.php'; class PessoaController extends ApiCoreController { @@ -108,29 +111,148 @@ class PessoaController extends ApiCoreController $sql = "select cpf, data_nasc as data_nascimento, idpes_pai as pai_id, idpes_mae as mae_id, idpes_responsavel as responsavel_id, + ideciv as estadocivil, sexo, coalesce((select nome from cadastro.pessoa where idpes = fisica.idpes_pai), (select nm_pai from pmieducar.aluno where cod_aluno = $1)) as nome_pai, coalesce((select nome from cadastro.pessoa where idpes = fisica.idpes_mae), (select nm_mae from pmieducar.aluno where cod_aluno = $1)) as nome_mae, (select nome from cadastro.pessoa where idpes = fisica.idpes_responsavel) as nome_responsavel, - (select rg from cadastro.documento where documento.idpes = fisica.idpes) as rg + (select rg from cadastro.documento where documento.idpes = fisica.idpes) as rg, + (SELECT COALESCE((SELECT cep FROM cadastro.endereco_pessoa WHERE idpes = $2), + (SELECT cep FROM cadastro.endereco_externo WHERE idpes = $2))) as cep, + + (SELECT COALESCE((SELECT l.nome FROM public.logradouro l, cadastro.endereco_pessoa ep WHERE l.idlog = ep.idlog and ep.idpes = $2), + (SELECT logradouro FROM cadastro.endereco_externo WHERE idpes = $2))) as logradouro, + + (SELECT COALESCE((SELECT l.idtlog FROM public.logradouro l, cadastro.endereco_pessoa ep WHERE l.idlog = ep.idlog and ep.idpes = $2), + (SELECT idtlog FROM cadastro.endereco_externo WHERE idpes = $2))) as idtlog, + + (SELECT COALESCE((SELECT b.nome FROM public.bairro b, cadastro.endereco_pessoa ep WHERE b.idbai = ep.idbai and ep.idpes = $2), + (SELECT bairro FROM cadastro.endereco_externo WHERE idpes = $2))) as bairro, + + (SELECT COALESCE((SELECT b.zona_localizacao FROM public.bairro b, cadastro.endereco_pessoa ep WHERE b.idbai = ep.idbai and ep.idpes = $2), + (SELECT zona_localizacao FROM cadastro.endereco_externo WHERE idpes = $2))) as zona_localizacao, + + (SELECT COALESCE((SELECT l.idmun FROM public.logradouro l, cadastro.endereco_pessoa ep WHERE l.idlog = ep.idlog and ep.idpes = $2), + (SELECT idmun FROM public.logradouro l, urbano.cep_logradouro cl, cadastro.endereco_externo ee + WHERE cl.idlog = l.idlog AND cl.cep = ee.cep and ee.idpes = $2 order by 1 desc limit 1))) as idmun, + + idmun_nascimento, + + + (SELECT COALESCE((SELECT numero FROM cadastro.endereco_pessoa WHERE idpes = $2), + (SELECT numero FROM cadastro.endereco_externo WHERE idpes = $2))) as numero, + + (SELECT COALESCE((SELECT letra FROM cadastro.endereco_pessoa WHERE idpes = $2), + (SELECT letra FROM cadastro.endereco_externo WHERE idpes = $2))) as letra, + + (SELECT COALESCE((SELECT complemento FROM cadastro.endereco_pessoa WHERE idpes = $2), + (SELECT complemento FROM cadastro.endereco_externo WHERE idpes = $2))) as complemento, + + (SELECT COALESCE((SELECT andar FROM cadastro.endereco_pessoa WHERE idpes = $2), + (SELECT andar FROM cadastro.endereco_externo WHERE idpes = $2))) as andar, + + (SELECT COALESCE((SELECT bloco FROM cadastro.endereco_pessoa WHERE idpes = $2), + (SELECT bloco FROM cadastro.endereco_externo WHERE idpes = $2))) as bloco, + + (SELECT COALESCE((SELECT apartamento FROM cadastro.endereco_pessoa WHERE idpes = $2), + (SELECT apartamento FROM cadastro.endereco_externo WHERE idpes = $2))) as apartamento, + + (SELECT idbai FROM cadastro.endereco_pessoa WHERE idpes = $2) as idbai, + + (SELECT idlog FROM cadastro.endereco_pessoa WHERE idpes = $2) as idlog from cadastro.fisica where idpes = $2"; $details = $this->fetchPreparedQuery($sql, array($alunoId, $pessoaId), false, 'first-row'); - $attrs = array('cpf', 'rg', 'data_nascimento', 'pai_id', 'mae_id', 'responsavel_id', 'nome_pai', 'nome_mae', 'nome_responsavel'); + $attrs = array('cpf', 'rg', 'data_nascimento', 'pai_id', 'mae_id', 'responsavel_id', 'nome_pai', 'nome_mae', + 'nome_responsavel','sexo','estadocivil', 'cep', 'logradouro', 'idtlog', 'bairro', + 'zona_localizacao', 'idbai', 'idlog', 'idmun', 'idmun_nascimento', 'complemento', + 'apartamento', 'andar', 'bloco', 'numero' , 'letra'); $details = Portabilis_Array_Utils::filter($details, $attrs); $details['aluno_id'] = $alunoId; $details['nome_mae'] = $this->toUtf8($details['nome_mae'], array('transform' => true)); $details['nome_pai'] = $this->toUtf8($details['nome_pai'], array('transform' => true)); $details['nome_responsavel'] = $this->toUtf8($details['nome_responsavel'], array('transform' => true)); + $details['cep'] = int2CEP($details['cep']); + + $details['bairro'] = $this->toUtf8($details['bairro']); + $details['logradouro'] = $this->toUtf8($details['logradouro']); + $detaihandleGetPersonls['complemento'] = $this->toUtf8($details['complemento']); + $details['letra'] = $this->toUtf8($details['letra']); + $details['bloco'] = $this->toUtf8($details['bloco']); + + if($details['idmun']){ + + $_sql = " SELECT nome, sigla_uf FROM public.municipio WHERE idmun = $1; "; + + $mun = $this->fetchPreparedQuery($_sql, $details['idmun'], false, 'first-row'); + + $details['municipio'] = $this->toUtf8($mun['nome']); + + $details['sigla_uf'] = $mun['sigla_uf']; + + } + + if ($details['idmun_nascimento']){ + + $_sql = " SELECT nome, sigla_uf FROM public.municipio WHERE idmun = $1; "; + + $mun = $this->fetchPreparedQuery($_sql, $details['idmun_nascimento'], false, 'first-row'); + + $details['municipio_nascimento'] = $this->toUtf8($mun['nome']); + + $details['sigla_uf_nascimento'] = $mun['sigla_uf']; + + } + + if ($details['pai_id']){ + + $_sql = " SELECT ideciv as estadocivil, sexo FROM cadastro.fisica WHERE idpes = $1; "; + + $pai = $this->fetchPreparedQuery($_sql, $details['pai_id'], false, 'first-row'); + + $paiDetails['estadocivil'] = $pai['estadocivil']; + + $paiDetails['sexo'] = $pai['sexo']; + + $details['pai_details'] = $paiDetails; + + } + + if ($details['mae_id']){ + + $_sql = " SELECT ideciv as estadocivil, sexo FROM cadastro.fisica WHERE idpes = $1; "; + + $mae = $this->fetchPreparedQuery($_sql, $details['mae_id'], false, 'first-row'); + + $maeDetails['estadocivil'] = $mae['estadocivil']; + + $maeDetails['sexo'] = $mae['sexo']; + + $details['mae_details'] = $maeDetails; + + } $details['data_nascimento'] = Portabilis_Date_Utils::pgSQLToBr($details['data_nascimento']); return $details; } + protected function loadPessoaParent(){ + + $_sql = " SELECT (select nome from cadastro.pessoa where pessoa.idpes = fisica.idpes) as nome ,ideciv as estadocivil, sexo FROM cadastro.fisica WHERE idpes = $1; "; + + $details = $this->fetchPreparedQuery($_sql, $this->getRequest()->id, false, 'first-row'); + + $details['nome'] = Portabilis_String_Utils::toUtf8($details['nome']); + + $details['id'] = $this->getRequest()->id; + + return $details;; + } + protected function loadDeficiencias($pessoaId) { $sql = "select cod_deficiencia as id, nm_deficiencia as nome from cadastro.fisica_deficiencia, cadastro.deficiencia where cod_deficiencia = ref_cod_deficiencia and ref_idpes = $1"; @@ -239,6 +361,150 @@ class PessoaController extends ApiCoreController return $pessoa; } + protected function post(){ + + $pessoaId = $this->getRequest()->pessoa_id; + + $pessoaId = $this->createOrUpdatePessoa($pessoaId); + $this->createOrUpdatePessoaFisica($pessoaId); + + $this->appendResponse('pessoa_id', $pessoaId); + } + + protected function createOrUpdatePessoa($pessoaId = null) { + $pessoa = new clsPessoa_(); + $pessoa->idpes = $pessoaId; + $pessoa->nome = addslashes(urldecode($this->getRequest()->nome)); + + $sql = "select 1 from cadastro.pessoa WHERE idpes = $1 limit 1"; + + if (! $pessoaId || Portabilis_Utils_Database::selectField($sql, $pessoaId) != 1) { + $pessoa->tipo = 'F'; + $pessoa->idpes_cad = $this->currentUserId(); + $pessoaId = $pessoa->cadastra(); + } + else { + $pessoa->idpes_rev = $this->currentUserId(); + $pessoa->data_rev = date('Y-m-d H:i:s', time()); + $pessoa->edita(); + } + + return $pessoaId; + } + + protected function createOrUpdatePessoaFisica($pessoaId) { + + $fisica = new clsFisica(); + $fisica->idpes = $pessoaId; + $fisica->data_nasc = Portabilis_Date_Utils::brToPgSQL($this->getRequest()->datanasc); + $fisica->sexo = $this->getRequest()->sexo; + $fisica->ref_cod_sistema = 'NULL'; + $fisica->ideciv = $this->getRequest()->estadocivil; + $fisica->idpes_pai = "NULL"; + $fisica->idpes_mae = "NULL"; + $fisica->idmun_nascimento = $this->getRequest()->naturalidade; + + $sql = "select 1 from cadastro.fisica WHERE idpes = $1 limit 1"; + + if (Portabilis_Utils_Database::selectField($sql, $pessoaId) != 1) + $fisica->cadastra(); + else + $fisica->edita(); + + } + + protected function _createOrUpdatePessoaEndereco($pessoaId) { + + $cep = idFederal2Int($this->getRequest()->cep); + + $objCepLogradouro = new ClsCepLogradouro($cep, $this->getRequest()->logradouro_id); + + if (! $objCepLogradouro->existe()) + $objCepLogradouro->cadastra(); + + $objCepLogradouroBairro = new ClsCepLogradouroBairro(); + $objCepLogradouroBairro->cep = $cep; + $objCepLogradouroBairro->idbai = $this->getRequest()->bairro_id; + $objCepLogradouroBairro->idlog = $this->getRequest()->logradouro_id; + + if (! $objCepLogradouroBairro->existe()) + $objCepLogradouroBairro->cadastra(); + + $endereco = new clsPessoaEndereco( + $this->getRequest()->pessoa_id, + $cep, + $this->getRequest()->logradouro_id, + $this->getRequest()->bairro_id, + $this->getRequest()->numero, + Portabilis_String_Utils::toLatin1($this->getRequest()->complemento), + FALSE, + Portabilis_String_Utils::toLatin1($this->getRequest()->letra), + Portabilis_String_Utils::toLatin1($this->getRequest()->bloco), + $this->getRequest()->apartamento, + $this->getRequest()->andar + ); + + // forçado exclusão, assim ao cadastrar endereco_pessoa novamente, + // será excluido endereco_externo (por meio da trigger fcn_aft_ins_endereco_pessoa). + $endereco->exclui(); + $endereco->cadastra(); + } + + protected function createOrUpdateEndereco() { + + $pessoaId = $this->getRequest()->pessoa_id; + + if ($this->getRequest()->cep && is_numeric($this->getRequest()->bairro_id) && is_numeric($this->getRequest()->logradouro_id)) + $this->_createOrUpdatePessoaEndereco($pessoaId); + else if($this->getRequest()->cep && is_numeric($this->getRequest()->municipio_id)){ + + if (!is_numeric($this->bairro_id)){ + + if ($this->canCreateBairro()) + $this->getRequest()->bairro_id = $this->createBairro(); + else + return; + } + + if (!is_numeric($this->logradouro_id)){ + if($this->canCreateLogradouro()) + $this->getRequest()->logradouro_id = $this->createLogradouro(); + else + return; + } + + $this->_createOrUpdatePessoaEndereco($pessoaId); + + }else{ + $endereco = new clsPessoaEndereco($pessoaId); + $endereco->exclui(); + } + + } + + + protected function canCreateBairro(){ + return !empty($this->getRequest()->bairro) && !empty($this->getRequest()->zona_localizacao); + } + + protected function canCreateLogradouro(){ + return !empty($this->getRequest()->logradouro) && !empty($this->getRequest()->idtlog); + } + + protected function createBairro(){ + + $objBairro = new clsBairro(null,$this->getRequest()->municipio_id,null,Portabilis_String_Utils::toLatin1($this->getRequest()->bairro), $this->currentUserId()); + $objBairro->zona_localizacao = $this->getRequest()->zona_localizacao; + + return $objBairro->cadastra(); + } + + protected function createLogradouro(){ + $objLogradouro = new clsLogradouro(null,$this->getRequest()->idtlog, Portabilis_String_Utils::toLatin1($this->getRequest()->logradouro), $this->getRequest()->municipio_id, + null, 'S', $this->currentUserId()); + return $objLogradouro->cadastra(); + } + public function Gerar() { if ($this->isRequestFor('get', 'pessoa-search')) @@ -246,6 +512,12 @@ class PessoaController extends ApiCoreController elseif ($this->isRequestFor('get', 'pessoa')) $this->appendResponse($this->get()); + elseif ($this->isRequestFor('post', 'pessoa')) + $this->appendResponse($this->post()); + elseif ($this->isRequestFor('post', 'pessoa-endereco')) + $this->appendResponse($this->createOrUpdateEndereco()); + elseif ($this->isRequestFor('get', 'pessoa-parent')) + $this->appendResponse($this->loadPessoaParent()); else $this->notImplementedOperationError(); } diff --git a/ieducar/modules/Cadastro/Assets/Javascripts/Aluno.js b/ieducar/modules/Cadastro/Assets/Javascripts/Aluno.js index 676123f..d9f7810 100644 --- a/ieducar/modules/Cadastro/Assets/Javascripts/Aluno.js +++ b/ieducar/modules/Cadastro/Assets/Javascripts/Aluno.js @@ -1,4 +1,10 @@ -// before page is ready +var editar_pessoa = false; +var person_details; +var pai_details; +var mae_details; +var pessoaPaiOuMae; + + // before page is ready var $idField = $j('#id'); var $nomeField = $j('#pessoa_nome'); @@ -12,6 +18,48 @@ var $resourceNotice = $j('').html('') var $pessoaNotice = $resourceNotice.clone() .appendTo($nomeField.parent()); +var $paiNomeField = $j('#pai_nome'); +var $paiIdField = $j('#pai_id'); + +var $maeNomeField = $j('#mae_nome'); +var $maeIdField = $j('#mae_id'); + +var $pessoaPaiActionBar = $j('').html('') + .addClass('pessoa-links pessoa-pai-links') + .width($paiNomeField.outerWidth() - 12) + .appendTo($paiNomeField.parent()); + +var $pessoaMaeActionBar = $pessoaPaiActionBar.clone() + .removeClass('pessoa-pai-links') + .addClass('pessoa-mae-links') + .appendTo($maeNomeField.parent()); + +var $linkToCreatePessoaPai = $j('').addClass('cadastrar-pessoa-pai decorated') + .attr('id', 'cadastrar-pessoa-pai-link') + .html('Cadastrar pessoa') + .appendTo($pessoaPaiActionBar); + +var $linkToEditPessoaPai = $j('').hide() + .addClass('editar-pessoa-pai decorated') + .attr('id', 'editar-pessoa-pai-link') + .html('Editar pessoa') + .appendTo($pessoaPaiActionBar); + +var $linkToCreatePessoaMae = $linkToCreatePessoaPai.clone() + .removeClass('cadastrar-pessoa-pai') + .attr('id', 'cadastrar-pessoa-mae-link') + .addClass('cadastrar-pessoa-mae') + .appendTo($pessoaMaeActionBar); + +var $linkToEditPessoaMae = $linkToEditPessoaPai.clone() + .removeClass('editar-pessoa-pai') + .addClass('editar-pessoa-mae') + .attr('id', 'editar-pessoa-mae-link') + .appendTo($pessoaMaeActionBar); + + + + // adiciona id 'stop' na linha separadora $j('.tableDetalheLinhaSeparador').closest('tr').attr('id','stop'); // Adiciona abas na página @@ -349,9 +397,51 @@ resourceOptions.handleGet = function(dataResponse) { }; +// pessoa links callbacks + +var changeVisibilityOfLinksToPessoaParent = function(parentType) { + var $nomeField = $j(buildId(parentType + '_nome')); + var $idField = $j(buildId(parentType + '_id')); + var $linkToEdit = $j('.pessoa-' + parentType + '-links .editar-pessoa-' + parentType); + + if($nomeField.val() && $idField.val()) { + $linkToEdit.show().css('display', 'inline'); + } + else { + $nomeField.val('') + $idField.val(''); + + $linkToEdit.hide(); + } +} + +var changeVisibilityOfLinksToPessoaPai = function() { + changeVisibilityOfLinksToPessoaParent('pai'); +} + +var changeVisibilityOfLinksToPessoaMae = function() { + changeVisibilityOfLinksToPessoaParent('mae'); +} + +var simpleSearchPaiOptions = { + autocompleteOptions : { close : changeVisibilityOfLinksToPessoaPai } +}; + +var simpleSearchMaeOptions = { + autocompleteOptions : { close : changeVisibilityOfLinksToPessoaMae } +}; + +$paiIdField.change(changeVisibilityOfLinksToPessoaPai); +$maeIdField.change(changeVisibilityOfLinksToPessoaMae); + var handleGetPersonDetails = function(dataResponse) { handleMessages(dataResponse.msgs); $pessoaNotice.hide(); + person_details = dataResponse; + + mae_details = dataResponse.mae_details; + + pai_details = dataResponse.pai_details; var alunoId = dataResponse.aluno_id; @@ -369,8 +459,7 @@ var handleGetPersonDetails = function(dataResponse) { } else { - $j('.pessoa-links .editar-pessoa').attr('href', '/intranet/atendidos_cad.php?cod_pessoa_fj=' + dataResponse.id) - .show().css('display', 'inline'); + $j('.pessoa-links .editar-pessoa').show().css('display', 'inline'); $submitButton.removeAttr('disabled').show(); } @@ -382,11 +471,27 @@ var handleGetPersonDetails = function(dataResponse) { var nomeMae = dataResponse.nome_mae; var nomeResponsavel = dataResponse.nome_responsavel; - if (dataResponse.pai_id) - nomePai = dataResponse.pai_id + ' - ' + nomePai; + if (dataResponse.pai_id){ + pai_details.nome = nomePai; + $j('#pai_nome').val(dataResponse.pai_id + ' - ' + nomePai); + $j('#pai_id').val(dataResponse.pai_id); + }else{ + $j('#pai_nome').val(''); + $j('#pai_id').val(''); + } + + $j('#pai_id').trigger('change'); - if (dataResponse.mae_id) - nomeMae = dataResponse.mae_id + ' - ' + nomeMae; + if (dataResponse.mae_id){ + mae_details.nome = nomeMae; + $j('#mae_nome').val(dataResponse.mae_id + ' - ' + nomeMae); + $j('#mae_id').val(dataResponse.mae_id); + }else{ + $j('#mae_nome').val(''); + $j('#mae_id').val(''); + } + + $j('#mae_id').trigger('change'); if (dataResponse.responsavel_id) nomeResponsavel = dataResponse.responsavel_id + ' - ' + nomeResponsavel; @@ -394,8 +499,6 @@ var handleGetPersonDetails = function(dataResponse) { $j('#data_nascimento').val(dataResponse.data_nascimento); $j('#rg').val(dataResponse.rg); - $j('#pai').val(nomePai); - $j('#mae').val(nomeMae); $j('#responsavel_nome').val(nomeResponsavel); $j('#responsavel_id').val(dataResponse.responsavel_id); @@ -428,6 +531,24 @@ var handleGetPersonDetails = function(dataResponse) { // # TODO show aluno photo //$j('#aluno_foto').val(dataResponse.url_foto); + canShowParentsFields(); +} + +var handleGetPersonParentDetails = function(dataResponse, parentType) { + + window[parentType+'_details'] = dataResponse; + + if(dataResponse.id){ + + if(parentType=='mae'){ + $maeNomeField.val(dataResponse.id + ' - '+ dataResponse.nome); + $maeIdField.val(dataResponse.id); + changeVisibilityOfLinksToPessoaMae(); + }else + $paiNomeField.val(dataResponse.id + ' - '+ dataResponse.nome); + $paiIdField.val(dataResponse.id); + changeVisibilityOfLinksToPessoaPai(); + } } var getPersonDetails = function(personId) { @@ -445,7 +566,25 @@ var getPersonDetails = function(personId) { getResource(options); } +var getPersonParentDetails = function(personId,parentType) { + var additionalVars = { + id : personId + }; + + var options = { + url : getResourceUrlBuilder.buildUrl('/module/Api/pessoa', 'pessoa-parent', additionalVars), + dataType : 'json', + data : {}, + success : function(data){ + handleGetPersonParentDetails(data, parentType) + } + }; + + getResource(options); +} + var updatePersonDetails = function() { + canShowParentsFields(); if ($j('#pessoa_nome').val() && $j('#pessoa_id').val()) getPersonDetails($j('#pessoa_id').val()); else @@ -469,7 +608,8 @@ var simpleSearchPessoaOptions = { // children callbacks function afterChangePessoa(targetWindow, pessoaId) { - targetWindow.close(); + if (targetWindow != null) + targetWindow.close(); // timeout para usuario perceber mudança window.setTimeout(function() { @@ -484,13 +624,34 @@ function afterChangePessoa(targetWindow, pessoaId) { }, 500); } +function afterChangePessoaParent(pessoaId, parentType) { + + $tempField = (parentType == 'pai' ? $paiNomeField : $maeNomeField); + + messageUtils.success('Pessoa '+parentType+' alterada com sucesso', $tempField); + + getPersonParentDetails(pessoaId, parentType); + + if ($tempField.is(':active')) + $tempField.focus(); +} + +function canShowParentsFields(){ + if ($j('#pessoa_id').val()){ + $paiNomeField.removeAttr('disabled'); + $maeNomeField.removeAttr('disabled'); + }else{ + $paiNomeField.attr('disabled', 'true'); + $maeNomeField.attr('disabled', 'true'); + } +} // when page is ready (function($) { $(document).ready(function() { - // pessoa + canShowParentsFields(); var $pessoaActionBar = $j('').html('') .addClass('pessoa-links') @@ -499,15 +660,13 @@ function afterChangePessoa(targetWindow, pessoaId) { $j('').hide() .addClass('cadastrar-pessoa decorated') - .attr('href', '/intranet/atendidos_cad.php') - .attr('target', '_blank') + .attr('id', 'cadastrar-pessoa-link') .html('Cadastrar pessoa') .appendTo($pessoaActionBar); $j('').hide() .addClass('editar-pessoa decorated') - .attr('href', '#') - .attr('target', '_blank') + .attr('id', 'editar-pessoa-link') .html('Editar pessoa') .appendTo($pessoaActionBar); @@ -627,7 +786,7 @@ function afterChangePessoa(targetWindow, pessoaId) { if (index<84 && index!=0){ row.hide(); - }else{ + }else if(index<111){ row.show(); } }); @@ -656,5 +815,469 @@ function afterChangePessoa(targetWindow, pessoaId) { } }); + // MODAL pessoa-aluno + + // Esse simplesSearch é carregado no final do arquivo, então a sua linha deve ser escondida, + // é só campo será 'puxado' para a modal + $j('#municipio_pessoa-aluno').closest('tr').hide(); + + + $j('body').append('

Dados básicos
Dados do endereço
'); + + var name = $j("#nome-pessoa-aluno"), + sexo = $j( "#sexo-pessoa-aluno" ), + estadocivil = $j( "#estado-civil-pessoa-aluno" ), + datanasc = $j( "#data-nasc-pessoa-aluno" ), + municipio = $j( "#naturalidade_aluno_pessoa-aluno" ), + municipio_id = $j( "#naturalidade_aluno_id" ), + complemento = $j( "#complemento" ), + numero = $j( "#numero" ), + letra = $j( "#letra" ), + apartamento = $j( "#apartamento" ), + bloco = $j( "#bloco" ), + andar = $j( "#andar" ), + allFields = $j( [] ).add( name ).add( sexo ).add( estadocivil ).add(datanasc).add(municipio).add(municipio_id) + .add(complemento).add(numero).add(letra).add(apartamento).add(bloco).add(andar); + + municipio.show().toggleClass('geral text').attr('display', 'block').appendTo('#dialog-form-pessoa-aluno tr td:first-child fieldset'); + + $j('