84 lines
2.6 KiB
PHP
84 lines
2.6 KiB
PHP
<?php
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\ProdiLanjutan;
|
|
use App\Models\Mapel;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
class ProdiLanjutanController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$prodis = ProdiLanjutan::with('mapels')->get();
|
|
return view('admin.angket.prodi.index', compact('prodis'))
|
|
->with('success', session('success'))
|
|
->withErrors(session('error'));
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
$mapels = Mapel::all();
|
|
return view('admin.angket.prodi.create', compact('mapels'));
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$request->validate([
|
|
'nama' => 'required',
|
|
'mapel_id' => 'array|required'
|
|
]);
|
|
|
|
try {
|
|
$prodi = ProdiLanjutan::create(['nama' => $request->nama]);
|
|
$prodi->mapels()->attach($request->mapel_id);
|
|
|
|
return redirect()->route('admin.prodi-lanjutan.index')->with('success', 'Prodi berhasil ditambahkan');
|
|
} catch (\Exception $e) {
|
|
Log::error('Gagal menambahkan prodi: ' . $e->getMessage());
|
|
return back()->withInput()->withErrors('Terjadi kesalahan saat menambahkan prodi.');
|
|
}
|
|
}
|
|
|
|
public function edit($id)
|
|
{
|
|
$prodi = ProdiLanjutan::findOrFail($id);
|
|
$mapels = Mapel::all();
|
|
return view('admin.angket.prodi.edit', compact('prodi', 'mapels'));
|
|
}
|
|
|
|
public function update(Request $request, $id)
|
|
{
|
|
$request->validate([
|
|
'nama' => 'required',
|
|
'mapel_id' => 'array|required'
|
|
]);
|
|
|
|
try {
|
|
$prodi = ProdiLanjutan::findOrFail($id);
|
|
$prodi->update(['nama' => $request->nama]);
|
|
$prodi->mapels()->sync($request->mapel_id);
|
|
|
|
return redirect()->route('admin.prodi-lanjutan.index')->with('success', 'Prodi berhasil diperbarui');
|
|
} catch (\Exception $e) {
|
|
Log::error('Gagal memperbarui prodi: ' . $e->getMessage());
|
|
return back()->withInput()->withErrors('Terjadi kesalahan saat memperbarui prodi.');
|
|
}
|
|
}
|
|
|
|
public function destroy($id)
|
|
{
|
|
try {
|
|
$prodi = ProdiLanjutan::findOrFail($id);
|
|
$prodi->mapels()->detach();
|
|
$prodi->delete();
|
|
|
|
return back()->with('success', 'Prodi berhasil dihapus');
|
|
} catch (\Exception $e) {
|
|
Log::error('Gagal menghapus prodi: ' . $e->getMessage());
|
|
return back()->withErrors('Terjadi kesalahan saat menghapus prodi.');
|
|
}
|
|
}
|
|
}
|