source: sandbox/2.4.1-3/prototype/rest/catalog/ContactsResource.php @ 6429

Revision 6429, 5.2 KB checked in by gustavo, 12 years ago (diff)

Ticket #2766 - Correções na arquitetura REST(campo DATA) e arrumado os recursos

  • 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 ContactsResource extends Resource {
11
12    /**
13     * Retorna uma lista de usuários
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 usuários do LDAP
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, 'ContactsResource');
30
31        try {
32            $this->secured();
33
34            $contacts = Controller::find( array( 'concept' => 'contact' ), false, array( 'filter' => array( '=', 'user',  Config::me("uidNumber") ) ) );
35
36            //Se nao foi encontrado contatos na consulta
37            if($contacts===false){
38                $error = new Error();
39                $error->setCode(Response::NOTFOUND);
40                $error->setTitle('Contacts not found');
41                $error->setDescription('Contacts not found.');
42
43                $c->setError($error);
44                $h->setCollection($c);
45
46                $response->code = Response::NOTFOUND;
47                $response->body = $h->getHypermedia($request->accept[10][0]);
48                return $response;
49            }
50
51            foreach($contacts as $value){
52                $d = new Data();
53                $i = new Item($request->resources, 'ContactsResource', $value['id']);
54
55                $d->setName('name');
56                $d->setValue($value['name']);
57                $d->setPrompt('Nome do Contato');
58                $d->setDataType('string');
59                $d->setMaxLength('100');
60                $d->setMinLength(null);
61                $d->setRequired(true);
62
63                $i->addData($d);
64
65                $d = new Data();
66                $d->setName('email');
67                $d->setValue($value['email']);
68                $d->setPrompt('Email do Contato');
69                $d->setDataType('string');
70                $d->setMaxLength('100');
71                $d->setMinLength(null);
72                $d->setRequired(true);
73
74                $i->addData($d);
75
76                $d = new Data();
77                $d->setName('telephone');
78                $d->setValue($value['telephone']);
79                $d->setPrompt('Telefone do Contato');
80                $d->setDataType('string');
81                $d->setMaxLength('100');
82                $d->setMinLength(null);
83                $d->setRequired(true);
84
85                $i->addData($d);
86
87                $l = new Link();
88
89                $l->setHref('');
90                $l->setRel('delete');
91                $l->setAlt('Remover');
92                $l->setPrompt('Remover');
93                $l->setRender('link');
94
95                $i->addLink($l);
96
97                $l = new Link();
98                $l->setHref('');
99                $l->setRel('put');
100                $l->setAlt('Atualizar');
101                $l->setPrompt('Atualizar');
102                $l->setRender('link');
103
104                $i->addLink($l);
105
106                $l = new Link();
107                $l->setHref('/contact/'.$value['id']);
108                $l->setRel('get');
109                $l->setAlt('Buscar');
110                $l->setPrompt('Buscar');
111                $l->setRender('link');
112
113                $i->addLink($l);
114                $c->addItem($i);
115            }
116
117            $t = new Template();
118            $d = new Data();
119
120            $d->setName('name');
121            $d->setValue(null);
122            $d->setPrompt('Nome do Contato');
123            $d->setDataType('string');
124            $d->setMaxLength(100);
125            $d->setMinLength(null);
126            $d->setRequired(true);
127
128            $t->addData($d);
129
130            $d = new Data();
131            $d->setName('email');
132            $d->setValue(null);
133            $d->setPrompt('Email do Contato');
134            $d->setDataType('string');
135            $d->setMaxLength(100);
136            $d->setMinLength(null);
137            $d->setRequired(true);
138
139            $t->addData($d);
140
141            $d = new Data();
142            $d->setName('telefone');
143            $d->setValue(null);
144            $d->setPrompt('Telefone do Contato');
145            $d->setDataType('string');
146            $d->setMaxLength(100);
147            $d->setMinLength(null);
148            $d->setRequired(true);
149
150            $t->addData($d);
151
152            $c->setTemplate($t);
153
154            $d = new Data();
155            $d->setName('Contato');
156            $d->setValue(null);
157            $d->setPrompt('Contato');
158            $d->setDataType(null);
159            $d->setMaxLength(null);
160            $d->setMinLength(null);
161            $d->setRequired(null);
162
163            $c->addData($d);
164
165            $h->setCollection($c);
166
167        }catch (Exception $ex){
168                $error = new Error();
169                $error->setCode(Response::INTERNALSERVERERROR);
170                $error->setTitle('Internal Server Error');
171                $error->setDescription($ex);
172
173                $c->setError($error);
174                $h->setCollection($c);
175
176                $response->code = Response::INTERNALSERVERERROR;
177                $response->body = $h->getHypermedia($request->accept[10][0]);
178                return $response;
179        }
180
181        $response->body = $h->getHypermedia($request->accept[10][0]);
182        return $response;
183  }
184}
185?>
Note: See TracBrowser for help on using the repository browser.