addHeader('Content-type', 'aplication/json'); $response->code = Response::OK; $h = new Hypermedia(); $c = new Collection($request->resources, 'DynamicContactResource'); try { // $this->secured(); $dynamicContacts = Controller::find( array( 'concept' => 'dynamicContact' ), false, array( 'filter' => array( 'AND', array( '=', 'owner', Config::me("uidNumber") ) , array('=', 'id', $id) ) ) ); //Se nao foi encontrado contatos na consulta if($dynamicContacts===false){ $error = new Error(); $error->setCode(Response::NOTFOUND); $error->setTitle('Dynamic Contact not found'); $error->setDescription('Dynamic Contact not found.'); $c->setError($error); $h->setCollection($c); $response->code = Response::NOTFOUND; $response->body = $h->getHypermedia($request->accept[10][0]); return $response; } $t = new Template(); $d = new Data(); $d->setName('name'); $d->setValue(null); $d->setPrompt('Nome do Contato Recente'); $d->setDataType('string'); $d->setMaxLength(100); $d->setMinLength(null); $d->setRequired(true); $t->addData($d); $d = new Data(); $d->setName('mail'); $d->setValue(null); $d->setPrompt('Email do Contato Recente'); $d->setDataType('string'); $d->setMaxLength(100); $d->setMinLength(null); $d->setRequired(true); $t->addData($d); $d = new Data(); $d->setName('number_of_messages'); $d->setValue(null); $d->setPrompt('Quantidade de mensagens enviadas'); $d->setDataType('integer'); $d->setMaxLength(100); $d->setMinLength(null); $d->setRequired(false); $t->addData($d); $c->setTemplate($t); $d = new Data(); $d->setName('id'); $d->setValue($dynamicContacts[0]['id']); $d->setPrompt('Identificador do Contato Recente'); $d->setDataType('integer'); $d->setMaxLength(null); $d->setMinLength(null); $d->setRequired(true); $c->addData($d); $d = new Data(); $d->setName('name'); $d->setValue($dynamicContacts[0]['name']); $d->setPrompt('Nome do Contato Recente'); $d->setDataType('string'); $d->setMaxLength('100'); $d->setMinLength(null); $d->setRequired(true); $c->addData($d); $d = new Data(); $d->setName('mail'); $d->setValue($dynamicContacts[0]['mail']); $d->setPrompt('Email do Contato Recente'); $d->setDataType('string'); $d->setMaxLength('100'); $d->setMinLength(null); $d->setRequired(true); $c->addData($d); $d = new Data(); $d->setName('number_of_messages'); $d->setValue($dynamicContacts[0]['number_of_messages']); $d->setPrompt('Quantidade de mensagens enviadas'); $d->setDataType('integer'); $d->setMaxLength('100'); $d->setMinLength(null); $d->setRequired(false); $c->addData($d); $l = new Link(); $l->setHref(''); $l->setRel('delete'); $l->setAlt('Remover'); $l->setPrompt('Remover'); $l->setRender('link'); $c->addLink($l); $l = new Link(); $l->setHref(''); $l->setRel('put'); $l->setAlt('Atualizar'); $l->setPrompt('Atualizar'); $l->setRender('link'); $c->addLink($l); $h->setCollection($c); }catch (Exception $ex){ $error = new Error(); $error->setCode(Response::INTERNALSERVERERROR); $error->setTitle('Internal Server Error'); $error->setDescription($ex); $c->setError($error); $h->setCollection($c); $response->code = Response::INTERNALSERVERERROR; $response->body = $h->getHypermedia($request->accept[10][0]); return $response; } $response->body = $h->getHypermedia($request->accept[10][0]); return $response; } /** * Atualiza um contato recente * * @license http://www.gnu.org/copyleft/gpl.html GPL * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) * @sponsor Caixa Econômica Federal * @author José Vicente Tezza Jr. * @return retorna a uri do contato recente * @access public * */ function put($request, $id){ $post = $request->dataDecoded; if(count($post) == 0){ $response = new Response($request); $response->code = Response::INTERNALSERVERERROR; return $response; } //recupera os atributos definidos no conceito 'user' $map = Config::get('dynamicContact', 'PostgreSQL.mapping'); $params = array(); foreach($post as $key => $value){ if( !isset( $map[ $key ] ) || $key == 'id' || $key == 'timestamp' || $key == 'number_of_messages' ){ continue; } $params[$key] = $value; } if(count($params) == 0){ $response = new Response($request); $response->code = Response::INTERNALSERVERERROR; return $response; } //completar os atributos $params['owner'] = Config::me("uidNumber"); $params['timestamp'] = time(); $params['id'] = $id; $response = new Response($request); // $response->addHeader('Content-type', 'aplication/json'); // $response->code = Response::NOCONTENT; try{ // $this->secured(); $dynamicContact = Controller::read( array( 'concept' => 'dynamicContact' ), false, array( 'filter' => array( 'AND', array('=', 'owner', Config::me("uidNumber") ), array('=', 'id', $id) ) ) ); //Se existe o recurso if($dynamicContact){ $params['number_of_messages'] = $dynamicContact[0]['number_of_messages'] + 1; $dynamicContact = Controller::update( array('concept' => 'dynamicContact', 'id'=>$id), $params ); if(!$dynamicContact){ throw new Exception(Controller::service('PostgreSQL')->error); } } else{ $params['number_of_messages'] = '1'; $idDynamicContact = Controller::create( array('concept' => 'dynamicContact'), $params ); if(!$idDynamicContact){ throw new Exception(Controller::service('PostgreSQL')->error); } } }catch (Exception $ex){ $response->code = Response::INTERNALSERVERERROR; return $response; } return $response; } /** * Remove um contato recente * * @license http://www.gnu.org/copyleft/gpl.html GPL * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) * @sponsor Caixa Econômica Federal * @author José Vicente Tezza Jr. * @access public * */ function delete($request, $id){ $response = new Response($request); // $response->addHeader('Content-type', 'aplication/json'); $response->code = Response::NOCONTENT; try{ //Verifica se o recurso existe $responseGET = $this->get($request, $id); $code = $responseGET->code; //Se existe o recurso if($code == Response::OK){ // $this->secured(); $delete = Controller::delete(array('concept' => 'dynamicContact'), false, array('filter' => array('=', 'id', $id))); if(!$delete){ throw new Exception(Controller::service('PostgreSQL')->error); } } else{ $response->code = Response::NOTFOUND; } }catch (Exception $ex){ $response->code = Response::INTERNALSERVERERROR; return $response; } $response->body = json_encode(array('ABC'=>'123')); return $response; } } ?>