source: sandbox/2.4.1-3/prototype/rest/catalog/DynamicContactsResource.php @ 6473

Revision 6473, 7.0 KB checked in by gustavo, 12 years ago (diff)

Ticket #2766 - Acrescentando rotas e novo atributo no contato recente.

  • Property svn:executable set to *
Line 
1<?php
2
3if( !defined( 'ROOTPATH' ) )
4    define( 'ROOTPATH', dirname(__FILE__).'/..' );
5
6require_once(ROOTPATH.'/rest/hypermedia/hypermedia.php');
7
8use prototype\api\Config as Config;
9
10class DynamicContactsResource extends Resource {
11
12    /**
13     * Retorna uma lista de contatos recentes
14     *
15     * @license    http://www.gnu.org/copyleft/gpl.html GPL
16     * @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br)
17     * @sponsor    Caixa Econômica Federal
18     * @author     José Vicente Tezza Jr.
19     * @return     Retorna uma lista de contatos recentes
20     * @access     public
21     * */
22    function get($request) {
23
24        $response = new Response($request);
25        $response->addHeader('Content-type', 'aplication/json');
26        $response->code = Response::OK;
27
28        $h = new Hypermedia();
29        $c = new Collection($request->resources, 'DynamicContactsResource');
30
31        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) )
40            );
41
42            //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]);
54                return $response;
55            }
56
57            foreach($dynamicContacts as $value){
58                $d = new Data();
59                $i = new Item($request->resources, 'DynamicContactsResource', $value['id']);
60
61                $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                $l = new Link();
94
95                $l->setHref('');
96                $l->setRel('delete');
97                $l->setAlt('Remover');
98                $l->setPrompt('Remover');
99                $l->setRender('link');
100
101                $i->addLink($l);
102
103                $l = new Link();
104                $l->setHref('');
105                $l->setRel('put');
106                $l->setAlt('Atualizar');
107                $l->setPrompt('Atualizar');
108                $l->setRender('link');
109
110                $i->addLink($l);
111
112                $l = new Link();
113                $l->setHref('/dynamiccontact/'.$value['id']);
114                $l->setRel('get');
115                $l->setAlt('Buscar');
116                $l->setPrompt('Buscar');
117                $l->setRender('link');
118
119                $i->addLink($l);
120                $c->addItem($i);
121            }
122
123            $t = new Template();
124            $d = new Data();
125
126            $d->setName('name');
127            $d->setValue(null);
128            $d->setPrompt('Nome do Contato Recente');
129            $d->setDataType('string');
130            $d->setMaxLength(100);
131            $d->setMinLength(null);
132            $d->setRequired(true);
133
134            $t->addData($d);
135
136            $d = new Data();
137            $d->setName('mail');
138            $d->setValue(null);
139            $d->setPrompt('Email 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('number_of_messages');
149            $d->setValue(null);
150            $d->setPrompt('Quantidade de mensagens enviadas');
151            $d->setDataType('integer');
152            $d->setMaxLength(100);
153            $d->setMinLength(null);
154            $d->setRequired(false);
155
156            $t->addData($d);
157
158            $c->setTemplate($t);
159
160            $h->setCollection($c);
161
162        }catch (Exception $ex){
163                $error = new Error();
164                $error->setCode(Response::INTERNALSERVERERROR);
165                $error->setTitle('Internal Server Error');
166                $error->setDescription($ex);
167
168                $c->setError($error);
169                $h->setCollection($c);
170
171                $response->code = Response::INTERNALSERVERERROR;
172                $response->body = $h->getHypermedia($request->accept[10][0]);
173                return $response;
174        }
175
176        $response->body = $h->getHypermedia($request->accept[10][0]);
177        return $response;
178    }
179
180    /**
181     * Salva um contato recente
182     *
183     * @license    http://www.gnu.org/copyleft/gpl.html GPL
184     * @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br)
185     * @sponsor    Caixa Econômica Federal
186     * @author     José Vicente Tezza Jr.
187     * @return     retorna a uri do contato recente
188     * @access     public
189     * */
190     function post($request){
191
192        if(count($_POST) == 0){
193                $response = new Response($request);
194                $response->code = Response::INTERNALSERVERERROR;
195                return $response;
196        }
197
198        //recupera os atributos definidos no conceito 'user'
199        $map = Config::get('dynamicContact', 'PostgreSQL.mapping');
200
201        $params = array();
202        foreach($_POST as $key => $value){
203
204                if( !isset( $map[ $key ] ) || $key == 'id' || $key == 'timestamp' || $key == 'number_of_messages' ){
205                        continue;
206                }
207                $params[$key] = $value;
208        }
209
210        if(count($params) == 0){
211                $response = new Response($request);
212                $response->code = Response::INTERNALSERVERERROR;
213                return $response;
214        }
215
216
217        $response = new Response($request);
218//      $response->addHeader('Content-type', 'aplication/json');
219        $response->code = Response::CREATED;
220
221       
222        //completar os atributos
223        $params['owner']                = Config::me("uidNumber");
224        $params['number_of_messages']   = '1';
225        $params['timestamp']            = time();
226
227
228        try{
229
230//                      $this->secured();
231     
232                    $idDynamicContact = Controller::create(
233                                                        array('concept' => 'dynamicContact'),
234                                                        $params
235                    );
236
237                    if(!$idDynamicContact){
238                        throw new Exception(Controller::service('PostgreSQL')->error);
239                    }
240
241        }catch (Exception $ex){
242                $response->code = Response::INTERNALSERVERERROR;
243                return $response;
244        }
245
246$response->body = json_encode(array('abc'=>'123'));
247
248        return $response;
249     }
250
251
252}
253?>
Note: See TracBrowser for help on using the repository browser.