namespace App\Http\Controllers;
use Shopper\Core\Models\Product;
class ProductController extends Controller
{
public function show(string $slug)
{
$product = Product::query()
->where('slug', $slug)
->publish()
->firstOrFail();
// Get approved reviews
$reviews = $product->ratings()
->where('approved', true)
->with('author')
->latest()
->paginate(10);
// Get rating stats
$averageRating = $product->averageRating(1, onlyApproved: true)->first();
$reviewCount = $product->ratings()->where('approved', true)->count();
// Rating distribution
$distribution = [];
for ($i = 5; $i >= 1; $i--) {
$count = $product->ratings()
->where('approved', true)
->where('rating', $i)
->count();
$distribution[$i] = [
'count' => $count,
'percentage' => $reviewCount > 0 ? ($count / $reviewCount) * 100 : 0,
];
}
return view('products.show', compact(
'product',
'reviews',
'averageRating',
'reviewCount',
'distribution'
));
}
}