From d6c09fe1aeb1fc3daa61bd0b124cfa82d2221bcf Mon Sep 17 00:00:00 2001 From: jouel88 Date: Fri, 20 Mar 2026 03:07:13 +0700 Subject: [PATCH] added --- app/Http/Controllers/JadwalController.php | 1 + app/Http/Controllers/TukarShiftController.php | 39 +++++ app/Models/User.php | 14 ++ resources/views/layouts/sidebar.blade.php | 14 +- resources/views/pegawai/create.blade.php | 137 +++++++++++------- resources/views/pegawai/edit.blade.php | 90 +++++++----- routes/web.php | 22 ++- 7 files changed, 213 insertions(+), 104 deletions(-) diff --git a/app/Http/Controllers/JadwalController.php b/app/Http/Controllers/JadwalController.php index 54e54f00..87e20ad9 100644 --- a/app/Http/Controllers/JadwalController.php +++ b/app/Http/Controllers/JadwalController.php @@ -12,6 +12,7 @@ use Illuminate\Support\Facades\DB; use App\Models\PenggunaanPoin; use App\Services\PoinService; +use Illuminate\Support\Facades\Auth; class JadwalController extends Controller { diff --git a/app/Http/Controllers/TukarShiftController.php b/app/Http/Controllers/TukarShiftController.php index 0445f9a5..1752c9ae 100644 --- a/app/Http/Controllers/TukarShiftController.php +++ b/app/Http/Controllers/TukarShiftController.php @@ -42,6 +42,45 @@ public function store(StoreTukarShiftRequest $request) $jadwal1 = JadwalKerja::findOrFail($request->id_jadwal_1); $jadwal2 = JadwalKerja::findOrFail($request->id_jadwal_2); + // 1. Validasi kepemilikan jadwal + if ($jadwal1->id_user != $request->id_user_1 || $jadwal2->id_user != $request->id_user_2) { + return redirect()->back()->withInput()->with('error', 'Data jadwal tidak sesuai dengan pegawai yang dipilih.'); + } + + // 2. Validasi bentrok jadwal kerja + $conflict1 = JadwalKerja::where('id_user', $request->id_user_1) + ->where('tanggal', $jadwal2->tanggal) + ->where('id_jadwal', '!=', $jadwal1->id_jadwal) + ->exists(); + if ($conflict1) { + return redirect()->back()->withInput()->with('error', 'Pegawai Pertama sudah memiliki jadwal kerja lain pada tanggal tujuan (' . $jadwal2->tanggal . ').'); + } + + $conflict2 = JadwalKerja::where('id_user', $request->id_user_2) + ->where('tanggal', $jadwal1->tanggal) + ->where('id_jadwal', '!=', $jadwal2->id_jadwal) + ->exists(); + if ($conflict2) { + return redirect()->back()->withInput()->with('error', 'Pegawai Kedua sudah memiliki jadwal kerja lain pada tanggal tujuan (' . $jadwal1->tanggal . ').'); + } + + // 3. Validasi bentrok dengan Penggunaan Poin (Cuti / dll) + $poin1 = \App\Models\PenggunaanPoin::where('id_user', $request->id_user_1) + ->where('tanggal_penggunaan', $jadwal2->tanggal) + ->where('id_status', 2) + ->exists(); + if ($poin1) { + return redirect()->back()->withInput()->with('error', 'Pegawai Pertama memiliki riwayat Cuti/Penggunaan Poin pada tanggal tujuan (' . $jadwal2->tanggal . ').'); + } + + $poin2 = \App\Models\PenggunaanPoin::where('id_user', $request->id_user_2) + ->where('tanggal_penggunaan', $jadwal1->tanggal) + ->where('id_status', 2) + ->exists(); + if ($poin2) { + return redirect()->back()->withInput()->with('error', 'Pegawai Kedua memiliki riwayat Cuti/Penggunaan Poin pada tanggal tujuan (' . $jadwal1->tanggal . ').'); + } + $tempUser1 = $jadwal1->id_user; $jadwal1->id_user = $jadwal2->id_user; $jadwal2->id_user = $tempUser1; diff --git a/app/Models/User.php b/app/Models/User.php index da3c1bb7..1aaef68d 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -108,6 +108,20 @@ public function hasPermission($permissionSlug): bool })->exists(); } + public function isGlobalAdmin(): bool + { + return $this->roles->contains(function ($role) { + return in_array(strtolower($role->nama_role), ['admin', 'super admin', 'super_admin']); + }); + } + + public function isSuperAdmin(): bool + { + return $this->roles->contains(function ($role) { + return in_array(strtolower($role->nama_role), ['super admin', 'super_admin']); + }); + } + public function kantor(): BelongsTo { return $this->belongsTo(Kantor::class, 'id_kantor', 'id_kantor'); diff --git a/resources/views/layouts/sidebar.blade.php b/resources/views/layouts/sidebar.blade.php index 0093155a..5389b4d2 100644 --- a/resources/views/layouts/sidebar.blade.php +++ b/resources/views/layouts/sidebar.blade.php @@ -1,4 +1,4 @@ -