diff --git a/projek_pkl/app/Http/Controllers/KaryawanController.php b/projek_pkl/app/Http/Controllers/KaryawanController.php index 9b28410..ab85cfb 100644 --- a/projek_pkl/app/Http/Controllers/KaryawanController.php +++ b/projek_pkl/app/Http/Controllers/KaryawanController.php @@ -3,34 +3,33 @@ namespace App\Http\Controllers; use App\Models\Karyawan; +use App\Models\jabatan; use Illuminate\Http\Request; class KaryawanController extends Controller { public function index() { - $karyawan = Karyawan::all(); - return view('karyawan.index', compact('karyawan')); + $karyawan = Karyawan::with('jabatan')->get(); // eager load jabatan + return view('karyawan.index', compact('karyawan')); } + public function create() { - return view('karyawan.create'); + $jabatans = Jabatan::all(); + return view('karyawan.create', compact('jabatans')); } public function store(Request $request) { - $request->validate([ + $validatedData = $request->validate([ 'nama' => 'required', 'umur' => 'required|integer', - 'jabatan' => 'required', + 'jabatan_id' => 'required|exists:jabatans,id', // sesuaikan dengan name di form ]); - Karyawan::create([ - 'nama' => $request->nama, - 'umur' => $request->umur, - 'jabatan' => $request->jabatan, - ]); + Karyawan::create($validatedData); return redirect()->route('karyawan.index')->with('success', 'Data berhasil ditambahkan!'); } @@ -44,27 +43,23 @@ class KaryawanController extends Controller public function edit($id) { $karyawan = Karyawan::findOrFail($id); - return view('karyawan.edit', compact('karyawan', 'id')); + $jabatans = Jabatan::all(); + return view('karyawan.edit', compact('karyawan', 'jabatans')); } + public function update(Request $request, $id) { - $request->validate([ - 'nama' => 'required', - 'umur' => 'required|integer', - 'jabatan' => 'required', - ]); - $karyawan = Karyawan::findOrFail($id); - $karyawan->update([ - 'nama' => $request->nama, - 'umur' => $request->umur, - 'jabatan' => $request->jabatan, - ]); + $karyawan->nama = $request->nama; + $karyawan->umur = $request->umur; + $karyawan->jabatan_id = $request->jabatan_id; + $karyawan->save(); - return redirect()->route('karyawan.index')->with('success', 'Data berhasil diperbarui!'); + return redirect()->route('karyawan.index')->with('success', 'Data berhasil diupdate'); } + public function destroy($id) { $karyawan = Karyawan::findOrFail($id); diff --git a/projek_pkl/app/Models/jabatan.php b/projek_pkl/app/Models/jabatan.php new file mode 100644 index 0000000..5567e47 --- /dev/null +++ b/projek_pkl/app/Models/jabatan.php @@ -0,0 +1,19 @@ +hasMany(Karyawan::class, 'jabatan_id'); + } + +} diff --git a/projek_pkl/app/Models/karyawan.php b/projek_pkl/app/Models/karyawan.php index 143c684..5ee95e0 100644 --- a/projek_pkl/app/Models/karyawan.php +++ b/projek_pkl/app/Models/karyawan.php @@ -6,5 +6,11 @@ use Illuminate\Database\Eloquent\Model; class karyawan extends Model { - protected $fillable = ['nama', 'umur', 'jabatan']; + protected $fillable = ['nama', 'umur', 'jabatan_id']; + + public function jabatan() + { + return $this->belongsTo(Jabatan::class, 'jabatan_id'); // karena 'jabatan' adalah foreign key + } + } diff --git a/projek_pkl/database/migrations/2025_07_22_223908_create_karyawans_table.php b/projek_pkl/database/migrations/2025_07_22_223908_create_karyawans_table.php index 406dd31..ae43bd1 100644 --- a/projek_pkl/database/migrations/2025_07_22_223908_create_karyawans_table.php +++ b/projek_pkl/database/migrations/2025_07_22_223908_create_karyawans_table.php @@ -15,7 +15,7 @@ return new class extends Migration $table->id(); $table->string('nama'); $table->integer('umur'); - $table->string('jabatan'); + $table->foreignId('jabatan_id')->constrained('jabatans')->onDelete('cascade'); $table->timestamps(); }); } diff --git a/projek_pkl/database/migrations/2025_07_23_081453_create_jabatans_table.php b/projek_pkl/database/migrations/2025_07_23_081453_create_jabatans_table.php new file mode 100644 index 0000000..9dd3dc6 --- /dev/null +++ b/projek_pkl/database/migrations/2025_07_23_081453_create_jabatans_table.php @@ -0,0 +1,28 @@ +id(); + $table->string('jabatan'); // Kolom untuk nama jabatan + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('jabatans'); + } +}; diff --git a/projek_pkl/database/seeders/DatabaseSeeder.php b/projek_pkl/database/seeders/DatabaseSeeder.php index 4bb7759..2775b9f 100644 --- a/projek_pkl/database/seeders/DatabaseSeeder.php +++ b/projek_pkl/database/seeders/DatabaseSeeder.php @@ -14,8 +14,12 @@ class DatabaseSeeder extends Seeder public function run(): void { - $this->call(KaryawanSeeder::class); + $this->call([ + JabatanSeeder::class, + KaryawanSeeder::class + ]); } + } diff --git a/projek_pkl/database/seeders/JabatanSeeder.php b/projek_pkl/database/seeders/JabatanSeeder.php new file mode 100644 index 0000000..d5925b0 --- /dev/null +++ b/projek_pkl/database/seeders/JabatanSeeder.php @@ -0,0 +1,28 @@ + $jabatan]); + } + } +} diff --git a/projek_pkl/database/seeders/KaryawanSeeder.php b/projek_pkl/database/seeders/KaryawanSeeder.php index fca0d96..044f2d7 100644 --- a/projek_pkl/database/seeders/KaryawanSeeder.php +++ b/projek_pkl/database/seeders/KaryawanSeeder.php @@ -5,6 +5,9 @@ namespace Database\Seeders; use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; use App\Models\Karyawan; +use App\Models\Jabatan; +use Illuminate\Support\Facades\DB; + class KaryawanSeeder extends Seeder { @@ -13,20 +16,21 @@ class KaryawanSeeder extends Seeder */ public function run(): void { - Karyawan::create([ + + $manager = Jabatan::where('jabatan', 'MANAGER')->first(); + $staff = Jabatan::where('jabatan', 'STAFF')->first(); + + // Cek apakah jabatan tersedia + if (!$manager || !$staff) { + throw new \Exception("Jabatan belum tersedia. Pastikan JabatanSeeder sudah jalan."); + } + + DB::table('karyawans')->insert([ 'nama' => 'John Doe', 'umur' => 30, - 'jabatan' => 'Manager', - ]); - Karyawan::create([ - 'nama' => 'Ethy Amph la', - 'umur' => 28, - 'jabatan' => 'staff', - ]); - Karyawan::create([ - 'nama' => 'Neige Saary', - 'umur' => 20, - 'jabatan' => 'staff', + 'jabatan_id' => 1, // ini nama kolom barumu + 'created_at' => now(), + 'updated_at' => now(), ]); } diff --git a/projek_pkl/resources/views/karyawan/create.blade.php b/projek_pkl/resources/views/karyawan/create.blade.php index 18c794c..030e404 100644 --- a/projek_pkl/resources/views/karyawan/create.blade.php +++ b/projek_pkl/resources/views/karyawan/create.blade.php @@ -37,7 +37,7 @@ margin-bottom: 8px; color: #34495e; } - input { + input, select { width: 100%; padding: 12px; margin-bottom: 20px; @@ -46,7 +46,7 @@ font-size: 16px; transition: all 0.3s ease; } - input:focus { + input:focus, select:focus { outline: none; border: 1px solid #3498db; box-shadow: 0 0 8px rgba(52,152,219,0.5); @@ -96,7 +96,14 @@ - + + + diff --git a/projek_pkl/resources/views/karyawan/edit.blade.php b/projek_pkl/resources/views/karyawan/edit.blade.php index e246c3f..957f638 100644 --- a/projek_pkl/resources/views/karyawan/edit.blade.php +++ b/projek_pkl/resources/views/karyawan/edit.blade.php @@ -1,7 +1,7 @@ - Edit Data Siswa + Edit Data Karyawan