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

Revision 6512, 7.4 KB checked in by gustavo, 12 years ago (diff)

Ticket #2766 - implementacao da dfd0065 e correcao de bugs da dfd0099

  • 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                                $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;
185        }
186
187        $response->body = $h->getHypermedia($request->accept[10][0]);
188        return $response;
189    }
190
191    /**
192     * Salva um contato recente
193     *
194     * @license    http://www.gnu.org/copyleft/gpl.html GPL
195     * @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br)
196     * @sponsor    Caixa Econômica Federal
197     * @author     José Vicente Tezza Jr.
198     * @return     retorna a uri do contato recente
199     * @access     public
200     * */
201     function post($request){
202
203        if(count($_POST) == 0){
204                $response = new Response($request);
205                $response->code = Response::INTERNALSERVERERROR;
206                return $response;
207        }
208
209        //recupera os atributos definidos no conceito 'user'
210        $map = Config::get('dynamicContact', 'PostgreSQL.mapping');
211
212        $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       
233        //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
262
263}
264?>
Note: See TracBrowser for help on using the repository browser.