perbaiki looping pada kirim surat tender kjpp pada saat gagal kirim
This commit is contained in:
@@ -2,28 +2,28 @@
|
||||
|
||||
namespace Modules\Lpj\Http\Controllers;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Exception;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use Modules\Lpj\Models\KJPP;
|
||||
use Modules\Location\Models\City;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Modules\Lpj\Models\Permohonan;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use Modules\Location\Models\Village;
|
||||
use Modules\Lpj\Models\JenisLaporan;
|
||||
use Modules\Location\Models\District;
|
||||
use Modules\Location\Models\Province;
|
||||
use Modules\Location\Models\Village;
|
||||
use Modules\Lpj\Models\PenawaranTender;
|
||||
use Modules\Lpj\Models\StatusPermohonan;
|
||||
use Modules\Lpj\Models\TujuanPenilaianKJPP;
|
||||
use Modules\Lpj\Models\PenawaranDetailTender;
|
||||
use Modules\Lpj\Exports\PenawaranTenderExport;
|
||||
use Modules\Lpj\Http\Requests\TenderPenawaranRequest;
|
||||
use Modules\Lpj\Jobs\SendPenawaranKJPPTenderJob;
|
||||
use Modules\Lpj\Jobs\SendPenawaranTenderJob;
|
||||
use Modules\Lpj\Models\JenisLaporan;
|
||||
use Modules\Lpj\Models\KJPP;
|
||||
use Modules\Lpj\Models\PenawaranDetailTender;
|
||||
use Modules\Lpj\Models\PenawaranEmailTenderLog;
|
||||
use Modules\Lpj\Models\PenawaranTender;
|
||||
use Modules\Lpj\Models\Permohonan;
|
||||
use Modules\Lpj\Models\StatusPermohonan;
|
||||
use Modules\Lpj\Models\TujuanPenilaianKJPP;
|
||||
|
||||
class TenderController extends Controller
|
||||
{
|
||||
@@ -46,11 +46,8 @@
|
||||
|
||||
// Jika nomor_registrasi sudah ada, kembalikan respon 403 Forbidden
|
||||
if ($penawaranExists) {
|
||||
return redirect()
|
||||
->route('tender.penawaran.editPenawaran', ['noreg' => $noreg])->with(
|
||||
'error',
|
||||
'Penawaran dengan nomor registrasi ini sudah ada, Anda akan diarahkan ke halaman edit.',
|
||||
);
|
||||
return redirect()->route('tender.penawaran.editPenawaran', ['noreg' => $noreg])
|
||||
->with('error', 'Penawaran dengan nomor registrasi ini sudah ada, Anda akan diarahkan ke halaman edit.');
|
||||
}
|
||||
|
||||
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
|
||||
@@ -61,10 +58,7 @@
|
||||
|
||||
$kjpp = KJPP::all();
|
||||
|
||||
return view(
|
||||
'lpj::penawaran/create',
|
||||
compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'noreg', 'permohonan'),
|
||||
);
|
||||
return view('lpj::penawaran/create', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'noreg', 'permohonan'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -101,7 +95,7 @@
|
||||
'penawaran_id' => $penawaranId->id,
|
||||
'kjpp_rekanan_id' => $kjpp,
|
||||
'created_by' => $userId, // Set created_by for details
|
||||
'updated_by' => $userId,
|
||||
'updated_by' => $userId
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -109,12 +103,14 @@
|
||||
DB::commit();
|
||||
|
||||
return redirect()
|
||||
->route('tender.penawaran.index')->with('success', 'Data Penawaran created successfully');
|
||||
->route('tender.penawaran.index')
|
||||
->with('success', 'Data Penawaran created successfully');
|
||||
} catch (Exception $e) {
|
||||
DB::rollBack();
|
||||
|
||||
return redirect()
|
||||
->route('tender.penawaran.createPenawaran', $noreg)->with('error', 'Validation failed: ' . $e);
|
||||
->route('tender.penawaran.createPenawaran', $noreg)
|
||||
->with('error', 'Validation failed: ' . $e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -133,27 +129,17 @@
|
||||
$penawaran1 = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
|
||||
|
||||
if (!$penawaran1) {
|
||||
return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])->with(
|
||||
'error',
|
||||
'Penawaran dengan nomor registrasi ini belum dibuat. Silahkan isi terlebih dahulu!',
|
||||
);
|
||||
return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])->with('error', 'Penawaran dengan nomor registrasi ini belum dibuat. Silahkan isi terlebih dahulu!');
|
||||
}
|
||||
|
||||
if ($penawaran1->status != 'tender') {
|
||||
return redirect()->route('spk.index')->with(
|
||||
'error',
|
||||
'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!',
|
||||
);
|
||||
return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!');
|
||||
}
|
||||
|
||||
// dd($penawaran1->id);
|
||||
if ($penawaran1) {
|
||||
$penawaran = $penawaran1;
|
||||
$detail_penawaran = PenawaranDetailTender::where('penawaran_id', '=', $penawaran1->id)->where(
|
||||
'status',
|
||||
'=',
|
||||
1,
|
||||
)->pluck('kjpp_rekanan_id')->toArray();
|
||||
$detail_penawaran = PenawaranDetailTender::where('penawaran_id', '=', $penawaran1->id)->where('status', '=', 1)->pluck('kjpp_rekanan_id')->toArray();
|
||||
$kjpps = KJPP::whereIn('id', $detail_penawaran)->get();
|
||||
$tujuan_penilaian_kjpp = TujuanPenilaianKJPP::where('id', $penawaran->tujuan_penilaian_kjpp_id)->get();
|
||||
$jenis_laporan = JenisLaporan::where('id', $penawaran->jenis_laporan_id)->get();
|
||||
@@ -164,10 +150,7 @@
|
||||
|
||||
// dd($kjpps);
|
||||
|
||||
return view(
|
||||
'lpj::penawaran.show',
|
||||
compact('noreg', 'penawaran', 'kjpps', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'penawaranExists'),
|
||||
);
|
||||
return view('lpj::penawaran.show', compact('noreg', 'penawaran', 'kjpps', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'penawaranExists'));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -179,50 +162,28 @@
|
||||
$penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
|
||||
|
||||
if (!$penawaran) {
|
||||
return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])->with(
|
||||
'error',
|
||||
'Penawaran dengan nomor registrasi ini belum dibuat. Silahkan isi terlebih dahulu!',
|
||||
);
|
||||
return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])->with('error', 'Penawaran dengan nomor registrasi ini belum dibuat. Silahkan isi terlebih dahulu!');
|
||||
}
|
||||
|
||||
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
|
||||
|
||||
|
||||
if ($penawaran->status != 'tender') {
|
||||
return redirect()->route('spk.index')->with(
|
||||
'error',
|
||||
'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!',
|
||||
);
|
||||
return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!');
|
||||
}
|
||||
|
||||
$status = StatusPermohonan::all();
|
||||
$tujuan_penilaian_kjpp = TujuanPenilaianKJPP::all();
|
||||
$jenis_laporan = JenisLaporan::all();
|
||||
|
||||
$detail_penawaran = PenawaranDetailTender::where('penawaran_id', '=', $penawaran->id)->where(
|
||||
'status',
|
||||
'=',
|
||||
1,
|
||||
)->pluck('kjpp_rekanan_id')->toArray();
|
||||
$detail_penawaran = PenawaranDetailTender::where('penawaran_id', '=', $penawaran->id)->where('status', '=', 1)->pluck('kjpp_rekanan_id')->toArray();
|
||||
$kjpps = KJPP::whereIn('id', $detail_penawaran)->pluck('id')->toArray();
|
||||
|
||||
$kjpp = KJPP::all();
|
||||
|
||||
// dd($penawaran);
|
||||
|
||||
return view(
|
||||
'lpj::penawaran.edit',
|
||||
compact(
|
||||
'status',
|
||||
'tujuan_penilaian_kjpp',
|
||||
'jenis_laporan',
|
||||
'kjpp',
|
||||
'penawaran',
|
||||
'noreg',
|
||||
'kjpps',
|
||||
'permohonan',
|
||||
),
|
||||
);
|
||||
return view('lpj::penawaran.edit', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'penawaran', 'noreg', 'kjpps', 'permohonan'));
|
||||
}
|
||||
|
||||
|
||||
@@ -270,10 +231,9 @@
|
||||
|
||||
// Tangani penambahan atau perubahan KJPP baru
|
||||
foreach ($kjpps as $kjpp) {
|
||||
$existingDetail = PenawaranDetailTender::where('penawaran_id', $penawaran->id)->where(
|
||||
'kjpp_rekanan_id',
|
||||
$kjpp,
|
||||
)->first();
|
||||
$existingDetail = PenawaranDetailTender::where('penawaran_id', $penawaran->id)
|
||||
->where('kjpp_rekanan_id', $kjpp)
|
||||
->first();
|
||||
|
||||
// dd($existingDetail);
|
||||
|
||||
@@ -301,16 +261,15 @@
|
||||
DB::commit();
|
||||
|
||||
return redirect()
|
||||
->route('tender.penawaran.ulang.index')->with('success', 'Data Penawaran updated successfully');
|
||||
->route('tender.penawaran.ulang.index')
|
||||
->with('success', 'Data Penawaran updated successfully');
|
||||
} catch (Exception $e) {
|
||||
// Rollback jika ada kesalahan
|
||||
DB::rollBack();
|
||||
|
||||
return redirect()
|
||||
->route('tender.penawaran.createPenawaran', $noreg)->with(
|
||||
'error',
|
||||
'Validation failed: ' . $e->getMessage(),
|
||||
);
|
||||
->route('tender.penawaran.createPenawaran', $noreg)
|
||||
->with('error', 'Validation failed: ' . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -325,27 +284,18 @@
|
||||
|
||||
// Kalau tidak ketemu nomor registrasi dengan tabel penawaran
|
||||
if (!$penawaran) {
|
||||
return redirect()
|
||||
->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])->with(
|
||||
'error',
|
||||
'Anda Belum Membuat Penawaran. Silahkan isi terlebih dahulu!',
|
||||
);
|
||||
return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])
|
||||
->with('error', 'Anda Belum Membuat Penawaran. Silahkan isi terlebih dahulu!');
|
||||
}
|
||||
|
||||
if ($penawaran->status != 'tender') {
|
||||
return redirect()->route('spk.index')->with(
|
||||
'error',
|
||||
'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!',
|
||||
);
|
||||
return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!');
|
||||
}
|
||||
|
||||
// Kalau tidak ada dokumen jaminan maka di arahkan ke halaman dokumen jaminan
|
||||
if ($permohonan->debiture->documents->isEmpty()) {
|
||||
return redirect()
|
||||
->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id])->with(
|
||||
'error',
|
||||
'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!',
|
||||
);
|
||||
return redirect()->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id])
|
||||
->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!');
|
||||
}
|
||||
|
||||
foreach ($permohonan->debiture->documents as $document) {
|
||||
@@ -365,17 +315,11 @@
|
||||
$now = date('Y-m-d H:i:s');
|
||||
// Jika batas tanggal penawaran sudah lewat
|
||||
if ($penawaran->end_date < $now) {
|
||||
return redirect()
|
||||
->route('tender.penawaran.editPenawaran', ['noreg' => $noreg])->with(
|
||||
'error',
|
||||
'Sudah Kadaluarsa. Silahkan perpanjang tanggal penawaran terlebih dahulu!',
|
||||
);
|
||||
return redirect()->route('tender.penawaran.editPenawaran', ['noreg' => $noreg])
|
||||
->with('error', 'Sudah Kadaluarsa. Silahkan perpanjang tanggal penawaran terlebih dahulu!');
|
||||
}
|
||||
|
||||
return view(
|
||||
'lpj::penawaran.surat_tender',
|
||||
compact('penawaran', 'noreg', 'permohonan', 'villages', 'districts', 'cities', 'provinces'),
|
||||
);
|
||||
return view('lpj::penawaran.surat_tender', compact('penawaran', 'noreg', 'permohonan', 'villages', 'districts', 'cities', 'provinces'));
|
||||
}
|
||||
|
||||
public function suratTenderKJPP($noreg, $id)
|
||||
@@ -385,27 +329,18 @@
|
||||
$penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
|
||||
|
||||
if (!$penawaran) {
|
||||
return redirect()
|
||||
->route('tender.penawaran.createPenawaran', ['noreg' => $penawaran->nomor_registrasi])->with(
|
||||
'error',
|
||||
'Anda Belum Membuat Penawaran. Silahkan isi terlebih dahulu!',
|
||||
);
|
||||
return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $penawaran->nomor_registrasi])
|
||||
->with('error', 'Anda Belum Membuat Penawaran. Silahkan isi terlebih dahulu!');
|
||||
}
|
||||
|
||||
if ($penawaran->status != 'tender') {
|
||||
return redirect()->route('spk.index')->with(
|
||||
'error',
|
||||
'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!',
|
||||
);
|
||||
return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!');
|
||||
}
|
||||
|
||||
// Kalau tidak ada dokumen jaminan maka di arahkan ke halaman dokumen jaminan
|
||||
if ($permohonan->debiture->documents->isEmpty()) {
|
||||
return redirect()
|
||||
->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id])->with(
|
||||
'error',
|
||||
'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!',
|
||||
);
|
||||
return redirect()->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id])
|
||||
->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!');
|
||||
}
|
||||
|
||||
foreach ($permohonan->debiture->documents as $document) {
|
||||
@@ -425,11 +360,8 @@
|
||||
$now = date('Y-m-d H:i:s');
|
||||
// Jika batas tanggal penawaran sudah lewat
|
||||
if ($penawaran->end_date < $now) {
|
||||
return redirect()
|
||||
->route('tender.penawaran.editPenawaran', ['noreg' => $noreg])->with(
|
||||
'error',
|
||||
'Sudah Kadaluarsa. Silahkan perpanjang tanggal penawaran terlebih dahulu!',
|
||||
);
|
||||
return redirect()->route('tender.penawaran.editPenawaran', ['noreg' => $noreg])
|
||||
->with('error', 'Sudah Kadaluarsa. Silahkan perpanjang tanggal penawaran terlebih dahulu!');
|
||||
}
|
||||
|
||||
$detail_penawaran = PenawaranDetailTender::with('kjpp')->where('kjpp_rekanan_id', '=', $kjpp->id)->get();
|
||||
@@ -438,20 +370,7 @@
|
||||
$detail_penawaran_1 = $detail->kjpp;
|
||||
}
|
||||
|
||||
return view(
|
||||
'lpj::penawaran.surat_tender_kjpp',
|
||||
compact(
|
||||
'penawaran',
|
||||
'noreg',
|
||||
'permohonan',
|
||||
'villages',
|
||||
'districts',
|
||||
'cities',
|
||||
'provinces',
|
||||
'detail_penawaran_1',
|
||||
'id',
|
||||
),
|
||||
);
|
||||
return view('lpj::penawaran.surat_tender_kjpp', compact('penawaran', 'noreg', 'permohonan', 'villages', 'districts', 'cities', 'provinces', 'detail_penawaran_1', 'id'));
|
||||
}
|
||||
|
||||
public function datatablesPenawaran(Request $request)
|
||||
@@ -613,10 +532,7 @@
|
||||
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
|
||||
|
||||
if ($penawaran->status != 'tender') {
|
||||
return redirect()->route('spk.index')->with(
|
||||
'error',
|
||||
'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!',
|
||||
);
|
||||
return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!');
|
||||
}
|
||||
|
||||
foreach ($permohonan->debiture->documents as $document) {
|
||||
@@ -632,10 +548,7 @@
|
||||
$provinces = Province::where('code', $province_permohonan)->get();
|
||||
|
||||
$pdf = app('dompdf.wrapper'); // create an instance of the PDF class
|
||||
$pdf->loadView(
|
||||
'lpj::penawaran.surat_tender_download',
|
||||
compact('penawaran', 'permohonan', 'villages', 'districts', 'cities', 'provinces'),
|
||||
);
|
||||
$pdf->loadView('lpj::penawaran.surat_tender_download', compact('penawaran', 'permohonan', 'villages', 'districts', 'cities', 'provinces'));
|
||||
|
||||
return $pdf->download('surat_tender' . time() . '.pdf');
|
||||
}
|
||||
@@ -647,10 +560,7 @@
|
||||
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
|
||||
|
||||
if ($penawaran->status != 'tender') {
|
||||
return redirect()->route('spk.index')->with(
|
||||
'error',
|
||||
'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!',
|
||||
);
|
||||
return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!');
|
||||
}
|
||||
|
||||
foreach ($permohonan->debiture->documents as $document) {
|
||||
@@ -672,10 +582,7 @@
|
||||
}
|
||||
|
||||
$pdf = app('dompdf.wrapper'); // create an instance of the PDF class
|
||||
$pdf->loadView(
|
||||
'lpj::penawaran.surat_tender_kjpp_download',
|
||||
compact('penawaran', 'permohonan', 'villages', 'districts', 'cities', 'provinces', 'detail_penawaran_1'),
|
||||
);
|
||||
$pdf->loadView('lpj::penawaran.surat_tender_kjpp_download', compact('penawaran', 'permohonan', 'villages', 'districts', 'cities', 'provinces', 'detail_penawaran_1'));
|
||||
|
||||
return $pdf->download('surat_tender_kjpp' . time() . '.pdf');
|
||||
}
|
||||
@@ -687,26 +594,17 @@
|
||||
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
|
||||
|
||||
if (!$penawaran) {
|
||||
return redirect()
|
||||
->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])->with(
|
||||
'error',
|
||||
'Anda Belum Membuat Penawaran. Silahkan isi terlebih dahulu!',
|
||||
);
|
||||
return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])
|
||||
->with('error', 'Anda Belum Membuat Penawaran. Silahkan isi terlebih dahulu!');
|
||||
}
|
||||
|
||||
if ($penawaran->status != 'tender') {
|
||||
return redirect()->route('spk.index')->with(
|
||||
'error',
|
||||
'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!',
|
||||
);
|
||||
return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!');
|
||||
}
|
||||
|
||||
if ($permohonan->debiture->documents->isEmpty()) {
|
||||
return redirect()
|
||||
->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id])->with(
|
||||
'error',
|
||||
'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!',
|
||||
);
|
||||
return redirect()->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id])
|
||||
->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!');
|
||||
}
|
||||
|
||||
return view('lpj::penawaran.showKirimEmail', compact('penawaran', 'permohonan', 'noreg'));
|
||||
@@ -721,9 +619,7 @@
|
||||
$penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
|
||||
|
||||
// Retrieve data from the database
|
||||
$query = PenawaranDetailTender::query()->where('penawaran_id', '=', $penawaran->id)->with(
|
||||
['kjpp', 'penawaran', 'penawaran.emailTenderLog'],
|
||||
);
|
||||
$query = PenawaranDetailTender::query()->where('penawaran_id', '=', $penawaran->id)->with(['kjpp', 'penawaran', 'penawaran.emailTenderLog']);
|
||||
|
||||
// dd($query);
|
||||
|
||||
@@ -735,23 +631,18 @@
|
||||
// Handle sorting for related table columns
|
||||
if ($column === 'nama_kjpp') {
|
||||
// Join with the KJPP table and sort by the name column
|
||||
$query
|
||||
->join('kjpp', 'detail_penawaran.kjpp_rekanan_id', '=', 'kjpp.id')
|
||||
$query->join('kjpp', 'detail_penawaran.kjpp_rekanan_id', '=', 'kjpp.id')
|
||||
->orderBy('kjpp.name', $order)
|
||||
->select('detail_penawaran.*'); // Select only the main table columns to avoid conflicts
|
||||
} else {
|
||||
if ($column === 'nomor_kjpp') {
|
||||
$query
|
||||
->join('kjpp', 'detail_penawaran.kjpp_rekanan_id', '=', 'kjpp.id')->orderBy(
|
||||
'kjpp.code',
|
||||
$order,
|
||||
)->select('detail_penawaran.*');
|
||||
} else if ($column === 'nomor_kjpp') {
|
||||
$query->join('kjpp', 'detail_penawaran.kjpp_rekanan_id', '=', 'kjpp.id')
|
||||
->orderBy('kjpp.code', $order)
|
||||
->select('detail_penawaran.*');
|
||||
} else {
|
||||
// Sort by columns in the main table
|
||||
$query->orderBy($column, $order);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Get the data for the current page
|
||||
$data = $query->get();
|
||||
@@ -760,6 +651,7 @@
|
||||
$i = 0;
|
||||
$j = 1;
|
||||
foreach ($data as $obj) {
|
||||
|
||||
// tanggal_permohonan
|
||||
$data[$i]->numbernya = $j;
|
||||
$i++;
|
||||
@@ -779,245 +671,23 @@
|
||||
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
|
||||
|
||||
if (!$penawaran) {
|
||||
return redirect()
|
||||
->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])->with(
|
||||
'error',
|
||||
'Anda Belum Membuat Penawaran. Silahkan isi terlebih dahulu!',
|
||||
);
|
||||
return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])
|
||||
->with('error', 'Anda Belum Membuat Penawaran. Silahkan isi terlebih dahulu!');
|
||||
}
|
||||
|
||||
if ($penawaran->status != 'tender') {
|
||||
return redirect()->route('spk.index')->with(
|
||||
'error',
|
||||
'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!',
|
||||
);
|
||||
return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!');
|
||||
}
|
||||
|
||||
if ($permohonan->debiture->documents->isEmpty()) {
|
||||
return redirect()
|
||||
->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id])->with(
|
||||
'error',
|
||||
'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!',
|
||||
);
|
||||
return redirect()->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id])
|
||||
->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!');
|
||||
}
|
||||
|
||||
$detail_penawaran = PenawaranDetailTender::where('penawaran_id', '=', $penawaran->id)->where(
|
||||
'status',
|
||||
'=',
|
||||
1,
|
||||
)->pluck('kjpp_rekanan_id')->toArray();
|
||||
|
||||
|
||||
$kjpps = KJPP::whereIn('id', $detail_penawaran)->get()->map(function ($item) {
|
||||
$emails = [$item->email_kantor];
|
||||
|
||||
// Parse JSON string jika ada dan tidak kosong
|
||||
if (!empty($item->detail_email_kantor) && $item->detail_email_kantor !== '[]') {
|
||||
$detail_emails = json_decode($item->detail_email_kantor, true);
|
||||
if (is_array($detail_emails)) {
|
||||
foreach ($detail_emails as $detail) {
|
||||
if (isset($detail['email_kantor'])) {
|
||||
$emails[] = $detail['email_kantor'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return [
|
||||
'kjpp' => $item,
|
||||
'emails' => array_filter($emails),
|
||||
];
|
||||
});
|
||||
|
||||
foreach ($permohonan->debiture->documents as $document) {
|
||||
$village_permohonan = $document->village_code;
|
||||
$district_permohonan = $document->district_code;
|
||||
$city_permohonan = $document->city_code;
|
||||
$province_permohonan = $document->province_code;
|
||||
}
|
||||
|
||||
$villages = Village::where('code', $village_permohonan)->get();
|
||||
$districts = District::where('code', $district_permohonan)->get();
|
||||
$cities = City::where('code', $city_permohonan)->get();
|
||||
$provinces = Province::where('code', $province_permohonan)->get();
|
||||
|
||||
$subject = 'Send Penawaran Email';
|
||||
|
||||
$body_pdf = view('lpj::penawaran.kirimEmail', [
|
||||
'penawaran' => $penawaran,
|
||||
'permohonan' => $permohonan,
|
||||
'kjpps' => $kjpps->pluck('emails')->flatten()->toArray(),
|
||||
'villages' => $villages,
|
||||
'districts' => $districts,
|
||||
'cities' => $cities,
|
||||
'provinces' => $provinces,
|
||||
])->render();
|
||||
|
||||
// Dispatch job untuk mengirim email
|
||||
SendPenawaranTenderJob::dispatch(
|
||||
$kjpps->pluck('emails')->flatten()->toArray(),
|
||||
$penawaran,
|
||||
$permohonan,
|
||||
$villages,
|
||||
$districts,
|
||||
$cities,
|
||||
$provinces,
|
||||
);
|
||||
|
||||
try {
|
||||
// Proses log email untuk setiap KJPP
|
||||
foreach ($kjpps as $kjppData) {
|
||||
foreach ($kjppData['emails'] as $email) {
|
||||
// Cek log yang sudah ada
|
||||
$log = PenawaranEmailTenderLog::where('penawaran_id', $penawaran->id)
|
||||
->where('to_email', $email)
|
||||
->where('status', 'failed')
|
||||
->first();
|
||||
|
||||
$log1 = PenawaranEmailTenderLog::where('penawaran_id', $penawaran->id)->where(
|
||||
'to_email',
|
||||
$email,
|
||||
)->where('status', 'success')->first();
|
||||
|
||||
if ($log) {
|
||||
// Update log failed menjadi success
|
||||
$log->update([
|
||||
'penawaran_id' => $penawaran->id,
|
||||
'kjpp' => $kjppData['kjpp']->code . ' | ' . $kjppData['kjpp']->name,
|
||||
'to_email' => $email,
|
||||
'subject' => $subject,
|
||||
'body_pdf' => $body_pdf,
|
||||
'status' => 'success',
|
||||
'error_message' => null,
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
} else {
|
||||
if ($log1) {
|
||||
// Update timestamp jika sudah success
|
||||
$log1->update([
|
||||
'penawaran_id' => $penawaran->id,
|
||||
'kjpp' => $kjppData['kjpp']->code . ' | ' . $kjppData['kjpp']->name,
|
||||
'to_email' => $email,
|
||||
'subject' => $subject,
|
||||
'body_pdf' => $body_pdf,
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
} else {
|
||||
// Buat log baru
|
||||
PenawaranEmailTenderLog::create([
|
||||
'penawaran_id' => $penawaran->id,
|
||||
'kjpp' => $kjppData['kjpp']->code . ' | ' . $kjppData['kjpp']->name,
|
||||
'to_email' => $email,
|
||||
'subject' => $subject,
|
||||
'body_pdf' => $body_pdf,
|
||||
'status' => 'success',
|
||||
'error_message' => null,
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return redirect()
|
||||
->route('tender.penawaran.ulang.index')->with('success', 'Email Penawaran Berhasil Terkirim!');
|
||||
} catch (Exception $e) {
|
||||
// Log email gagal untuk setiap KJPP
|
||||
foreach ($kjpps as $kjppData) {
|
||||
foreach ($kjppData['emails'] as $email) {
|
||||
$log = PenawaranEmailTenderLog::where('penawaran_id', $penawaran->id)
|
||||
->where('to_email', $email)
|
||||
->where('status', 'success')
|
||||
->first();
|
||||
|
||||
$log1 = PenawaranEmailTenderLog::where('penawaran_id', $penawaran->id)->where(
|
||||
'to_email',
|
||||
$email,
|
||||
)->where('status', 'failed')->first();
|
||||
|
||||
if ($log) {
|
||||
// Update log success menjadi failed
|
||||
$log->update([
|
||||
'penawaran_id' => $penawaran->id,
|
||||
'kjpp' => $kjppData['kjpp']->code . ' | ' . $kjppData['kjpp']->name,
|
||||
'to_email' => $email,
|
||||
'subject' => $subject,
|
||||
'body_pdf' => $body_pdf,
|
||||
'status' => 'failed',
|
||||
'error_message' => $e->getMessage(),
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
} else {
|
||||
if ($log1) {
|
||||
// Update error message jika sudah failed
|
||||
$log1->update([
|
||||
'penawaran_id' => $penawaran->id,
|
||||
'kjpp' => $kjppData['kjpp']->code . ' | ' . $kjppData['kjpp']->name,
|
||||
'to_email' => $email,
|
||||
'subject' => $subject,
|
||||
'body_pdf' => $body_pdf,
|
||||
'error_message' => $e->getMessage(),
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
} else {
|
||||
// Buat log baru dengan status failed
|
||||
PenawaranEmailTenderLog::create([
|
||||
'penawaran_id' => $penawaran->id,
|
||||
'kjpp' => $kjppData['kjpp']->code . ' | ' . $kjppData['kjpp']->name,
|
||||
'to_email' => $email,
|
||||
'subject' => $subject,
|
||||
'body_pdf' => $body_pdf,
|
||||
'status' => 'failed',
|
||||
'error_message' => $e->getMessage(),
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return redirect()
|
||||
->route('tender.penawaran.showKirimEmail', ['noreg' => $noreg])->with(
|
||||
'error',
|
||||
'Email Penawaran Gagal Terkirim!',
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function kirimEmailKJPP($noreg, $id)
|
||||
{
|
||||
$penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
|
||||
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
|
||||
|
||||
if (!$penawaran) {
|
||||
return redirect()
|
||||
->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])->with(
|
||||
'error',
|
||||
'Anda Belum Membuat Penawaran. Silahkan isi terlebih dahulu!',
|
||||
);
|
||||
}
|
||||
|
||||
if ($penawaran->status != 'tender') {
|
||||
return redirect()->route('spk.index')->with(
|
||||
'error',
|
||||
'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!',
|
||||
);
|
||||
}
|
||||
|
||||
if ($permohonan->debiture->documents->isEmpty()) {
|
||||
return redirect()
|
||||
->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id])->with(
|
||||
'error',
|
||||
'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!',
|
||||
);
|
||||
}
|
||||
|
||||
$detail_penawaran = PenawaranDetailTender::with('kjpp')->where('kjpp_rekanan_id', '=', $id)->pluck(
|
||||
'kjpp_rekanan_id',
|
||||
)->toArray();
|
||||
$kjpps = KJPP::whereIn('id', $detail_penawaran)->get()->map(function ($item) {
|
||||
$detail_penawaran = PenawaranDetailTender::where('penawaran_id', '=', $penawaran->id)->where('status', '=', 1)->pluck('kjpp_rekanan_id')->toArray();
|
||||
$kjpps = KJPP::whereIn('id', $detail_penawaran)
|
||||
->get()
|
||||
->map(function ($item) {
|
||||
$emails = [$item->email_kantor];
|
||||
|
||||
// Parse JSON string jika ada dan tidak kosong
|
||||
@@ -1033,7 +703,77 @@
|
||||
}
|
||||
|
||||
return array_filter($emails);
|
||||
})->flatten()->toArray();
|
||||
})
|
||||
->flatten()
|
||||
->toArray();
|
||||
|
||||
foreach ($permohonan->debiture->documents as $document) {
|
||||
$village_permohonan = $document->village_code;
|
||||
$district_permohonan = $document->district_code;
|
||||
$city_permohonan = $document->city_code;
|
||||
$province_permohonan = $document->province_code;
|
||||
}
|
||||
|
||||
$villages = Village::where('code', $village_permohonan)->get();
|
||||
$districts = District::where('code', $district_permohonan)->get();
|
||||
$cities = City::where('code', $city_permohonan)->get();
|
||||
$provinces = Province::where('code', $province_permohonan)->get();
|
||||
|
||||
|
||||
SendPenawaranTenderJob::dispatch(
|
||||
$kjpps,
|
||||
$penawaran,
|
||||
$permohonan,
|
||||
$villages,
|
||||
$districts,
|
||||
$cities,
|
||||
$provinces
|
||||
);
|
||||
|
||||
return redirect()->route('tender.penawaran.ulang.index')->with('success', 'Email Penawaran Berhasil Terkirim!');
|
||||
}
|
||||
|
||||
public function kirimEmailKJPP($noreg, $id)
|
||||
{
|
||||
$penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
|
||||
$permohonan = Permohonan::where('nomor_registrasi', '=', $noreg)->first();
|
||||
|
||||
if (!$penawaran) {
|
||||
return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg])
|
||||
->with('error', 'Anda Belum Membuat Penawaran. Silahkan isi terlebih dahulu!');
|
||||
}
|
||||
|
||||
if ($penawaran->status != 'tender') {
|
||||
return redirect()->route('spk.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk SPK tidak bisa masuk penawaran lagi!');
|
||||
}
|
||||
|
||||
if ($permohonan->debiture->documents->isEmpty()) {
|
||||
return redirect()->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id])
|
||||
->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!');
|
||||
}
|
||||
|
||||
$detail_penawaran = PenawaranDetailTender::with('kjpp')->where('kjpp_rekanan_id', '=', $id)->pluck('kjpp_rekanan_id')->toArray();
|
||||
$kjpps = KJPP::whereIn('id', $detail_penawaran)
|
||||
->get()
|
||||
->map(function ($item) {
|
||||
$emails = [$item->email_kantor];
|
||||
|
||||
// Parse JSON string jika ada dan tidak kosong
|
||||
if (!empty($item->detail_email_kantor) && $item->detail_email_kantor !== '[]') {
|
||||
$detail_emails = json_decode($item->detail_email_kantor, true);
|
||||
if (is_array($detail_emails)) {
|
||||
foreach ($detail_emails as $detail) {
|
||||
if (isset($detail['email_kantor'])) {
|
||||
$emails[] = $detail['email_kantor'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return array_filter($emails);
|
||||
})
|
||||
->flatten()
|
||||
->toArray();
|
||||
|
||||
$dp1 = PenawaranDetailTender::with('kjpp')->where('kjpp_rekanan_id', '=', $id)->first();
|
||||
|
||||
@@ -1059,7 +799,7 @@
|
||||
'villages' => $villages,
|
||||
'districts' => $districts,
|
||||
'cities' => $cities,
|
||||
'provinces' => $provinces,
|
||||
'provinces' => $provinces
|
||||
])->render();
|
||||
|
||||
SendPenawaranKJPPTenderJob::dispatch(
|
||||
@@ -1070,7 +810,7 @@
|
||||
$villages,
|
||||
$districts,
|
||||
$cities,
|
||||
$provinces,
|
||||
$provinces
|
||||
);
|
||||
|
||||
try {
|
||||
@@ -1090,24 +830,13 @@
|
||||
if ($log) {
|
||||
// Jika log ditemukan dan statusnya 'failed', update status menjadi 'success'
|
||||
$log->update([
|
||||
'penawaran_id' => $penawaran->id,
|
||||
'kjpp' => $dp1->kjpp->code . ' | ' . $dp1->kjpp->name,
|
||||
'to_email' => $email,
|
||||
'subject' => $subject,
|
||||
'body_pdf' => $body_pdf,
|
||||
'status' => 'success',
|
||||
'error_message' => null, // Reset error_message saat status diubah menjadi success
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
} else {
|
||||
if ($log1) {
|
||||
} else if ($log1) {
|
||||
// Jika log ditemukan dan statusnya 'success' biarkan saja
|
||||
$log1->update([
|
||||
'penawaran_id' => $penawaran->id,
|
||||
'kjpp' => $dp1->kjpp->code . ' | ' . $dp1->kjpp->name,
|
||||
'to_email' => $email,
|
||||
'subject' => $subject,
|
||||
'body_pdf' => $body_pdf,
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
} else {
|
||||
@@ -1125,13 +854,9 @@
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return redirect()->route('tender.penawaran.ulang.index')->with(
|
||||
'success',
|
||||
'Email Penawaran Berhasil Terkirim!',
|
||||
);
|
||||
} catch (Exception $e) {
|
||||
return redirect()->route('tender.penawaran.ulang.index')->with('success', 'Email Penawaran Berhasil Terkirim!');
|
||||
} catch (\Exception $e) {
|
||||
// Log email gagal
|
||||
foreach ($kjpps as $email) {
|
||||
$log = PenawaranEmailTenderLog::where('penawaran_id', $penawaran->id)
|
||||
@@ -1147,24 +872,13 @@
|
||||
if ($log) {
|
||||
// Jika log ditemukan dan statusnya 'success', update status menjadi 'failed'
|
||||
$log->update([
|
||||
'penawaran_id' => $penawaran->id,
|
||||
'kjpp' => $dp1->kjpp->code . ' | ' . $dp1->kjpp->name,
|
||||
'to_email' => $email,
|
||||
'subject' => $subject,
|
||||
'body_pdf' => $body_pdf,
|
||||
'status' => 'failed',
|
||||
'error_message' => $e->getMessage(),
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
} else {
|
||||
if ($log1) {
|
||||
} else if ($log1) {
|
||||
// Jika log ditemukan dan statusnya 'failed' biarkan saja
|
||||
$log1->update([
|
||||
'penawaran_id' => $penawaran->id,
|
||||
'kjpp' => $dp1->kjpp->code . ' | ' . $dp1->kjpp->name,
|
||||
'to_email' => $email,
|
||||
'subject' => $subject,
|
||||
'body_pdf' => $body_pdf,
|
||||
'error_message' => $e->getMessage(),
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
@@ -1182,11 +896,8 @@
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return redirect()->route('tender.penawaran.showKirimEmail', ['noreg' => $noreg])->with(
|
||||
'error',
|
||||
'Email Penawaran Gagal Terkirim!',
|
||||
);
|
||||
|
||||
return redirect()->route('tender.penawaran.showKirimEmail', ['noreg' => $noreg])->with('error', 'Email Penawaran Gagal Terkirim!');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user