Initial commit - lms-v2 + CLAUDE.md
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Position;
|
||||
use App\Models\Department;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class PositionController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
$query = \App\Models\Position::query();
|
||||
|
||||
// Logika pencarian (jika ada input search)
|
||||
if ($request->has('search')) {
|
||||
$search = $request->search;
|
||||
$query->where('name', 'like', "%{$search}%");
|
||||
}
|
||||
|
||||
// Ambil data tanpa memuat relasi 'department'
|
||||
$positions = $query->latest()->paginate(10);
|
||||
|
||||
return view('pages.admin.positions.index', compact('positions'));
|
||||
}
|
||||
|
||||
|
||||
public function create()
|
||||
{
|
||||
$departments = Department::orderBy('name', 'asc')->get();
|
||||
return view('pages.admin.positions.create', compact('departments'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'department_id' => 'required|exists:departments,id',
|
||||
'name' => 'required|string|max:255',
|
||||
]);
|
||||
|
||||
Position::create($validated);
|
||||
|
||||
return redirect()->route('admin.positions.index')
|
||||
->with('success', 'Posisi/Jabatan baru berhasil ditambahkan.');
|
||||
}
|
||||
|
||||
public function show(Position $position)
|
||||
{
|
||||
// Hanya melempar object $department ke view tanpa load relasi positions
|
||||
return view('pages.admin.positions.show', compact('position'));
|
||||
}
|
||||
|
||||
public function edit(Position $position)
|
||||
{
|
||||
$departments = Department::orderBy('name', 'asc')->get();
|
||||
return view('pages.admin.positions.edit', compact('position', 'departments'));
|
||||
}
|
||||
|
||||
public function update(Request $request, Position $position)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'department_id' => 'required|exists:departments,id',
|
||||
'name' => 'required|string|max:255',
|
||||
]);
|
||||
|
||||
$position->update($validated);
|
||||
|
||||
return redirect()->route('admin.positions.index')
|
||||
->with('success', 'Data Posisi berhasil diperbarui.');
|
||||
}
|
||||
// Tambahkan ini di bagian fungsi-fungsi paling bawah
|
||||
public function exportExcel()
|
||||
{
|
||||
$fileName = 'Master_Data_Jabatan_' . date('Ymd_Hi') . '.xlsx';
|
||||
return \Maatwebsite\Excel\Facades\Excel::download(new \App\Exports\PositionsExport, $fileName);
|
||||
}
|
||||
|
||||
public function exportPdf()
|
||||
{
|
||||
$positions = \App\Models\Position::all();
|
||||
|
||||
$pdf = \Barryvdh\DomPDF\Facade\Pdf::loadView('pages.admin.positions.export-pdf', compact('positions'))
|
||||
->setPaper('a4', 'portrait');
|
||||
|
||||
return $pdf->download('Master_Data_Jabatan_' . date('Ymd_Hi') . '.pdf');
|
||||
}
|
||||
|
||||
public function destroy(Position $position)
|
||||
{
|
||||
$position->delete();
|
||||
return redirect()->route('admin.positions.index')
|
||||
->with('success', 'Posisi berhasil dihapus.');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user