admin update, siswa update

This commit is contained in:
RetasyaSalsabila 2026-03-05 20:51:01 +07:00
parent c6e706c4e1
commit 40058c47cd
9 changed files with 77 additions and 67 deletions

View File

@ -45,32 +45,10 @@ public function store(Request $request)
'nama_kelas.unique' => 'Nama kelas sudah ada di tingkat ini!', 'nama_kelas.unique' => 'Nama kelas sudah ada di tingkat ini!',
]); ]);
Kelas::create([
// Tentukan prefix berdasarkan tingkat 'nama_kelas' => $validated['nama_kelas'],
if ($validated['tingkat'] == 'X') { 'tingkat' => $validated['tingkat'],
$prefix = '10'; ]);
} elseif ($validated['tingkat'] == 'XI') {
$prefix = '11';
} else {
$prefix = '12';
}
// Cari id terakhir berdasarkan prefix
$last = Kelas::where('id_kelas', 'like', $prefix.'%')
->orderBy('id_kelas', 'desc')
->first();
if ($last) {
$newId = $last->id_kelas + 1;
} else {
$newId = $prefix . '01';
}
Kelas::create([
'id_kelas' => $newId,
'nama_kelas' => $validated['nama_kelas'],
'tingkat' => $validated['tingkat'],
]);
return redirect()->route('admin.kelas.index') return redirect()->route('admin.kelas.index')
->with('success', 'Data kelas berhasil ditambahkan!'); ->with('success', 'Data kelas berhasil ditambahkan!');

View File

@ -42,50 +42,58 @@ public function index(Request $request)
} }
public function store(Request $request) public function store(Request $request)
{ {
$validated = $request->validate([ $validated = $request->validate([
'nama_mapel' => 'required|string|max:100', 'nama_mapel' => 'required|string|max:100',
], [ 'kelas' => 'nullable|array'
'nama_mapel.required' => 'Nama mata pelajaran wajib diisi', ]);
]);
// Auto-generate id_mapel $mapel = Mapel::create([
$lastMapel = Mapel::orderBy('id_mapel', 'desc')->first(); 'nama_mapel' => $validated['nama_mapel'],
]);
if ($lastMapel) {
$lastNumber = (int) substr($lastMapel->id_mapel, 2); // Ambil angka setelah "MP" if($request->kelas){
$newNumber = $lastNumber + 1; foreach($request->kelas as $kelas){
} else { $mapel->mengajars()->create([
$newNumber = 1; 'id_kelas' => $kelas
]);
} }
$newIdMapel = 'MP' . str_pad($newNumber, 3, '0', STR_PAD_LEFT); // MP001, MP002, dst
Mapel::create([
'id_mapel' => $newIdMapel,
'nama_mapel' => $validated['nama_mapel'],
]);
return redirect()->route('admin.mapel.index')
->with('success', 'Data mata pelajaran berhasil ditambahkan!');
} }
return redirect()->route('admin.mapel.index')
->with('success','Data mata pelajaran berhasil ditambahkan!');
}
public function update(Request $request, $id_mapel) public function update(Request $request, $id_mapel)
{ {
$mapel = Mapel::findOrFail($id_mapel); $mapel = Mapel::findOrFail($id_mapel);
$validated = $request->validate([ $validated = $request->validate([
'nama_mapel' => 'required|string|max:100', 'nama_mapel' => 'required|string|max:100',
], [ 'kelas' => 'nullable|array'
'nama_mapel.required' => 'Nama mata pelajaran wajib diisi', ]);
]);
$mapel->update($validated); $mapel->update([
'nama_mapel' => $validated['nama_mapel']
]);
return redirect()->route('admin.mapel.index') // hapus relasi lama
->with('success', 'Data mata pelajaran berhasil diupdate!'); $mapel->mengajars()->delete();
// buat relasi baru
if($request->kelas){
foreach($request->kelas as $kelas){
$mapel->mengajars()->create([
'id_kelas' => $kelas
]);
}
} }
return redirect()->route('admin.mapel.index')
->with('success','Data mata pelajaran berhasil diupdate!');
}
public function destroy($id_mapel) public function destroy($id_mapel)
{ {
$mapel = Mapel::findOrFail($id_mapel); $mapel = Mapel::findOrFail($id_mapel);

View File

@ -15,7 +15,6 @@ class Mapel extends Model
protected $keyType = 'int'; protected $keyType = 'int';
protected $fillable = [ protected $fillable = [
'id_mapel',
'nama_mapel', 'nama_mapel',
]; ];

View File

@ -225,11 +225,26 @@
@error('nama_mapel') @error('nama_mapel')
<small class="text-danger">{{ $message }}</small> <small class="text-danger">{{ $message }}</small>
@enderror @enderror
<small class="text-muted">ID Mapel akan dibuat otomatis (MP001, MP002, ...)</small> <small class="text-muted">ID Mapel akan dibuat secara otomatis</small>
</div> </div>
</div> </div>
<div class="mb-3">
<label>Kelas</label>
<select name="kelas[]" class="form-select" multiple>
@foreach($kelass as $kelas)
<option value="{{ $kelas->id_kelas }}">
{{ $kelas->tingkat }} - {{ $kelas->nama_kelas }}
</option>
@endforeach
</select>
<small class="text-muted">Bisa pilih lebih dari satu kelas</small>
</div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Batal</button> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Batal</button>
<button class="btn btn-success">Simpan Data</button> <button class="btn btn-success">Simpan Data</button>

View File

@ -1,4 +1,4 @@
@extends('layouts.siswa.app') @extends('siswa.layouts.app')
@section('title', 'Materi') @section('title', 'Materi')

View File

@ -1,4 +1,4 @@
@extends('layouts.siswa.app') @extends('siswa.layouts.app')
@section('title', 'Materi - ' . optional(optional($mengajar)->mapel)->nama_mapel) @section('title', 'Materi - ' . optional(optional($mengajar)->mapel)->nama_mapel)

View File

@ -1,4 +1,4 @@
@extends('layouts.siswa.app') @extends('siswa.layouts.app')
@section('title', 'Tugas') @section('title', 'Tugas')

View File

@ -1,4 +1,4 @@
@extends('layouts.siswa.app') @extends('siswa.layouts.app')
@section('title', $tugas->judul_tugas) @section('title', $tugas->judul_tugas)

View File

@ -28,6 +28,8 @@
//SISWA CONTROLLERS //SISWA CONTROLLERS
use App\Http\Controllers\Siswa\LoginController as SiswaLoginController; use App\Http\Controllers\Siswa\LoginController as SiswaLoginController;
use App\Http\Controllers\Siswa\DashboardController as SiswaDashboardController; use App\Http\Controllers\Siswa\DashboardController as SiswaDashboardController;
use App\Http\Controllers\Siswa\MateriController as SiswaMateriController;
use App\Http\Controllers\Siswa\TugasController as SiswaTugasController;
// ==================== // ====================
// LANDING PAGE // LANDING PAGE
@ -145,11 +147,19 @@
// ======================================================= // =======================================================
// SISWA AREA // SISWA AREA
// ======================================================= // =======================================================
Route::middleware(['auth:siswa'])->prefix('siswa')->name('siswa.')->group(function () { Route::middleware(['auth:siswa'])->prefix('siswa')->name('siswa.')->group(function () {
Route::get('/dashboard', [SiswaDashboardController::class, 'index'])->name('dashboard'); Route::get('/dashboard', [SiswaDashboardController::class, 'index'])->name('dashboard');
// MATERI
Route::get('/materi', [SiswaMateriController::class, 'index'])->name('materi.index');
Route::get('/materi/{id_mengajar}', [SiswaMateriController::class, 'show'])->name('materi.show');
// TUGAS
Route::get('/tugas', [SiswaTugasController::class, 'index'])->name('tugas.index');
Route::get('/tugas/{id_tugas}', [SiswaTugasController::class, 'show'])->name('tugas.show');
Route::post('/tugas/{id_tugas}/submit', [SiswaTugasController::class, 'submit'])->name('tugas.submit');
// LOGOUT SISWA // LOGOUT SISWA
Route::post('/logout', [SiswaLoginController::class, 'logout'])->name('logout'); Route::post('/logout', [SiswaLoginController::class, 'logout'])->name('logout');