diff --git a/app/Console/Commands/GpsCommand.php b/app/Console/Commands/GpsCommand.php deleted file mode 100644 index a33ac1d..0000000 --- a/app/Console/Commands/GpsCommand.php +++ /dev/null @@ -1,70 +0,0 @@ -select("SELECT DISTINCT cp4, cp3 FROM ctt where district_id = 8 AND latitude IS NULL ORDER BY cp3;"); - - $client = new \GuzzleHttp\Client(); - foreach($results as $result) { - $url = sprintf($gpsUrl, $result->cp4, $result->cp3); - $res = $client->request('GET', $url); - $body = (string)$res->getBody(); - $dom = HtmlDomParser::str_get_html($body); - $gps = $dom->find('span[class="pull-right gps"]',0)->innertext; - if($gps) { - $gps = trim(str_replace('GPS:','',$gps)); - $parts = explode(',',$gps); - if(!is_array($parts) || count($parts) != 2){ - continue; - } - list($lat, $long) = $parts; - $lat = floatval($lat); - $long = floatval($long); - DB::table('ctt')->where([ - ['cp4', '=', $result->cp4], - ['cp3', '=', $result->cp3], - ])->update(['latitude' => $lat,'longitude' => $long]); - echo($result->cp4.'-'.$result->cp3.' -> '.$lat.'/'.$long."\n"); - - } else { - echo($result->cp4.'-'.$result->cp3." -> \n"); - } - - sleep(1); - - } - } - -} diff --git a/app/Http/Controllers/ApiV1/IndexController.php b/app/Http/Controllers/ApiV1/IndexController.php index ed61362..2f2a0ea 100644 --- a/app/Http/Controllers/ApiV1/IndexController.php +++ b/app/Http/Controllers/ApiV1/IndexController.php @@ -9,7 +9,7 @@ class IndexController extends Controller { - + public function Index(Request $request, $cp3, $cp4) { $results = DB::table('ctt') @@ -25,10 +25,15 @@ public function Index(Request $request, $cp3, $cp4) ['ctt.cp3', '=', $cp3], ])->get(); - return response()->json($results); + $data = []; + foreach($results as $result) { + $data[] = $this->normalizeData($result); + } + + return response()->json($data); } - - + + public function Random() { $id = DB::table('ctt') @@ -36,7 +41,7 @@ public function Random() ->inRandomOrder() ->first(); - $results = DB::table('ctt') + $result = DB::table('ctt') ->leftJoin('districts', 'ctt.district_id', '=', 'districts.district_id') ->leftJoin('locations', 'ctt.location_id', '=', 'locations.location_id') ->leftJoin('municipalities', function ($join) { @@ -46,8 +51,52 @@ public function Random() ->select('locations.name', 'districts.name AS district', 'municipalities.name AS municipality', 'ctt.*') ->where('ctt.id', $id->id)->first(); - return response()->json($results); + return response()->json($this->normalizeData($result)); } - -} + + protected function normalizeData($result) + { + $fullAddress = []; + if(!empty(trim($result->art_tipo))) { + $fullAddress[] = trim($result->art_tipo); + } + + if(!empty(trim($result->pri_prep))) { + $fullAddress[] = trim($result->pri_prep); + } + + if(!empty(trim($result->art_titulo))) { + $fullAddress[] = trim($result->art_titulo); + } + + if(!empty(trim($result->seg_prep))) { + $fullAddress[] = trim($result->seg_prep); + } + + if(!empty(trim($result->art_desig))) { + $fullAddress[] = trim($result->art_desig); + } + + if(!empty(trim($result->porta))) { + $fullAddress[] = ', '.trim($result->porta); + } + + return [ + 'locationName' => trim($result->name), + 'fullAddress' => implode(' ', $fullAddress), + 'zone' => trim($result->art_local), + 'section' => trim($result->troco), + 'doorNumber' => trim($result->porta), + 'clientName' => trim($result->cliente), + 'cp4' => trim($result->cp4), + 'cp3' => trim($result->cp3), + 'cpalf' => trim($result->cpalf), + 'districtName' => trim($result->district), + 'municipalityName' => trim($result->municipality), + 'latitude' => $result->latitude, + 'longitude' => $result->longitude, + ]; + } + +} diff --git a/app/Http/Controllers/ExampleController.php b/app/Http/Controllers/ExampleController.php deleted file mode 100644 index de8f6da..0000000 --- a/app/Http/Controllers/ExampleController.php +++ /dev/null @@ -1,18 +0,0 @@ -
@@ -31,26 +34,17 @@[ { - "name": "Lisboa", - "district": "Lisboa", - "municipality": "Lisboa", - "id": 136883, - "location_id": 21696, - "municipality_id": 6, - "district_id": 11, - "art_cod": "300460611", - "art_tipo": "Rossio", - "pri_prep": "dos", - "art_titulo": "", - "seg_prep": "", - "art_desig": "Olivais", - "art_local": "", - "troco": "", - "porta": "", - "cliente": "", + "locationName": "Lisboa", + "fullAddress": "Rossio dos Olivais", + "zone": "", + "section": "", + "doorNumber": "", + "clientName": "", "cp4": "1990", "cp3": "231", "cpalf": "LISBOA", + "districtName": "Lisboa", + "municipalityName": "Lisboa", "latitude": null, "longitude": null }