source: branches/2.4/prototype/rest/catalog/GroupResource.php @ 6754

Revision 6754, 5.5 KB checked in by niltonneto, 12 years ago (diff)

Ticket #0000 - Copiadas as alterações do Trunk. Versão final da 2.4.1.

  • 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 GroupResource extends Resource {
11
12    /**
13     * Retorna um grupo pelo seu identificador e seus parcitipantes
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     Gustavo Pereira dos Santos Stabelini
19     * @return     Retorna um grupo pelo seu identificador e seus parcitipantes
20     * @access     public
21     * */
22    function get($request, $id) {
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, 'GroupResource');
30
31        try {
32            $this->secured();
33
34            $group = Controller::find( array( 'concept' => 'contactGroup' ), false, array( 'filter' => array( 'AND', array('=', 'user',  Config::me("uidNumber") ), array('=', 'id', $id) )  ) );
35
36            //Se nao foi encontrado contatos na consulta
37            if($group===false){
38                $error = new Error();
39                $error->setCode(Response::NOTFOUND);
40                $error->setTitle('Group not found');
41                $error->setDescription('Group 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($group[0]['contacts'] as $value){
52                        $d = new Data();
53                        $i = new Item($request->resources, 'ContactResource', $value['id']);
54
55                        $d->setName('name');
56                        $d->setValue($value['name']);
57                        $d->setPrompt('Nome do Grupo');
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('id');
67                        $d->setValue($value['id']);
68                        $d->setPrompt('Id 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('email');
78                        $d->setValue($value['email']);
79                        $d->setPrompt('Email 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('id');
156                $d->setValue($group[0]['id']);
157                $d->setPrompt('Id do Grupo');
158                $d->setDataType('string');
159                $d->setMaxLength(100);
160                $d->setMinLength(null);
161                $d->setRequired(true);
162
163                $c->addData($d);
164
165                $d = new Data();
166                $d->setName('name');
167                $d->setValue($group[0]['name']);
168                $d->setPrompt('Nome do Grupo');
169                $d->setDataType('string');
170                $d->setMaxLength(100);
171                $d->setMinLength(null);
172                $d->setRequired(true);
173
174                $c->addData($d);
175               
176                $d = new Data();
177                $d->setName('email');
178                $d->setValue($group[0]['email']);
179                $d->setPrompt('Email do Grupo');
180                $d->setDataType('string');
181                $d->setMaxLength(100);
182                $d->setMinLength(null);
183                $d->setRequired(true);
184
185                $c->addData($d);       
186               
187                $l = new Link();
188                $l->setHref('/group/'.$group[0]['id']);
189                $l->setRel('get');
190                $l->setAlt('Buscar');
191                $l->setPrompt('Buscar');
192                $l->setRender('link');
193
194                $c->addLink($l);
195                       
196                $l = new Link();
197                $l->setHref(null);
198                $l->setRel('put');
199                $l->setAlt('Edit');
200                $l->setRender('link');
201                $l->setPrompt('Editar');
202
203                $c->addLink($l);
204               
205                $l = new Link();
206                $l->setHref(null);
207                $l->setRel('post');
208                $l->setAlt('Create');
209                $l->setRender('link');
210                $l->setPrompt('Criar');
211
212                $c->addLink($l);
213               
214                $l = new Link();
215                $l->setHref(null);
216                $l->setRel('delete');
217                $l->setAlt('Delete');
218                $l->setRender('link');
219                $l->setPrompt('Remover');
220
221                $c->addLink($l);
222               
223                $h->setCollection($c);
224
225        }catch (Exception $ex){
226                $error = new Error();
227                $error->setCode(Response::INTERNALSERVERERROR);
228                $error->setTitle('Internal Server Error');
229                $error->setDescription($ex);
230
231                $c->setError($error);
232                $h->setCollection($c);
233
234                $response->code = Response::INTERNALSERVERERROR;
235                $response->body = $h->getHypermedia($request->accept[10][0]);
236                return $response;
237        }
238
239        $response->body = $h->getHypermedia($request->accept[10][0]);
240        return $response;
241  }
242}
243?>
Note: See TracBrowser for help on using the repository browser.