File: /var/www/html/orbidirectory.com/app/Http/Controllers/Admin/CityController.php
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\CitySelection;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Symfony\Component\Console\Command\DumpCompletionCommand;
use Yajra\DataTables\Facades\DataTables;
class CityController extends Controller
{
public function index(Request $request){
if ($request->ajax()) {
$data = CitySelection::latest()->get();
return DataTables::of($data)
->addIndexColumn()
->addColumn('image', function ($row) {
$url = $row->getFirstMediaUrl('city_image');
return $url ? '<img src="' . $url . '" width="40" />' : 'No Image';
})
->addColumn('action', function ($row) {
return view('admin.cities.partially.delete', compact('row'));
})
->rawColumns(['image', 'action'])
->make(true);
}
return view('admin.cities.index');
}
public function create(){
return view('admin.cities.create');
}
public function store(Request $request)
{
try {
// Validate request
$request->validate([
'name' => 'required|string|max:255',
'city_image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
// Create and save city
$city = new CitySelection;
$city->name = $request->name;
$city->save();
// Store image using Spatie Media Library
if ($request->hasFile('city_image')) {
$city->addMediaFromRequest('city_image')->toMediaCollection('city_image');
}
// Set success flash message
return redirect()->route('cities.index')->with('success', 'City created successfully!');
} catch (\Exception $e) {
Log::error('City Store Error: ' . $e->getMessage());
// Redirect back with error message
return redirect()->back()->with('error', 'Something went wrong while creating the city.');
}
}
public function edit(Request $request, $id){
$city = CitySelection::find($id);
return view('admin.cities.edit',compact('city'));
}
public function update(Request $request, $id)
{
try {
// Validate request
$request->validate([
'name' => 'required|string|max:255',
'city_image' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
// Find the city
$city = CitySelection::findOrFail($id);
$city->name = $request->name;
$city->save();
// If new image uploaded, replace the old one
if ($request->hasFile('city_image')) {
$city->clearMediaCollection('city_image'); // remove old image
$city->addMediaFromRequest('city_image')->toMediaCollection('city_image'); // add new image
}
// Redirect with success message
return redirect()->route('cities.index')->with('success', 'City updated successfully!');
} catch (\Exception $e) {
Log::error('City Update Error: ' . $e->getMessage());
return redirect()->back()->with('error', 'Something went wrong while updating the city.');
}
}
public function delete(Request $request, $id){
{
$city = CitySelection::find($id);
if (isset($city)) {
$city->Delete();
return redirect()->back()->with('success', 'city has been deleted successfully.');
} else {
return back()->with('error', 'city not found.');
}
}
}
}