File: /var/www/html/orbidirectory.com/app/Http/Controllers/CityController.php
<?php
namespace App\Http\Controllers;
use App\Models\CitySelection;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cookie;
use Illuminate\Support\Facades\DB;
class CityController extends Controller
{
public function selectCity(Request $request)
{
$cityId = $request->city_id;
// If the 'Select City' option is selected, expire the cookie
if ($cityId == '') {
// Expire the city cookie
Cookie::queue(Cookie::forget('selected_city'));
} else {
// Set city in a cookie (expires in 30 days)
Cookie::queue('selected_city', $cityId, 30);
}
// Retrieve city name for updating the UI dynamically
$cityName = $cityId ? CitySelection::find($cityId)->name : '';
return response()->json(['status' => 'success', 'city_name' => $cityName]);
}
// public function selectCity(Request $request)
// {
// $request->validate(['city_id' => 'required|integer']);
// $cityId = $request->city_id;
// // Set city in a cookie (expires in 30 days)
// Cookie::queue('selected_city', $cityId, 30);
// // Retrieve city name for updating the UI dynamically
// $cityName = CitySelection::find($cityId)->name ?? '';
// return response()->json(['status' => 'success', 'city_name' => $cityName]);
// }
public function setCityCookie(Request $request)
{
$cityId = $request->input('city_id');
return response()->json(['success' => true])
->cookie('selected_city', $cityId, 60 * 24 * 30); // 30 days
}
public function detectCityByLocation(Request $request){
$lat = $request->latitude;
$lng = $request->longitude;
$city = CitySelection::where('latitude',$lat)->where('longitude',$lng)->first();
if ($city) {
return response()->json(['success' => true, 'city' => $city])
->cookie('selected_city', $city->id, 60 * 24 * 30); // 30 days
}
return response()->json(['success' => false, 'message' => 'No nearby city found.']);
}
}