Update PlacesController and routes to include italy municipality info routes

This commit is contained in:
Matteo Gheza 2024-01-23 01:17:35 +01:00
parent 6b7ed390a8
commit 687d7613a0
3 changed files with 37 additions and 3 deletions

View File

@ -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()]);

View File

@ -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);

View File

@ -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;