Ignore:
Timestamp:
06/15/12 14:49:24 (12 years ago)
Author:
acoutinho
Message:

Ticket #2766 - Melhorias e correcoes na api rest, criacao de novo cliente

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sandbox/2.4.1-3/prototype/rest/catalog/DynamicContactsResource.php

    r6512 r6523  
    11<?php 
    22 
    3 if( !defined( 'ROOTPATH' ) ) 
    4     define( 'ROOTPATH', dirname(__FILE__).'/..' ); 
    5  
    6 require_once(ROOTPATH.'/rest/hypermedia/hypermedia.php'); 
     3if (!defined('ROOTPATH')) 
     4    define('ROOTPATH', dirname(__FILE__) . '/..'); 
     5 
     6require_once(ROOTPATH . '/rest/hypermedia/hypermedia.php'); 
    77 
    88use prototype\api\Config as Config; 
     
    2222    function get($request) { 
    2323 
     24        $this->secured(); 
     25 
    2426        $response = new Response($request); 
    2527        $response->addHeader('Content-type', 'aplication/json'); 
     
    3032 
    3133        try { 
    32 //          $this->secured(); 
    33  
    34             $dynamicContacts = Controller::find(  
    35                                                 array( 'concept' => 'dynamicContact' ),  
    36                                                 false,  
    37                                                 array( 'filter' => array( '=', 'owner',  Config::me("uidNumber") ),  
    38                                                 'order' => array('number_of_messages','name','mail'),  
    39                                                 'orderDesc' => array(true, false, false) )  
     34 
     35            $dynamicContacts = Controller::find( 
     36                            array('concept' => 'dynamicContact'), false, array('filter' => array('=', 'owner', Config::me("uidNumber")), 
     37                        'order' => array('number_of_messages', 'name', 'mail'), 
     38                        'orderDesc' => array(true, false, false)) 
    4039            ); 
    4140 
    4241            //Se nao foi encontrado contatos na consulta 
    43             if($dynamicContacts===false){ 
    44                 $error = new Error(); 
    45                 $error->setCode(Response::NOTFOUND); 
    46                 $error->setTitle('Dynamic Contacts not found'); 
    47                 $error->setDescription('Dynamic Contacts not found.'); 
    48  
    49                 $c->setError($error); 
    50                 $h->setCollection($c); 
    51  
    52                 $response->code = Response::NOTFOUND; 
    53                 $response->body = $h->getHypermedia($request->accept[10][0]); 
     42            if (!$dynamicContacts) { 
     43                $this->createException($request, $response, Response::NOTFOUND, 'Bad request', 'Dynamic Contact not found.'); 
    5444                return $response; 
    5545            } 
    5646 
    57             foreach($dynamicContacts as $value){ 
    58                 $d = new Data(); 
    59                 $i = new Item($request->resources, 'DynamicContactsResource', $value['id']); 
     47            foreach ($dynamicContacts as $value) { 
     48                $d = new Data(); 
     49                $i = new Item($request->resources, 'DynamicContactsResource', $value['id']); 
    6050 
    6151                $d->setName('name'); 
    62                 $d->setValue($value['name']); 
    63                 $d->setPrompt('Nome do Contato Recente'); 
    64                 $d->setDataType('string'); 
    65                 $d->setMaxLength('100'); 
    66                 $d->setMinLength(null); 
    67                 $d->setRequired(true); 
    68  
    69                 $i->addData($d); 
    70  
    71                 $d = new Data(); 
    72                 $d->setName('mail'); 
    73                 $d->setValue($value['mail']); 
    74                 $d->setPrompt('Email do Contato Recente'); 
    75                 $d->setDataType('string'); 
    76                 $d->setMaxLength('100'); 
    77                 $d->setMinLength(null); 
    78                 $d->setRequired(true); 
    79  
    80                 $i->addData($d); 
    81  
    82                 $d = new Data(); 
    83                 $d->setName('number_of_messages'); 
    84                 $d->setValue($value['number_of_messages']); 
    85                 $d->setPrompt('Quantidade de mensagens enviadas'); 
    86                 $d->setDataType('integer'); 
    87                 $d->setMaxLength('100'); 
    88                 $d->setMinLength(null); 
    89                 $d->setRequired(false); 
    90  
    91                 $i->addData($d); 
    92                                  
    93                                 $d = new Data(); 
    94                 $d->setName('id'); 
    95                 $d->setValue($value['id']); 
    96                 $d->setPrompt('Id do contato dinamico'); 
    97                 $d->setDataType('integer'); 
    98                 $d->setMaxLength('100'); 
    99                 $d->setMinLength(null); 
    100                 $d->setRequired(false); 
    101  
    102                 $i->addData($d); 
    103  
    104                 $l = new Link(); 
    105  
    106                 $l->setHref(''); 
    107                 $l->setRel('delete'); 
    108                 $l->setAlt('Remover'); 
    109                 $l->setPrompt('Remover'); 
    110                 $l->setRender('link'); 
    111  
    112                 $i->addLink($l); 
    113  
    114                 $l = new Link(); 
    115                 $l->setHref(''); 
    116                 $l->setRel('put'); 
    117                 $l->setAlt('Atualizar'); 
    118                 $l->setPrompt('Atualizar'); 
    119                 $l->setRender('link'); 
    120  
    121                 $i->addLink($l); 
    122  
    123                 $l = new Link(); 
    124                 $l->setHref('/dynamiccontact/'.$value['id']); 
    125                 $l->setRel('get'); 
    126                 $l->setAlt('Buscar'); 
    127                 $l->setPrompt('Buscar'); 
    128                 $l->setRender('link'); 
    129  
    130                 $i->addLink($l); 
    131                 $c->addItem($i); 
    132             } 
    133  
    134             $t = new Template(); 
    135             $d = new Data(); 
    136  
    137             $d->setName('name'); 
    138             $d->setValue(null); 
    139             $d->setPrompt('Nome do Contato Recente'); 
    140             $d->setDataType('string'); 
    141             $d->setMaxLength(100); 
    142             $d->setMinLength(null); 
    143             $d->setRequired(true); 
    144  
    145             $t->addData($d); 
    146  
    147             $d = new Data(); 
    148             $d->setName('mail'); 
    149             $d->setValue(null); 
    150             $d->setPrompt('Email do Contato Recente'); 
    151             $d->setDataType('string'); 
    152             $d->setMaxLength(100); 
    153             $d->setMinLength(null); 
    154             $d->setRequired(true); 
    155  
    156             $t->addData($d); 
    157  
    158             $d = new Data(); 
    159             $d->setName('number_of_messages'); 
    160             $d->setValue(null); 
    161             $d->setPrompt('Quantidade de mensagens enviadas'); 
    162             $d->setDataType('integer'); 
    163             $d->setMaxLength(100); 
    164             $d->setMinLength(null); 
    165             $d->setRequired(false); 
    166  
    167             $t->addData($d); 
    168  
    169             $c->setTemplate($t); 
    170  
    171             $h->setCollection($c); 
    172  
    173         }catch (Exception $ex){ 
    174                 $error = new Error(); 
    175                 $error->setCode(Response::INTERNALSERVERERROR); 
    176                 $error->setTitle('Internal Server Error'); 
    177                 $error->setDescription($ex); 
    178  
    179                 $c->setError($error); 
    180                 $h->setCollection($c); 
    181  
    182                 $response->code = Response::INTERNALSERVERERROR; 
    183                 $response->body = $h->getHypermedia($request->accept[10][0]); 
    184                 return $response; 
     52                $d->setValue($value['name']); 
     53                $d->setPrompt('Nome do Contato Recente'); 
     54                $d->setDataType('string'); 
     55                $d->setMaxLength('100'); 
     56                $d->setMinLength(null); 
     57                $d->setRequired(true); 
     58 
     59                $i->addData($d); 
     60 
     61                $d = new Data(); 
     62                $d->setName('mail'); 
     63                $d->setValue($value['mail']); 
     64                $d->setPrompt('Email do Contato Recente'); 
     65                $d->setDataType('string'); 
     66                $d->setMaxLength('100'); 
     67                $d->setMinLength(null); 
     68                $d->setRequired(true); 
     69 
     70                $i->addData($d); 
     71 
     72                $d = new Data(); 
     73                $d->setName('number_of_messages'); 
     74                $d->setValue($value['number_of_messages']); 
     75                $d->setPrompt('Quantidade de mensagens enviadas'); 
     76                $d->setDataType('integer'); 
     77                $d->setMaxLength('100'); 
     78                $d->setMinLength(null); 
     79                $d->setRequired(false); 
     80 
     81                $i->addData($d); 
     82 
     83                $d = new Data(); 
     84                $d->setName('id'); 
     85                $d->setValue($value['id']); 
     86                $d->setPrompt('Id do contato dinamico'); 
     87                $d->setDataType('integer'); 
     88                $d->setMaxLength('100'); 
     89                $d->setMinLength(null); 
     90                $d->setRequired(false); 
     91 
     92                $i->addData($d); 
     93 
     94                $l = new Link(); 
     95 
     96                $l->setHref(''); 
     97                $l->setRel('delete'); 
     98                $l->setAlt('Remover'); 
     99                $l->setPrompt('Remover'); 
     100                $l->setRender('link'); 
     101 
     102                $i->addLink($l); 
     103 
     104                $l = new Link(); 
     105                $l->setHref(''); 
     106                $l->setRel('put'); 
     107                $l->setAlt('Atualizar'); 
     108                $l->setPrompt('Atualizar'); 
     109                $l->setRender('link'); 
     110 
     111                $i->addLink($l); 
     112 
     113                $l = new Link(); 
     114                $l->setHref('/dynamiccontact/' . $value['id']); 
     115                $l->setRel('get'); 
     116                $l->setAlt('Buscar'); 
     117                $l->setPrompt('Buscar'); 
     118                $l->setRender('link'); 
     119 
     120                $i->addLink($l); 
     121                $c->addItem($i); 
     122            } 
     123 
     124            $t = new Template(); 
     125            $d = new Data(); 
     126 
     127            $d->setName('name'); 
     128            $d->setValue(null); 
     129            $d->setPrompt('Nome do Contato Recente'); 
     130            $d->setDataType('string'); 
     131            $d->setMaxLength(100); 
     132            $d->setMinLength(null); 
     133            $d->setRequired(false); 
     134 
     135            $t->addData($d); 
     136 
     137            $d = new Data(); 
     138            $d->setName('mail'); 
     139            $d->setValue(null); 
     140            $d->setPrompt('Email do Contato Recente'); 
     141            $d->setDataType('string'); 
     142            $d->setMaxLength(100); 
     143            $d->setMinLength(null); 
     144            $d->setRequired(true); 
     145 
     146            $t->addData($d); 
     147 
     148            $d = new Data(); 
     149            $d->setName('number_of_messages'); 
     150            $d->setValue(null); 
     151            $d->setPrompt('Quantidade de mensagens enviadas'); 
     152            $d->setDataType('integer'); 
     153            $d->setMaxLength(100); 
     154            $d->setMinLength(null); 
     155            $d->setRequired(false); 
     156 
     157            $t->addData($d); 
     158 
     159            $c->setTemplate($t); 
     160 
     161            $h->setCollection($c); 
     162        } catch (Exception $ex) { 
     163            $this->createException($request, $response, Response::INTERNALSERVERERROR, 'Internal Server Error', $ex); 
     164            return $response; 
    185165        } 
    186166 
     
    199179     * @access     public 
    200180     * */ 
    201      function post($request){ 
    202  
    203         if(count($_POST) == 0){ 
    204                 $response = new Response($request); 
    205                 $response->code = Response::INTERNALSERVERERROR; 
    206                 return $response; 
     181    function post($request) { 
     182 
     183        $this->secured(); 
     184         
     185        if (count($_POST) == 0) { 
     186            $response = new Response($request); 
     187            $response->code = Response::INTERNALSERVERERROR; 
     188            return $response; 
    207189        } 
    208190 
     
    211193 
    212194        $params = array(); 
    213         foreach($_POST as $key => $value){ 
    214  
    215                 if( !isset( $map[ $key ] ) || $key == 'id' || $key == 'timestamp' || $key == 'number_of_messages' ){ 
    216                         continue; 
    217                 } 
    218                 $params[$key] = $value; 
    219         } 
    220  
    221         if(count($params) == 0){ 
    222                 $response = new Response($request); 
    223                 $response->code = Response::INTERNALSERVERERROR; 
    224                 return $response; 
    225         } 
    226  
    227  
    228         $response = new Response($request); 
    229 //      $response->addHeader('Content-type', 'aplication/json'); 
    230         $response->code = Response::CREATED; 
    231  
    232          
     195        foreach ($_POST as $key => $value) { 
     196 
     197            if (!isset($map[$key]) || $key == 'id' || $key == 'timestamp' || $key == 'number_of_messages') { 
     198                continue; 
     199            } 
     200            $params[$key] = $value; 
     201        } 
     202 
     203        if (count($params) == 0) { 
     204            $response = new Response($request); 
     205            $response->code = Response::INTERNALSERVERERROR; 
     206            return $response; 
     207        } 
     208 
     209 
     210        $response = new Response($request); 
     211        $response->addHeader('Content-type', 'aplication/json'); 
     212        $response->code = Response::CREATED; 
     213 
     214 
    233215        //completar os atributos 
    234         $params['owner']                = Config::me("uidNumber"); 
    235         $params['number_of_messages']   = '1'; 
    236         $params['timestamp']            = time(); 
    237  
    238  
    239         try{ 
    240  
    241 //                      $this->secured(); 
    242       
    243                     $idDynamicContact = Controller::create( 
    244                                                         array('concept' => 'dynamicContact'),  
    245                                                         $params 
    246                     ); 
    247  
    248                     if(!$idDynamicContact){ 
    249                         throw new Exception(Controller::service('PostgreSQL')->error); 
    250                     } 
    251  
    252         }catch (Exception $ex){ 
    253                 $response->code = Response::INTERNALSERVERERROR; 
    254                 return $response; 
    255         } 
    256  
    257 $response->body = json_encode(array('abc'=>'123')); 
    258  
    259         return $response; 
    260      } 
    261  
     216        $params['owner'] = Config::me("uidNumber"); 
     217        $params['number_of_messages'] = '1'; 
     218        $params['timestamp'] = time(); 
     219 
     220 
     221        try { 
     222            $idDynamicContact = Controller::create( 
     223                            array('concept' => 'dynamicContact'), $params 
     224            ); 
     225 
     226            if (!$idDynamicContact) { 
     227                throw new Exception(Controller::service('PostgreSQL')->error); 
     228            } 
     229        } catch (Exception $ex) { 
     230            $response->code = Response::INTERNALSERVERERROR; 
     231            return $response; 
     232        } 
     233 
     234        $response->body = json_encode(null); 
     235 
     236        return $response; 
     237    } 
     238 
     239    private function createException($request, &$response, $code, $title, $description) { 
     240        $response->code = $code; 
     241 
     242        $h = new Hypermedia(); 
     243        $c = new Collection($request->resources, 'DynamicContactResource'); 
     244        $e = new Error(); 
     245 
     246        $e->setCode($code); 
     247        $e->setTitle($title); 
     248        $e->setDescription($description); 
     249 
     250        $c->setError($e); 
     251        $h->setCollection($c); 
     252 
     253        $response->body = $h->getHypermedia($request->accept[10][0]); 
     254    } 
    262255 
    263256} 
     257 
    264258?> 
Note: See TracChangeset for help on using the changeset viewer.