projek_padi/web_TA/app/Http/Controllers/DatasetController.php

55 lines
1.6 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Dataset;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use App\Traits\CompressesImages;
class DatasetController extends Controller
{
use CompressesImages;
public function index(Request $request) {
// Get filter parameters
$label = $request->get('label');
// Build query
$query = Dataset::query();
// Apply label filter
if ($label) {
$query->where('label', $label);
}
// Get paginated datasets (15 per page) and keep current filters in pagination links
$datasets = $query->orderByDesc('id')->paginate(15)->withQueryString();
// Get statistics
$stats = Dataset::selectRaw('label, count(*) as total')->groupBy('label')->get();
return view('admin.datasets.index', compact('datasets', 'stats'));
}
public function store(Request $request) {
$request->validate([
'label' => 'required',
'image' => 'required|image|mimes:jpeg,png,jpg|max:2048'
]);
$path = $this->compressAndStoreImage($request->file('image'), 'datasets')
?? $request->file('image')->store('datasets', 'public');
Dataset::create([
'label' => $request->label,
'image_path' => $path
]);
return back()->with('success', 'Gambar dataset berhasil diupload!');
}
public function destroy($id) {
$data = Dataset::findOrFail($id);
Storage::disk('public')->delete($data->image_path);
$data->delete();
return back()->with('success', 'Data dihapus!');
}
}