81 lines
2.4 KiB
PHP
81 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Department;
|
|
use Illuminate\Http\Request;
|
|
use Inertia\Inertia;
|
|
|
|
class DepartmentController extends Controller
|
|
{
|
|
public function index(Request $request)
|
|
{
|
|
$query = Department::withCount('employees');
|
|
if ($request->search) {
|
|
$query->where('name', 'like', '%' . $request->search . '%');
|
|
}
|
|
return Inertia::render('admin/departments/index', [
|
|
'departments' => $query->latest()->get(),
|
|
'filters' => $request->only(['search']),
|
|
]);
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
return Inertia::render('admin/departments/create');
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$validated = $request->validate([
|
|
'name' => 'required|string|max:255|unique:departments,name',
|
|
'description' => 'nullable|string',
|
|
], [
|
|
'name.required' => 'Nama departemen wajib diisi.',
|
|
'name.max' => 'Nama departemen maksimal 255 karakter.',
|
|
'name.unique' => 'Nama departemen sudah terdaftar.',
|
|
]);
|
|
|
|
Department::create($validated);
|
|
|
|
return redirect()->to('/admin/departments')
|
|
->with('success', 'Departemen berhasil ditambahkan.');
|
|
}
|
|
|
|
public function edit(Department $department)
|
|
{
|
|
return Inertia::render('admin/departments/edit', [
|
|
'department' => $department
|
|
]);
|
|
}
|
|
|
|
public function update(Request $request, Department $department)
|
|
{
|
|
$validated = $request->validate([
|
|
'name' => 'required|string|max:255|unique:departments,name,' . $department->id,
|
|
'description' => 'nullable|string',
|
|
], [
|
|
'name.required' => 'Nama departemen wajib diisi.',
|
|
'name.max' => 'Nama departemen maksimal 255 karakter.',
|
|
'name.unique' => 'Nama departemen sudah terdaftar.',
|
|
]);
|
|
|
|
$department->update($validated);
|
|
|
|
return redirect()->to('/admin/departments')
|
|
->with('success', 'Departemen berhasil diperbarui.');
|
|
}
|
|
|
|
public function destroy(Department $department)
|
|
{
|
|
// Cek sisa karyawan
|
|
if ($department->employees()->count() > 0) {
|
|
return back()->with('error', 'Gagal hapus! Departemen ini masih memiliki karyawan.');
|
|
}
|
|
|
|
$department->delete();
|
|
|
|
return back()->with('success', 'Departemen berhasil dihapus.');
|
|
}
|
|
} |