MIF_E31231042/app/Http/Controllers/UlasanController.php

65 lines
1.7 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Ulasan;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class UlasanController extends Controller
{
public function index()
{
$query = Ulasan::query()->latest();
$isAdmin = Auth::check() && Auth::user()->email === 'admin@pawmedic.app';
if (!$isAdmin) {
$query->where('is_hidden', false);
}
$ulasan = $query->get();
// 🔥 TOTAL ULASAN
$total = $ulasan->count();
// 🔥 RATING RATA-RATA
$avg = $ulasan->avg('rating') ?? 0;
// 🔥 5 BINTANG %
$fiveStar = $ulasan->where('rating', 5)->count();
$fivePercent = $total > 0 ? round(($fiveStar / $total) * 100) : 0;
return view('ulasan', compact('ulasan', 'total', 'avg', 'fivePercent'));
}
public function store(Request $request)
{
Ulasan::create($request->all());
return redirect()->back()->with('success', 'Ulasan berhasil dikirim!');
}
public function destroy($id)
{
if (!Auth::check() || Auth::user()->email !== 'admin@pawmedic.app') {
abort(403);
}
$ulasan = Ulasan::findOrFail($id);
$ulasan->delete();
return redirect()->back()->with('success', 'Ulasan berhasil dihapus');
}
public function toggleHide($id)
{
if (!Auth::check() || Auth::user()->email !== 'admin@pawmedic.app') {
abort(403);
}
$ulasan = Ulasan::findOrFail($id);
$ulasan->is_hidden = !$ulasan->is_hidden;
$ulasan->save();
return redirect()->back()->with(
'success',
$ulasan->is_hidden ? 'Ulasan disembunyikan.' : 'Ulasan ditampilkan kembali.'
);
}
}