diff --git a/backend/app/Http/Controllers/PlacesController.php b/backend/app/Http/Controllers/PlacesController.php index a011dec..ef385b5 100644 --- a/backend/app/Http/Controllers/PlacesController.php +++ b/backend/app/Http/Controllers/PlacesController.php @@ -13,7 +13,7 @@ class PlacesController extends Controller /** * Search place using OSM APIs. */ - public function search(Request $request) + public function reverseSearch(Request $request) { User::where('id', $request->user()->id)->update(['last_access' => now()]); @@ -30,6 +30,35 @@ class PlacesController extends Controller return response()->json($result); } + public function italyListRegions() + { + $seconds = 60 * 60 * 24 * 365 * 10; // 10 years + $result = Cache::remember('italy_regions', $seconds, function () { + return Http::get('https://axqvoqvbfjpaamphztgd.functions.supabase.co/regioni')->object(); + }); + return response()->json($result); + } + + public function italyListProvincesByRegion(Request $request, string $region_name) + { + $region_name = strtolower($region_name); + $seconds = 60 * 60 * 24 * 365; // 1 year + $result = Cache::remember('italy_provinces_'.$region_name, $seconds, function () use ($region_name) { + return Http::get('https://axqvoqvbfjpaamphztgd.functions.supabase.co/province/'.$region_name)->object(); + }); + return response()->json($result); + } + + public function italyListMunicipalitiesByProvince(Request $request, string $province_name) + { + $province_name = strtolower($province_name); + $seconds = 60 * 60 * 24 * 365; // 1 year + $result = Cache::remember('italy_municipalities_'.$province_name, $seconds, function () use ($province_name) { + return Http::get('https://axqvoqvbfjpaamphztgd.functions.supabase.co/comuni/provincia/'.$province_name)->object(); + }); + return response()->json($result); + } + public function show(Request $request, $id) { User::where('id', $request->user()->id)->update(['last_access' => now()]); diff --git a/backend/routes/api.php b/backend/routes/api.php index d4e1ca4..361216b 100644 --- a/backend/routes/api.php +++ b/backend/routes/api.php @@ -77,7 +77,12 @@ Route::middleware('auth:sanctum')->group( function () { Route::get('/service_types', [ServiceTypeController::class, 'index']); Route::post('/service_types', [ServiceTypeController::class, 'create']); - Route::get('/places/search', [PlacesController::class, 'search']); + + Route::get('/places/reverse/search', [PlacesController::class, 'reverseSearch']); + Route::get('/places/italy/regions', [PlacesController::class, 'italyListRegions']); + Route::get('/places/italy/provinces/{region_name}', [PlacesController::class, 'italyListProvincesByRegion']); + Route::get('/places/italy/municipalities/{province_name}', [PlacesController::class, 'italyListMunicipalitiesByProvince']); + Route::get('/places/{id}', [PlacesController::class, 'show']); Route::get('/trainings', [TrainingController::class, 'index'])->middleware(ETag::class); diff --git a/frontend/src/app/_components/map-picker/map-picker.component.ts b/frontend/src/app/_components/map-picker/map-picker.component.ts index d0cc971..e55a28b 100644 --- a/frontend/src/app/_components/map-picker/map-picker.component.ts +++ b/frontend/src/app/_components/map-picker/map-picker.component.ts @@ -101,7 +101,7 @@ export class MapPickerComponent implements OnInit { }); return; } - this.api.get("places/search", { + this.api.get("places/reverse/search", { q: this.placeName }).then((places) => { this.isPlaceSearchResultsOpen = true;