/home2/mshostin/carnival.ms-hostingladz.com/app/Http/Controllers/ServiceController.php
<?php
namespace App\Http\Controllers;
use App\Models\Service;
use Illuminate\Http\Request;
use App\Traits\ImageTrait;
use Illuminate\Support\Facades\Auth;
class ServiceController extends Controller
{
use ImageTrait;
public function index()
{
$services = Service::all();
return view('dashboard.admin.services.index', compact('services'));
}
public function store(Request $request)
{
$data = $request->except(['poster']);
$poster = $this->uploadImage($request->file('poster'), 'poster');
$data['poster'] = $poster;
$data['user_id'] = Auth::id();
$service = Service::create($data);
if ($service) {
$services = Service::all();
$view = view('dashboard.admin.services.table', compact('services'))->render();
return response()->json(['message' => 'Service created successfully', 'table_html' => $view], 200);
} else {
return response()->json(['error' => 'Failed to create Service'], 500);
}
}
public function edit($id)
{
$service = Service::findOrFail($id);
return response()->json(['service' => $service]);
}
public function update(Request $request, $id)
{
try {
$data = $request->except(['poster']);
$service = Service::findOrFail($id);
$service->update($data);
if ($request->hasFile('poster')) {
$this->deleteImage($service->poster);
$poster = $this->uploadImage($request->file('poster'), 'poster');
$service->update(['poster' => $poster]);
}
if ($service->wasChanged()) {
$services = Service::all();
$view = view('dashboard.admin.services.table', compact('services'))->render();
return response()->json(['message' => 'Service updated successfully', 'table_html' => $view], 200);
} else {
return response()->json(['error' => 'No changes detected for the Service'], 400);
}
} catch (ModelNotFoundException $e) {
return response()->json(['error' => 'Service not found'], 404);
} catch (\Exception $e) {
return response()->json(['error' => 'Failed to update Service: ' . $e->getMessage()], 500);
}
}
public function destroy($id)
{
$service = Service::findOrFail($id);
$service->delete();
if ($service) {
$services = Service::all();
$view = view('dashboard.admin.services.table', compact('services'))->render();
return response()->json(['message' => 'Service deleted successfully', 'table_html' => $view], 200);
} else {
return response()->json(['error' => 'Failed to delete Service'], 500);
}
}
}