MIF_E31231003/app/Http/Controllers/Bk/InfoJurusanController.php

112 lines
3.8 KiB
PHP

<?php
namespace App\Http\Controllers\Bk;
use App\Http\Controllers\Controller;
use App\Models\{InformasiJurusan, ProspekKerja, Jurusan};
use App\Services\ActivityLogger;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class InfoJurusanController extends Controller
{
public function index()
{
$guruBk = \App\Models\GuruBk::where('user_id', Auth::id())->first();
if ($guruBk && $guruBk->jurusan_id) {
return redirect()->route('bk.infojurusan.show', $guruBk->jurusan_id);
}
return redirect()->route('bk.dashboard')
->with('warning', 'Anda belum ditugaskan ke jurusan manapun.');
}
public function show($id)
{
$guruBk = \App\Models\GuruBk::where('user_id', Auth::id())->first();
if ($guruBk && $guruBk->jurusan_id && $guruBk->jurusan_id != $id) {
return redirect()->route('bk.dashboard')
->with('warning', 'Akses ditolak.');
}
$jurusan = Jurusan::with(['informasiJurusan', 'prospekKerja'])->findOrFail($id);
$info = $jurusan->informasiJurusan;
$prospekUmum = $jurusan->prospekKerja->where('tipe', 'umum');
$prospekAlumni = $jurusan->prospekKerja->where('tipe', 'alumni');
return view('pages.bk.infojurusan.show', compact(
'jurusan', 'info', 'prospekUmum', 'prospekAlumni'
));
}
public function edit($id)
{
$guruBk = \App\Models\GuruBk::where('user_id', Auth::id())->first();
// Pastikan BK hanya bisa edit jurusannya sendiri
if ($guruBk && $guruBk->jurusan_id && $guruBk->jurusan_id != $id) {
return redirect()->route('bk.infojurusan.index')
->with('warning', 'Anda hanya bisa mengelola jurusan Anda sendiri.');
}
$jurusan = Jurusan::with(['informasiJurusan', 'prospekKerja'])->findOrFail($id);
$info = $jurusan->informasiJurusan;
$prospekUmum = $jurusan->prospekKerja->where('tipe', 'umum')->pluck('isi');
$prospekAlumni = $jurusan->prospekKerja->where('tipe', 'alumni')->pluck('isi');
return view('pages.bk.infojurusan.edit', compact(
'jurusan', 'info', 'prospekUmum', 'prospekAlumni'
));
}
public function update(Request $request, $jurusanId)
{
$guruBk = \App\Models\GuruBk::where('user_id', Auth::id())->first();
if ($guruBk && $guruBk->jurusan_id && $guruBk->jurusan_id != $jurusanId) {
return redirect()->route('bk.infojurusan.index')
->with('warning', 'Anda hanya bisa mengelola jurusan Anda sendiri.');
}
$jurusan = Jurusan::findOrFail($jurusanId);
InformasiJurusan::updateOrCreate(
['jurusan_id' => $jurusanId],
[
'fasilitas' => $request->fasilitas ?? '',
'updated_by_user_id' => Auth::id()
]
);
ProspekKerja::where('jurusan_id', $jurusanId)
->where('tipe', 'umum')
->delete();
foreach (array_filter($request->prospek_umum ?? []) as $isi) {
ProspekKerja::create([
'jurusan_id' => $jurusanId,
'tipe' => 'umum',
'isi' => $isi
]);
}
ProspekKerja::where('jurusan_id', $jurusanId)
->where('tipe', 'alumni')
->delete();
foreach (array_filter($request->prospek_alumni ?? []) as $isi) {
ProspekKerja::create([
'jurusan_id' => $jurusanId,
'tipe' => 'alumni',
'isi' => $isi
]);
}
ActivityLogger::log('Guru BK edit info jurusan: ' . $jurusan->nama_jurusan);
return redirect()->route('bk.infojurusan.show', $jurusanId)
->with('success', "Informasi jurusan berhasil diperbarui!");
}
}