1+ <?php
2+
3+ namespace App \Controllers ;
4+
5+ use App \Models \AddressModel ;
6+
7+ class AddressController {
8+
9+ public function get ($ id ) {
10+ try {
11+ $ address = new AddressModel ;
12+ $ addressData = $ address ->read ($ id );
13+ if (!$ addressData ) {
14+ http_response_code (404 );
15+ echo json_encode (['error ' => 'Usuario nao possui enderecos cadastrados ' ]);
16+ return ;
17+ }
18+
19+ $ formattedAddresses = array_map (function ($ address ) {
20+ return [
21+ 'ID ' => $ address ['id ' ],
22+ 'Logradouro ' => $ address ['logradouro ' ],
23+ 'Numero ' => $ address ['numero ' ],
24+ 'Cep ' => $ address ['cep ' ]
25+ ];
26+ }, $ addressData );
27+
28+ http_response_code (200 );
29+ echo json_encode (['Enderecos do usuario ' => $ formattedAddresses ]);
30+ } catch (\Exception $ e ) {
31+ http_response_code (500 );
32+ echo json_encode (['error ' => $ e ->getMessage ()]);
33+ }
34+ }
35+
36+ public function post ($ id ) {
37+ try {
38+ $ data = $ this ->getJsonBody ();
39+ $ address = new AddressModel ;
40+ $ createdAddressId = $ address ->create ($ data , $ id );
41+ if ($ createdAddressId !== null ) {
42+ http_response_code (201 );
43+ echo json_encode (['message ' => 'Endereco cadastrado com sucesso ' , 'id ' => $ createdAddressId ]);
44+ } else {
45+ http_response_code (400 );
46+ echo json_encode (['message ' => 'Falha ao cadastrar endereco ' ]);
47+ }
48+ } catch (\Exception $ e ) {
49+ http_response_code (500 );
50+ echo json_encode (['error ' => $ e ->getMessage ()]);
51+ }
52+ }
53+
54+ public function put ($ userID , $ addressID ) {
55+ try {
56+ $ data = $ this ->getJsonBody ();
57+ $ address = new AddressModel ;
58+ $ updateResult = $ address ->update ($ data , $ userID , $ addressID );
59+ if ($ updateResult === 'no changes ' ) {
60+ http_response_code (200 );
61+ echo json_encode (['message ' => 'Dados nao alterados: os dados inseridos sao iguais aos ja cadastrados ' ]);
62+ } elseif ($ updateResult > 0 ) {
63+ http_response_code (200 );
64+ echo json_encode (['message ' => 'Endereco atualizado com sucesso ' ]);
65+ } else {
66+ http_response_code (400 );
67+ echo json_encode (['message ' => 'Falha ao atualizar endereco: endereco nao encontrado ou nao pertence ao usuario ' ]);
68+ }
69+ } catch (\Exception $ e ) {
70+ http_response_code (500 );
71+ echo json_encode (['error ' => $ e ->getMessage ()]);
72+ }
73+ }
74+
75+ public function delete ($ userID , $ addressID ) {
76+ try {
77+ $ address = new AddressModel ;
78+ $ affectedRows = $ address ->delete ($ userID , $ addressID );
79+ if ($ affectedRows > 0 ) {
80+ http_response_code (200 );
81+ echo json_encode (['message ' => 'Endereco deletado com sucesso ' ]);
82+ } else {
83+ http_response_code (400 );
84+ echo json_encode (['message ' => 'Falha ao deletar endereco: endereco nao encontrado ou nao pertence ao usuario ' ]);
85+ }
86+ } catch (\Exception $ e ) {
87+ http_response_code (500 );
88+ echo json_encode (['error ' => $ e ->getMessage ()]);
89+ }
90+ }
91+
92+ public function getByCep ($ cep , $ userID ) {
93+ try {
94+ $ address = new AddressModel ;
95+ $ addressData = $ address ->readByCep ($ cep , $ userID );
96+ if (!$ addressData ) {
97+ http_response_code (404 );
98+ echo json_encode (['error ' => 'Usuario nao possui um endereco com o cep: ' . $ cep ]);
99+ return ;
100+ }
101+
102+ $ formattedAddresses = array_map (function ($ address ) {
103+ return [
104+ 'Logradouro ' => $ address ['logradouro ' ],
105+ 'Numero ' => $ address ['numero ' ],
106+ 'Cep ' => $ address ['cep ' ]
107+ ];
108+ }, $ addressData );
109+
110+ http_response_code (200 );
111+ echo json_encode (['Endereco do usuario ' => $ formattedAddresses ]);
112+ } catch (\Exception $ e ) {
113+ http_response_code (500 );
114+ echo json_encode (['error ' => $ e ->getMessage ()]);
115+ }
116+ }
117+
118+ // Valida o JSON recebido pela requisição
119+ private function getJsonBody () {
120+ $ data = json_decode (file_get_contents ('php://input ' ), true );
121+ if ($ data === null && json_last_error () !== JSON_ERROR_NONE ) {
122+ throw new \Exception ('Dados invalidos no corpo da requisição ' );
123+ }
124+ return $ data ;
125+ }
126+ }
0 commit comments