diff --git a/app/Http/Controllers/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index 9cd9ab2..6fc8e56 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -27,6 +27,9 @@ use Modules\Lpj\Models\StatusPermohonan; use Modules\Lpj\Models\TujuanPenilaian; use Modules\Lpj\Services\PermohonanHistoryService; + use Modules\Lpj\Models\Noc; + + class PermohonanController extends Controller { @@ -361,15 +364,46 @@ $permohonan->save(); if ($permohonan->status_bayar == 'belum_bayar') { - $persetujuanPenawaran = PersetujuanPenawaran::where('permohonan_id', $id)->first(); - if(!$persetujuanPenawaran){ - $persetujuanPenawaran = PersetujuanPenawaran::create([ - 'permohonan_id' => $id, + PersetujuanPenawaran::firstOrCreate( + ['permohonan_id' => $id], + ['created_by' => Auth::id()] + ); + } + + if ($permohonan->status == 'sudah_dibayar') { + $buktiBayar = $permohonan->documents->filter(function ($doc) { + return $doc->detail && $doc->detail->nama === 'Bukti Bayar'; + }); + + if ($buktiBayar->isEmpty()) { + return redirect()->route('authorization.show', $id)->with('error', 'Bukti Bayar harus diunggah'); + } + + $persetujuanPenawaran = PersetujuanPenawaran::firstOrCreate( + ['permohonan_id' => $id], + [ 'created_by' => Auth::id(), + 'bukti_bayar' => $buktiBayar->first()->dokumen_jaminan[0], + ] + ); + + try { + Noc::updateOrCreate([ + 'permohonan_id' => $persetujuanPenawaran->permohonan_id, + 'persetujuan_penawaran_id' => $persetujuanPenawaran->id + ],[ + 'bukti_bayar' => $persetujuanPenawaran->bukti_bayar, ]); + } catch (\Exception $e) { + \Log::error('Failed to create or update NOC: ' . $e->getMessage()); + return redirect() + ->route('persetujuan-penawaran.index') + ->with('error', 'Persetujuan Penawaran berhasil disimpan tetapi gagal membuat NOC: ' . $e->getMessage()); } } + + } catch (Exception $e) { return redirect()->route('authorization.show', $id)->with('error', 'Failed to update permohonan'); }