From 11d0b948f1a1b65b0d3ac1918f7952b7eb232b79 Mon Sep 17 00:00:00 2001 From: punkestu Date: Sun, 24 Nov 2024 06:15:41 +0700 Subject: [PATCH] add category jabatan --- app/Http/Controllers/AccountController.php | 6 +- app/Http/Controllers/JabatanController.php | 44 +++++++ app/Models/PersonelJabatanCategory.php | 13 ++ ...eate_personel_jabatan_categories_table.php | 29 +++++ note.md | 2 + resources/views/account/index.blade.php | 121 ++++++++++++++++++ .../components/modal-component.blade.php | 1 + routes/web.php | 3 + 8 files changed, 218 insertions(+), 1 deletion(-) create mode 100644 app/Http/Controllers/JabatanController.php create mode 100644 app/Models/PersonelJabatanCategory.php create mode 100644 database/migrations/2024_11_23_173857_create_personel_jabatan_categories_table.php create mode 100644 note.md diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index 8a88e8a..30bc236 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use App\Models\Cabang; +use App\Models\PersonelJabatanCategory; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use App\Models\Profile; @@ -18,7 +19,10 @@ public function index() if ($akun->role->name == 'admin') { $akuns = Profile::with(['user'])->get(); $cabangs = Cabang::all(); - return view('account.index', ['akun' => $akun, 'akuns' => $akuns, 'cabangs' => $cabangs]); + $kategori_jabatan = PersonelJabatanCategory::select('category')->distinct()->get(); + $jabatans = PersonelJabatanCategory::all(); + $jabatans = $jabatans->groupBy('category'); + return view('account.index', ['akun' => $akun, 'akuns' => $akuns, 'cabangs' => $cabangs, 'kategori_jabatan' => $kategori_jabatan, 'jabatans' => $jabatans]); } return view('account.index', ['akun' => $akun]); } diff --git a/app/Http/Controllers/JabatanController.php b/app/Http/Controllers/JabatanController.php new file mode 100644 index 0000000..02355a2 --- /dev/null +++ b/app/Http/Controllers/JabatanController.php @@ -0,0 +1,44 @@ +validate([ + 'category' => 'required', + 'jabatan' => 'required' + ]); + DB::beginTransaction(); + if (is_array($request->jabatan)) { + foreach ($request->jabatan as $jabatan) { + $personelJabatanCategory = new PersonelJabatanCategory(); + $personelJabatanCategory->category = $request->category; + $personelJabatanCategory->jabatan = $jabatan; + $personelJabatanCategory->save(); + } + } else { + $personelJabatanCategory = new PersonelJabatanCategory(); + $personelJabatanCategory->category = $request->category; + $personelJabatanCategory->jabatan = $request->jabatan; + $personelJabatanCategory->save(); + } + DB::commit(); + return redirect()->back()->with('success', 'Data berhasil disimpan'); + } + + public function destroy($id) + { + $personelJabatanCategory = PersonelJabatanCategory::find($id); + if(!$personelJabatanCategory) { + return redirect()->back()->with('error', 'Data tidak ditemukan'); + } + $personelJabatanCategory->delete(); + return redirect()->back()->with('success', 'Data berhasil dihapus'); + } +} diff --git a/app/Models/PersonelJabatanCategory.php b/app/Models/PersonelJabatanCategory.php new file mode 100644 index 0000000..4de667f --- /dev/null +++ b/app/Models/PersonelJabatanCategory.php @@ -0,0 +1,13 @@ +id(); + $table->string("category"); + $table->string("jabatan")->unique(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('personel_jabatan_categories'); + } +}; diff --git a/note.md b/note.md new file mode 100644 index 0000000..03c2675 --- /dev/null +++ b/note.md @@ -0,0 +1,2 @@ +- [ ] reset konsep + tambah validasi only showable in browser +- [ ] cek ulang koordinat diff --git a/resources/views/account/index.blade.php b/resources/views/account/index.blade.php index 80d8ec9..a22b140 100644 --- a/resources/views/account/index.blade.php +++ b/resources/views/account/index.blade.php @@ -61,6 +61,95 @@ class="px-4 py-2 bg-[#003285] text-white opacity-80 hover:opacity-100 rounded-md class="px-4 py-2 bg-[#003285] text-white opacity-80 hover:opacity-100 rounded-md duration-300">Daftarkan cabang ke akun + +
+
+ @if ($kategori_jabatan->count() == 0) +
+

Belum ada kategori jabatan

+ +
+ @else + + + + + + + + + + @foreach ($kategori_jabatan as $currKategori) + + + + + + @endforeach + +
NamaJabatanAksi
+ {{ $currKategori->category }} + @foreach ($jabatans[$currKategori->category] as $currJabatan) +
+ {{ $currJabatan->jabatan }} + + X +
+ @endforeach +
+ +
+ @endif +
+
+
+
+ @csrf +

Tambah Jabatan

+ + + +
+
+
+
+ @csrf +

Tambah Kategori Jabatan

+ +
+
+
+
+ + +
+
+ +
+
@csrf @@ -90,6 +179,38 @@ class="bg-[#7186F3] hover:bg-[#435EEF] duration-200 text-white px-4 py-2 rounded @include('components.footer') + diff --git a/resources/views/components/modal-component.blade.php b/resources/views/components/modal-component.blade.php index aea8546..8aa74b0 100644 --- a/resources/views/components/modal-component.blade.php +++ b/resources/views/components/modal-component.blade.php @@ -2,6 +2,7 @@ @include('components.modal', ['message' => session('success')]) @endif @if ($errors->any()) + {{$errors->first()}} @include('components.modal', [ 'message' => str_contains($errors->first(), 'required') ? 'Mohon isi semua kolom' diff --git a/routes/web.php b/routes/web.php index cc44fa7..2fa1d1f 100644 --- a/routes/web.php +++ b/routes/web.php @@ -4,6 +4,7 @@ use Illuminate\Support\Facades\Route; use App\Http\Controllers\AuthController; +use App\Http\Controllers\JabatanController; use App\Http\Controllers\NotificationController; use App\Http\Controllers\PersonelController; // use App\Http\Controllers\Rotasi\HomeController as RotasiHomeController; @@ -52,6 +53,8 @@ Route::get('/edit', [AccountController::class, 'updateView']); Route::post('/edit', [AccountController::class, 'update']); Route::middleware(['is.admin'])->post('/assign', [AccountController::class, 'assign']); + Route::middleware(['is.admin'])->post('/jabatan', [JabatanController::class, 'store']); + Route::middleware(['is.admin'])->get('/jabatan/{id}/delete', [JabatanController::class, 'destroy']); }); Route::group(['prefix' => 'personel', 'middleware' => [