55 lines
1.6 KiB
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!');
|
|
}
|
|
} |