From e0f78f851f8c536c390b906ea67149a416ecccde Mon Sep 17 00:00:00 2001 From: Andy Chaerudin Date: Wed, 4 Dec 2024 16:16:55 +0700 Subject: [PATCH 1/4] Perbaikan helper onLastnumberCodePenawaran --- app/Helpers/Lpj.php | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/app/Helpers/Lpj.php b/app/Helpers/Lpj.php index ed09be5..9cb1af6 100644 --- a/app/Helpers/Lpj.php +++ b/app/Helpers/Lpj.php @@ -118,18 +118,29 @@ $noUrutAkhirString = sprintf("%04s", 1); if($penawaran) { - $code_penawaran_last = substr ($maxCode, -4); - $year_penawaran_last = Carbon::parse($penawaran->created_at)->year; - $year_now = Carbon::now()->year; - if ($year_now == $year_penawaran_last) { - $noUrutAkhirString = sprintf("%04s", abs($code_penawaran_last + 1)); - } - // jika ternyata tahun tdk sama (kurang dari tahun sekarang), maka nomor di set 0001 + $isNum = substr($maxCode, 2); // memastikan string ke 3 s/d 8 adalan numiric + $isNP = substr($maxCode, 0, 2); + if((8 == strlen($maxCode)) && ("NP"==$isNP) && (isNumeric($isNum))) + { + $code_penawaran_last = substr ($maxCode, -4); + $year_penawaran_last = Carbon::parse($penawaran->created_at)->year; + $year_now = Carbon::now()->year; + if ($year_now == $year_penawaran_last) { + $noUrutAkhirString = sprintf("%04s", abs($code_penawaran_last + 1)); + } + // jika ternyata tahun tdk sama (kurang dari tahun sekarang), maka nomor di set 0001 + } + } - + return 'NP' . Carbon::now()->format('y') . $noUrutAkhirString; } + function isNumeric($str) + { + return ctype_digit($str); + } + // generate last penawaran.no_spk function onLastnumberCodePenawaranSPK($jenis_laporan_code): string { From d1b200d9caebdc22ee07aed873eb67aac4f1a509 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 4 Dec 2024 20:46:07 +0700 Subject: [PATCH 2/4] Tambahkan fungsionalitas perhitungan permohonan berdasarkan pengguna Menambahkan fungsi `countPermohonanForUser` ke dalam file `Lpj.php` untuk menghitung jumlah permohonan yang terkait dengan pengguna tertentu melalui relasi `userPenilai`. Selain itu, menambahkan penggunaan model `Penilaian` --- app/Helpers/Lpj.php | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/app/Helpers/Lpj.php b/app/Helpers/Lpj.php index 9cb1af6..c42bd71 100644 --- a/app/Helpers/Lpj.php +++ b/app/Helpers/Lpj.php @@ -5,6 +5,7 @@ use Modules\Lpj\Models\HolidayCalendar; use Modules\Lpj\Models\PenawaranDetailTender; use Modules\Lpj\Models\PenawaranTender; + use Modules\Lpj\Models\Penilaian; function formatTanggalIndonesia($date, $time = false) { @@ -129,10 +130,10 @@ $noUrutAkhirString = sprintf("%04s", abs($code_penawaran_last + 1)); } // jika ternyata tahun tdk sama (kurang dari tahun sekarang), maka nomor di set 0001 - } - + } + } - + return 'NP' . Carbon::now()->format('y') . $noUrutAkhirString; } @@ -141,10 +142,10 @@ return ctype_digit($str); } - // generate last penawaran.no_spk + // generate last penawaran.no_spk function onLastnumberCodePenawaranSPK($jenis_laporan_code): string { - + // 20241124_001 ==> spk_no_core // XXX / PJ / JKT / MONTH-ROM / FR|SR / 2024 // 001 / PJ / JKT / XI / FR / 2024 @@ -159,18 +160,18 @@ { $no_spk_penawaran_last = substr ($maxCode, -3); $year_penawaran_last = substr ($maxCode, 0, 4); - + if($year_now == $year_penawaran_last) { - $noUrutAkhirString = sprintf("%03s", abs($no_spk_penawaran_last + 1)); + $noUrutAkhirString = sprintf("%03s", abs($no_spk_penawaran_last + 1)); } // jika ternyata tahun tdk sama (kurang dari tahun sekarang), maka nomor di set 001 } - + $month = onRomawi(Carbon::now()->month); - + $lastSPK = $noUrutAkhirString.' / PJ / JKT / '. $month .' / ' .$jenis_laporan_code.' / '.$year_now; - return $lastSPK; + return $lastSPK; } function onRomawi(int $bln): string @@ -214,7 +215,7 @@ break; } - + } function penyebut($nilai) { @@ -241,16 +242,16 @@ $temp = penyebut($nilai/1000000000) . " milyar" . penyebut(fmod($nilai,1000000000)); } else if ($nilai < 1000000000000000) { $temp = penyebut($nilai/1000000000000) . " trilyun" . penyebut(fmod($nilai,1000000000000)); - } + } return $temp; } - + function terbilang($nilai) { if($nilai<0) { $hasil = "minus ". trim(penyebut($nilai)); } else { $hasil = trim(penyebut($nilai)); - } + } return $hasil; } // andy add @@ -283,3 +284,10 @@ }, )->toArray(); } + + function countPermohonanForUser($userId) + { + return Penilaian::whereHas('userPenilai', function ($query) use ($userId) { + $query->where('user_id', $userId); + })->count(); + } From 994da39fd727a3f39eee5e35d461149999f64acf Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 4 Dec 2024 20:53:10 +0700 Subject: [PATCH 3/4] Simplifikasi Fungsi progres_activity di ActivityController Menggabungkan beberapa baris kode untuk menyederhanakan dan meningkatkan efisiensi pengambilan data di fungsi progres_activity. Inisialisasi variabel disingkat dan penggunaan metode chaining diterapkan untuk query Eloquent. Selain itu, penyaringan peran juga disederhanakan dengan menggunakan fungsi lambda. --- app/Http/Controllers/ActivityController.php | 37 ++++++--------------- 1 file changed, 11 insertions(+), 26 deletions(-) diff --git a/app/Http/Controllers/ActivityController.php b/app/Http/Controllers/ActivityController.php index bfb447f..f1d79d8 100644 --- a/app/Http/Controllers/ActivityController.php +++ b/app/Http/Controllers/ActivityController.php @@ -33,48 +33,33 @@ class ActivityController extends Controller public function progres_activity() { - // Ambil user yang sedang login - $user = auth()->user(); - $roles = $user->load('roles'); + // Ambil user yang sedang login dengan roles + $user = auth()->user()->load('roles'); - // Inisialisasi regionId dan teamId sebagai null agar bisa dinamis - $regionId = null; - $teamId = null; + // Inisialisasi regionId dan teamId + $regionId = $teamId = null; - if ($roles->roles->pluck('name')->contains('senior-officer')) { - $userTeam = TeamsUsers::with('team') - ->where('user_id', $user->id) - ->first(); + if ($user->roles->pluck('name')->contains('senior-officer')) { + $userTeam = TeamsUsers::with('team')->firstWhere('user_id', $user->id); $regionId = $userTeam?->team->regions_id; $teamId = $userTeam?->teams_id; - } $teamsActivity = TeamsUsers::with(['user', 'team', 'team.regions', 'user.roles']) ->whereHas('team', function ($q) use ($regionId, $teamId) { - if ($regionId) { - $q->where('regions_id', $regionId); - } - if ($teamId) { - $q->where('id', $teamId); // Hanya tim yang sama - } + $q->when($regionId, fn($q) => $q->where('regions_id', $regionId)) + ->when($teamId, fn($q) => $q->where('id', $teamId)); }) ->where('user_id', '!=', $user->id) - ->whereHas('user.roles', function ($query) { - // Filter hanya peran 'surveyor' atau 'surveyor-penilai' - $query->whereIn('name', ['surveyor', 'surveyor-penilai']); - }) + ->whereHas('user.roles', fn($q) => $q->whereIn('name', ['surveyor', 'surveyor-penilai'])) ->get(); - - - return view('lpj::activity.progres_activity.index', compact('teamsActivity')); } function updateTeamAssingment(Request $request) { - + try { $id = $request->input('id'); $user = PenilaianTeam::where('penilaian_id', $id)->get(); @@ -86,7 +71,7 @@ class ActivityController extends Controller } return redirect()->route('activity.progres.index')->with('success', 'Surveyor berhasil diganti'); } - + } catch (\Throwable $th) { return redirect()->route('activity.progres.index')->with('success', $th->getMessage()); } From 08746d3262cba0a89f042fe80af43c3482bdb07b Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 4 Dec 2024 20:54:32 +0700 Subject: [PATCH 4/4] Refactor perhitungan total tugas Mengubah metode perhitungan total tugas pada tampilan progres aktivitas dengan memanfaatkan fungsi `countPermohonanForUser`. Perubahan ini bertujuan untuk menyederhanakan kode dan meningkatkan keterbacaan dengan menghilangkan logika filter yang kompleks dan menggantinya dengan pemanggilan fungsi yang lebih ringkas. --- .../views/activity/progres_activity/index.blade.php | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/resources/views/activity/progres_activity/index.blade.php b/resources/views/activity/progres_activity/index.blade.php index 54a05f0..29cbb0a 100644 --- a/resources/views/activity/progres_activity/index.blade.php +++ b/resources/views/activity/progres_activity/index.blade.php @@ -73,14 +73,7 @@ - @php - $totalTasks = $item->team->regions->penilaiTeam - ->filter(function ($penilaiTeam) use ($item) { - return $penilaiTeam->user_id == $item->user->id; - }) - ->count(); - @endphp -

Total Task: {{ $totalTasks }}

+

Total Task: {{ countPermohonanForUser($item->user->id) }}