Files
lms-v2/app/Http/Controllers/Admin/PositionController.php
T
2026-05-30 22:15:16 +07:00

95 lines
2.9 KiB
PHP

<?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.');
}
}