Membuat Menu Tender di Data Penawaran: Tambah Data Penawaran dan Detail Data Penawaran
This commit is contained in:
@@ -2,19 +2,22 @@
|
|||||||
|
|
||||||
namespace Modules\Lpj\Http\Controllers;
|
namespace Modules\Lpj\Http\Controllers;
|
||||||
|
|
||||||
|
use Exception;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Modules\Lpj\Models\KJPP;
|
||||||
use Illuminate\Http\Response;
|
use Illuminate\Http\Response;
|
||||||
use Modules\Lpj\Models\Penawaran;
|
use Modules\Lpj\Models\Penawaran;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Modules\Lpj\Models\Permohonan;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Maatwebsite\Excel\Facades\Excel;
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
use Modules\Lpj\Models\PenawaranTender;
|
|
||||||
use Modules\Lpj\Exports\PenawaranTenderExport;
|
|
||||||
use Modules\Lpj\Http\Requests\TenderPenawaranRequest;
|
|
||||||
use Modules\Lpj\Models\JenisLaporan;
|
use Modules\Lpj\Models\JenisLaporan;
|
||||||
use Modules\Lpj\Models\KJPP;
|
use Modules\Lpj\Models\PenawaranTender;
|
||||||
use Modules\Lpj\Models\Permohonan;
|
|
||||||
use Modules\Lpj\Models\StatusPermohonan;
|
use Modules\Lpj\Models\StatusPermohonan;
|
||||||
use Modules\Lpj\Models\TujuanPenilaianKJPP;
|
use Modules\Lpj\Models\TujuanPenilaianKJPP;
|
||||||
|
use Modules\Lpj\Models\PenawaranDetailTender;
|
||||||
|
use Modules\Lpj\Exports\PenawaranTenderExport;
|
||||||
|
use Modules\Lpj\Http\Requests\TenderPenawaranRequest;
|
||||||
|
|
||||||
class TenderController extends Controller
|
class TenderController extends Controller
|
||||||
{
|
{
|
||||||
@@ -38,9 +41,11 @@ class TenderController extends Controller
|
|||||||
$status = StatusPermohonan::all();
|
$status = StatusPermohonan::all();
|
||||||
$tujuan_penilaian_kjpp = TujuanPenilaianKJPP::all();
|
$tujuan_penilaian_kjpp = TujuanPenilaianKJPP::all();
|
||||||
$jenis_laporan = JenisLaporan::all();
|
$jenis_laporan = JenisLaporan::all();
|
||||||
$kjpp = KJPP::all();
|
|
||||||
|
|
||||||
return view('lpj::penawaran/create', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'penawaran', 'id'));
|
$kjpps = PenawaranDetailTender::pluck('kjpp_rekanan_id')->toArray();
|
||||||
|
$kjpp = KJPP::whereNotIn('id', $kjpps)->get();
|
||||||
|
|
||||||
|
return view('lpj::penawaran/create', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'penawaran', 'id', 'kjpps'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -50,27 +55,42 @@ class TenderController extends Controller
|
|||||||
{
|
{
|
||||||
$validated = $request->validated();
|
$validated = $request->validated();
|
||||||
|
|
||||||
if ($validated) {
|
// dd($validated);
|
||||||
|
|
||||||
|
DB::beginTransaction();
|
||||||
|
|
||||||
|
try {
|
||||||
$penawaran = PenawaranTender::find($id);
|
$penawaran = PenawaranTender::find($id);
|
||||||
|
|
||||||
$validated['nomor_registrasi'] = $penawaran->nomor_registrasi;
|
$validated['nomor_registrasi'] = $penawaran->nomor_registrasi;
|
||||||
|
|
||||||
// Mengatasi null untuk nama_kjpp_sebelumnya, biaya_kjpp_sebelumnya, dan tanggal_penilaian_sebelumnya
|
$validated['status'] = $request->input('status') ?? 'Tender';
|
||||||
$validated['nama_kjpp_sebelumnya'] = json_encode($request->input('nama_kjpp_sebelumnya') ?? []);
|
// dd($validated['status']);
|
||||||
$validated['biaya_kjpp_sebelumnya'] = $request->input('biaya_kjpp_sebelumnya') ?? '';
|
|
||||||
$validated['tanggal_penilaian_sebelumnya'] = $request->input('tanggal_penilaian_sebelumnya') ?? '';
|
|
||||||
|
|
||||||
// dd($validated);
|
$penawaranId = PenawaranTender::create($validated);
|
||||||
|
|
||||||
PenawaranTender::create($validated);
|
$kjpps = $request->input('kjpp', []);
|
||||||
|
|
||||||
|
// loop untuk insert data users ke tabel teams_users
|
||||||
|
foreach ($kjpps as $kjpp) {
|
||||||
|
PenawaranDetailTender::create([
|
||||||
|
'penawaran_id' => $penawaranId->id,
|
||||||
|
'kjpp_rekanan_id' => $kjpp
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Commit the transaction
|
||||||
|
DB::commit();
|
||||||
|
|
||||||
return redirect()
|
return redirect()
|
||||||
->route('tender.penawaran.index')
|
->route('tender.penawaran.index')
|
||||||
->with('success', 'Data Penawaran created successfully');
|
->with('success', 'Data Penawaran created successfully');
|
||||||
} else {
|
} catch (Exception $e) {
|
||||||
|
DB::rollBack();
|
||||||
|
|
||||||
return redirect()
|
return redirect()
|
||||||
->route('tender.penawaran.createPenawaran', $id)
|
->route('tender.penawaran.createPenawaran', $id)
|
||||||
->with('error', 'Validation failed');
|
->with('error', 'Validation failed: ' . $e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,9 +100,14 @@ class TenderController extends Controller
|
|||||||
public function penawaran_show($id)
|
public function penawaran_show($id)
|
||||||
{
|
{
|
||||||
$penawaran = PenawaranTender::find($id);
|
$penawaran = PenawaranTender::find($id);
|
||||||
$kjpps = KJPP::find($id);
|
$detail_penawaran = PenawaranDetailTender::where('penawaran_id', '=', $id)->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();
|
||||||
|
|
||||||
return view('lpj::penawaran.show', compact('id', 'penawaran', 'kjpps'));
|
// dd($kjpps);
|
||||||
|
|
||||||
|
return view('lpj::penawaran.show', compact('id', 'penawaran', 'kjpps', 'tujuan_penilaian_kjpp', 'jenis_laporan'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -12,17 +12,17 @@ class TenderPenawaranRequest extends FormRequest
|
|||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
$rules = [
|
$rules = [
|
||||||
'nama_kjpp_sebelumnya' => 'nullable|array',
|
'nama_kjpp_sebelumnya' => 'nullable',
|
||||||
'nama_kjpp_sebelumnya.*' => 'exists:kjpp,name',
|
|
||||||
'biaya_kjpp_sebelumnya' => 'nullable|numeric',
|
'biaya_kjpp_sebelumnya' => 'nullable|numeric',
|
||||||
'tanggal_penilaian_sebelumnya' => 'nullable',
|
'tanggal_penilaian_sebelumnya' => 'nullable',
|
||||||
'nomor_registrasi' => 'required',
|
'nomor_registrasi' => 'required',
|
||||||
|
'kjpp.*' => 'exists:kjpp,id',
|
||||||
'tujuan_penilaian_kjpp_id' => 'required',
|
'tujuan_penilaian_kjpp_id' => 'required',
|
||||||
'jenis_laporan_id' => 'required',
|
'jenis_laporan_id' => 'required',
|
||||||
'start_date' => 'required',
|
'start_date' => 'required',
|
||||||
'end_date' => 'required',
|
'end_date' => 'required',
|
||||||
'catatan' => 'nullable',
|
'catatan' => 'nullable',
|
||||||
'status' => 'required'
|
'status' => 'nullable'
|
||||||
];
|
];
|
||||||
|
|
||||||
if ($this->method() == 'PUT') {
|
if ($this->method() == 'PUT') {
|
||||||
@@ -53,7 +53,6 @@ class TenderPenawaranRequest extends FormRequest
|
|||||||
'jenis_laporan_id.required' => 'Jenis Laporan Wajib diisi!',
|
'jenis_laporan_id.required' => 'Jenis Laporan Wajib diisi!',
|
||||||
'start_date.required' => 'Tanggal Awal Wajib diisi!',
|
'start_date.required' => 'Tanggal Awal Wajib diisi!',
|
||||||
'end_date.required' => 'Tanggal Akhir Wajib diisi!',
|
'end_date.required' => 'Tanggal Akhir Wajib diisi!',
|
||||||
'status.required' => 'Status Wajib diisi!'
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,12 +66,12 @@ class TenderPenawaranRequest extends FormRequest
|
|||||||
$validator->errors()->add('end_date', 'Tanggal Akhir tidak boleh lebih awal dari Tanggal Awal.');
|
$validator->errors()->add('end_date', 'Tanggal Akhir tidak boleh lebih awal dari Tanggal Awal.');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validasi minimal 3 pilihan pada nama_kjpp_sebelumnya
|
// Validasi minimal 3 pilihan pada nama_kjpp
|
||||||
$namaKjppSebelumnya = $this->input('nama_kjpp_sebelumnya', []);
|
$namaKjpp = $this->input('kjpp', []);
|
||||||
|
|
||||||
// Abaikan jika array kosong, tetapi validasi jika terisi kurang dari 3 item
|
// jika terisi kurang dari 3 item
|
||||||
if (!empty($namaKjppSebelumnya) && is_array($namaKjppSebelumnya) && count($namaKjppSebelumnya) < 3) {
|
if (is_array($namaKjpp) && count($namaKjpp) < 3) {
|
||||||
$validator->errors()->add('nama_kjpp_sebelumnya', 'Nama KJPP Sebelumnya harus memiliki minimal 3 pilihan jika diisi.');
|
$validator->errors()->add('kjpp', 'Nama KJPP Sebelumnya harus memiliki minimal 3 pilihan jika diisi.');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
19
app/Models/PenawaranDetailTender.php
Normal file
19
app/Models/PenawaranDetailTender.php
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
// use Modules\Lpj\Database\Factories\PenawaranDetailTenderFactory;
|
||||||
|
|
||||||
|
class PenawaranDetailTender extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes that are mass assignable.
|
||||||
|
*/
|
||||||
|
protected $table = 'detail_penawaran';
|
||||||
|
|
||||||
|
protected $guarded = ['id'];
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('penawaran', function (Blueprint $table) {
|
||||||
|
$table->string('status')->nullable()->change();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('penawaran', function (Blueprint $table) {
|
||||||
|
$table->string('status')->change();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('detail_penawaran', function (Blueprint $table) {
|
||||||
|
$table->string('biaya_penawaran')->nullable()->change();
|
||||||
|
$table->string('attachment')->nullable()->change();
|
||||||
|
$table->string('dokumen_persetujuan')->nullable()->change();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('detail_penawaran', function (Blueprint $table) {
|
||||||
|
$table->string('biaya_penawaran')->change();
|
||||||
|
$table->string('attachment')->change();
|
||||||
|
$table->string('dokumen_persetujuan')->change();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -42,14 +42,6 @@
|
|||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": []
|
"roles": []
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Data Penawaran Ulang",
|
|
||||||
"path": "tender.penawaran_ulang",
|
|
||||||
"classes": "",
|
|
||||||
"attributes": [],
|
|
||||||
"permission": "",
|
|
||||||
"roles": []
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -28,11 +28,34 @@
|
|||||||
Nomor Registrasi
|
Nomor Registrasi
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input type="text" value="{{ $penawaran->nomor_registrasi ?? '-' }}" name="nomor_registrasi"
|
<input class="flex w-full text-gray-600 font-medium text-sm input-custom" type="text"
|
||||||
class="flex w-full text-gray-600 font-medium text-sm input-custom" readonly>
|
name="nomor_registrasi" readonly value="{{ $penawaran->nomor_registrasi ?? '-' }}">
|
||||||
@error('nomor_registrasi')
|
</div>
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
</div>
|
||||||
@enderror
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Nama KJPP Sebelumnya
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<input class="flex w-full text-gray-600 font-medium text-sm input-custom" type="text"
|
||||||
|
name="nama_kjpp_sebelumnya" readonly value="{{ $penawaran->nama_kjpp_sebelumnya ?? '' }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Biaya KJPP Sebelumnya
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<input class="flex w-full text-gray-600 font-medium text-sm input-custom" type="text"
|
||||||
|
name="biaya_kjpp_sebelumnya" readonly value="{{ $penawaran->biaya_kjpp_sebelumnya ?? '' }}">
|
||||||
|
</div>
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Tanggal Penilaian Sebelumnya
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<input class="flex w-full text-gray-600 font-medium text-sm input-custom" type="text"
|
||||||
|
name="tanggal_penilaian_sebelumnya" readonly
|
||||||
|
value="{{ $penawaran->tanggal_penilaian_sebelumnya ?? '' }}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
@@ -49,44 +72,22 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
Nama KJPP Sebelumnya
|
Data KJPP
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<select name="nama_kjpp_sebelumnya[]" multiple="multiple"
|
<select name="kjpp[]" multiple="multiple"
|
||||||
class="input tomselect w-full @error('nama_kjpp_sebelumnya') border-danger @enderror"
|
class="input tomselect w-full @error('kjpp') border-danger @enderror" id="kjpp_select">
|
||||||
id="nama_kjpp_sebelumnya_select">
|
<option value="">Pilih Nama KJPP</option>
|
||||||
<option value="">Pilih Nama KJPP Sebelumnya</option>
|
|
||||||
@foreach ($kjpp as $row)
|
@foreach ($kjpp as $row)
|
||||||
<option value="{{ $row->name }}"
|
@if (isset($kjpp))
|
||||||
{{ in_array($row->name, old('nama_kjpp_sebelumnya', [])) ? 'selected' : '' }}>
|
<option value="{{ $row->id }}"
|
||||||
{{ $row->name }}
|
{{ in_array($row->id, old('kjpp', [])) ? 'selected' : '' }}>
|
||||||
</option>
|
{{ $row->name }}
|
||||||
|
</option>
|
||||||
|
@endif
|
||||||
@endforeach
|
@endforeach
|
||||||
</select>
|
</select>
|
||||||
@error('nama_kjpp_sebelumnya')
|
@error('kjpp')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
||||||
@enderror
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
||||||
<label class="form-label max-w-56">
|
|
||||||
Biaya KJPP Sebelumnya
|
|
||||||
</label>
|
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
|
||||||
<input class="input @error('biaya_kjpp_sebelumnya') border-danger @enderror" type="text"
|
|
||||||
name="biaya_kjpp_sebelumnya" value="{{ old('biaya_kjpp_sebelumnya') }}">
|
|
||||||
@error('biaya_kjpp_sebelumnya')
|
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
||||||
@enderror
|
|
||||||
</div>
|
|
||||||
<label class="form-label max-w-56">
|
|
||||||
Tanggal Penilaian Sebelumnya
|
|
||||||
</label>
|
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
|
||||||
<input class="input @error('tanggal_penilaian_sebelumnya') border-danger @enderror"
|
|
||||||
type="date" name="tanggal_penilaian_sebelumnya"
|
|
||||||
value="{{ old('tanggal_penilaian_sebelumnya') }}">
|
|
||||||
@error('tanggal_penilaian_sebelumnya')
|
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
@@ -113,6 +114,39 @@
|
|||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Tanggal Batas Waktu
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<input class="input @error('start_date') border-danger @enderror" type="date"
|
||||||
|
name="start_date" value="{{ old('start_date') }}">
|
||||||
|
@error('start_date')
|
||||||
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
-
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<input class="input @error('end_date') border-danger @enderror" type="date" name="end_date"
|
||||||
|
value="{{ old('end_date') }}">
|
||||||
|
@error('end_date')
|
||||||
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Catatan
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<textarea class="textarea @error('catatan') border-danger @enderror" name="catatan" rows="3" id="address">{{ old('catatan') }}</textarea>
|
||||||
|
@error('catatan')
|
||||||
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
Jenis Laporan
|
Jenis Laporan
|
||||||
</label>
|
</label>
|
||||||
@@ -137,39 +171,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
Tanggal Awal
|
Status
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
|
||||||
<input class="input @error('start_date') border-danger @enderror" type="date"
|
|
||||||
name="start_date" value="{{ old('start_date') }}">
|
|
||||||
@error('start_date')
|
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
||||||
@enderror
|
|
||||||
</div>
|
|
||||||
<label class="form-label max-w-56">
|
|
||||||
Tanggal Akhir
|
|
||||||
</label>
|
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
|
||||||
<input class="input @error('end_date') border-danger @enderror" type="date" name="end_date"
|
|
||||||
value="{{ old('end_date') }}">
|
|
||||||
@error('end_date')
|
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
||||||
@enderror
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
||||||
<label class="form-label max-w-56">
|
|
||||||
Catatan
|
|
||||||
</label>
|
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
|
||||||
<textarea class="textarea @error('catatan') border-danger @enderror" name="catatan" rows="3" id="address">{{ old('catatan') }}</textarea>
|
|
||||||
@error('catatan')
|
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
||||||
@enderror
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
||||||
<label class="form-label max-w-56">Status</label>
|
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<select class="select w-full @error('status') border-danger @enderror" name="status">
|
<select class="select w-full @error('status') border-danger @enderror" name="status">
|
||||||
<option value="">Pilih Status</option>
|
<option value="">Pilih Status</option>
|
||||||
|
|||||||
@@ -115,14 +115,12 @@
|
|||||||
nama_kjpp_sebelumnya: {
|
nama_kjpp_sebelumnya: {
|
||||||
title: 'Nama KJPP Sebelumnya',
|
title: 'Nama KJPP Sebelumnya',
|
||||||
render: (item, data) => {
|
render: (item, data) => {
|
||||||
let nama = data.nama_kjpp_sebelumnya;
|
const nama = data.nama_kjpp_sebelumnya;
|
||||||
if (typeof nama === 'string') {
|
if (nama === null || nama === '') {
|
||||||
nama = JSON.parse(nama);
|
return 'Tidak Ada'
|
||||||
|
} else {
|
||||||
|
return nama;
|
||||||
}
|
}
|
||||||
if (nama.length === 0) {
|
|
||||||
return `<span class="badge badge-danger badge-xs">Tidak Ada</span>`;
|
|
||||||
}
|
|
||||||
return nama.map(n => `<span class="badge badge-primary badge-xs">${n}</span>`).join(' ');
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
tanggal_penilaian_sebelumnya: {
|
tanggal_penilaian_sebelumnya: {
|
||||||
|
|||||||
@@ -1,3 +1,35 @@
|
|||||||
|
@php
|
||||||
|
function formatTanggalIndonesia($date)
|
||||||
|
{
|
||||||
|
$carbonDate = \Carbon\Carbon::parse($date);
|
||||||
|
$indonesianMonths = [
|
||||||
|
'Januari',
|
||||||
|
'Februari',
|
||||||
|
'Maret',
|
||||||
|
'April',
|
||||||
|
'Mei',
|
||||||
|
'Juni',
|
||||||
|
'Juli',
|
||||||
|
'Agustus',
|
||||||
|
'September',
|
||||||
|
'Oktober',
|
||||||
|
'November',
|
||||||
|
'Desember',
|
||||||
|
];
|
||||||
|
$month = $indonesianMonths[$carbonDate->month - 1];
|
||||||
|
return $carbonDate->format('d') . ' ' . $month . ' ' . $carbonDate->format('Y');
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatRupiah($number)
|
||||||
|
{
|
||||||
|
// Convert to float if the input is a string
|
||||||
|
$number = (float) $number;
|
||||||
|
|
||||||
|
return 'Rp ' . number_format($number, 2, ',', '.');
|
||||||
|
}
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
|
||||||
@extends('layouts.main')
|
@extends('layouts.main')
|
||||||
|
|
||||||
@section('breadcrumbs')
|
@section('breadcrumbs')
|
||||||
@@ -25,7 +57,7 @@
|
|||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<p class="flex w-full text-gray-600 font-medium text-sm">
|
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||||
{{ $penawaran->nomor_registrasi }}
|
{{ $penawaran->nomor_registrasi ?? '' }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
@@ -33,7 +65,7 @@
|
|||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<p class="flex w-full text-gray-600 font-medium text-sm">
|
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||||
{{ $penawaran->code }}
|
{{ $penawaran->code ?? '' }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -42,19 +74,9 @@
|
|||||||
Nama KJPP Sebelumnya
|
Nama KJPP Sebelumnya
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
@if (isset($penawaran->nama_kjpp_sebelumnya) && !empty(json_decode($penawaran->nama_kjpp_sebelumnya, true)))
|
@if (isset($penawaran->nama_kjpp_sebelumnya) && !empty($penawaran->nama_kjpp_sebelumnya))
|
||||||
<div class="flex flex-row space-x-4 text-gray-600 font-medium text-sm gap-1">
|
<div class="flex flex-row space-x-4 text-gray-600 font-medium text-sm">
|
||||||
@foreach (json_decode($penawaran->nama_kjpp_sebelumnya, true) as $penawaran_code)
|
{{ $penawaran->nama_kjpp_sebelumnya }}
|
||||||
@php
|
|
||||||
$kjpp = $kjpps->firstWhere('name', $penawaran_code);
|
|
||||||
@endphp
|
|
||||||
@if ($kjpp)
|
|
||||||
<div
|
|
||||||
class="flex flex-row space-x-4 text-white font-medium text-sm badge badge-dark dark-mode:badge dark-mode:text-gray-600 badge-xs">
|
|
||||||
{{ $kjpp->name }}
|
|
||||||
</div>
|
|
||||||
@endif
|
|
||||||
@endforeach
|
|
||||||
</div>
|
</div>
|
||||||
@else
|
@else
|
||||||
<div class="flex flex-row space-x-4 text-gray-600 font-medium text-sm">
|
<div class="flex flex-row space-x-4 text-gray-600 font-medium text-sm">
|
||||||
@@ -66,15 +88,6 @@
|
|||||||
Biaya KJPP Sebelumnya
|
Biaya KJPP Sebelumnya
|
||||||
</label>
|
</label>
|
||||||
<p class="flex w-full text-gray-600 font-medium text-sm">
|
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||||
@php
|
|
||||||
function formatRupiah($number)
|
|
||||||
{
|
|
||||||
// Convert to float if the input is a string
|
|
||||||
$number = (float) $number;
|
|
||||||
|
|
||||||
return 'Rp ' . number_format($number, 2, ',', '.');
|
|
||||||
}
|
|
||||||
@endphp
|
|
||||||
@if (isset($penawaran->biaya_kjpp_sebelumnya))
|
@if (isset($penawaran->biaya_kjpp_sebelumnya))
|
||||||
{{ formatRupiah($penawaran->biaya_kjpp_sebelumnya) }}
|
{{ formatRupiah($penawaran->biaya_kjpp_sebelumnya) }}
|
||||||
@else
|
@else
|
||||||
@@ -82,7 +95,100 @@
|
|||||||
@endif
|
@endif
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Tanggal Penilaian Sebelumnya
|
||||||
|
</label>
|
||||||
|
@if (isset($penawaran->tanggal_penilaian_sebelumnya) && !empty($penawaran->tanggal_penilaian_sebelumnya))
|
||||||
|
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||||
|
{{ formatTanggalIndonesia($penawaran->tanggal_penilaian_sebelumnya) }}
|
||||||
|
</p>
|
||||||
|
@else
|
||||||
|
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||||
|
Tidak Ada
|
||||||
|
</p>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Tujuan Penilaian KJPP
|
||||||
|
</label>
|
||||||
|
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||||
|
@if (isset($tujuan_penilaian_kjpp))
|
||||||
|
@foreach ($tujuan_penilaian_kjpp as $tpk)
|
||||||
|
{{ $tpk->name }}
|
||||||
|
@endforeach
|
||||||
|
@else
|
||||||
|
Tidak Ada
|
||||||
|
@endif
|
||||||
|
</p>
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Jenis Laporan
|
||||||
|
</label>
|
||||||
|
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||||
|
@if (isset($jenis_laporan))
|
||||||
|
@foreach ($jenis_laporan as $jl)
|
||||||
|
{{ $jl->name }}
|
||||||
|
@endforeach
|
||||||
|
@else
|
||||||
|
Tidak Ada
|
||||||
|
@endif
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Tanggal Batas Waktu
|
||||||
|
</label>
|
||||||
|
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||||
|
{{ formatTanggalIndonesia($penawaran->start_date) }} -
|
||||||
|
{{ formatTanggalIndonesia($penawaran->end_date) }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Catatan
|
||||||
|
</label>
|
||||||
|
@if (isset($penawaran->catatan))
|
||||||
|
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||||
|
{{ $penawaran->catatan }}
|
||||||
|
</p>
|
||||||
|
@else
|
||||||
|
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||||
|
Tidak Ada
|
||||||
|
</p>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Nama KJPP
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-row space-x-4 text-gray-600 font-medium text-sm gap-1">
|
||||||
|
@if (isset($kjpps) && !empty(json_decode($kjpps, true)))
|
||||||
|
@foreach ($kjpps as $kjpp)
|
||||||
|
@if (isset($kjpp))
|
||||||
|
<div
|
||||||
|
class="flex flex-row space-x-4 text-white font-medium text-sm badge badge-dark dark-mode:badge dark-mode:text-gray-600 badge-xs">
|
||||||
|
{{ $kjpp->name }}</div>
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
@else
|
||||||
|
<div class="flex flex-row space-x-4 text-gray-600 font-medium text-sm">Tidak Ada</div>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Status
|
||||||
|
</label>
|
||||||
|
@if (isset($penawaran->status))
|
||||||
|
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||||
|
{{ $penawaran->status }}
|
||||||
|
</p>
|
||||||
|
@else
|
||||||
|
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||||
|
Tidak Ada
|
||||||
|
</p>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
@endsection
|
||||||
</div>
|
|
||||||
@endsection
|
|
||||||
|
|||||||
Reference in New Issue
Block a user