Merge remote-tracking branch 'composer/andydev' into staging

This commit is contained in:
Daeng Deni Mardaeni
2024-11-20 15:36:38 +07:00
17 changed files with 726 additions and 74 deletions

View File

@@ -5,6 +5,7 @@ namespace Modules\Lpj\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Http\Controllers\Controller;
use Carbon\Carbon;
use Exception;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Http\JsonResponse;
@@ -40,7 +41,18 @@ class OtorisasiPenawaranController extends Controller
// Retrieve data from the database
$query =PenawaranTender::query()
->select('penawaran.*',DB::raw("CONCAT(DATE_FORMAT(penawaran.start_date, '%d %M %Y'), ' - ', DATE_FORMAT(penawaran.end_date, '%d %M %Y')) AS date_range"), 'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name')
->select('penawaran.*',
'debitures.name as debitures_name',
'permohonan.tanggal_permohonan',
'users.name as user_pemohon',
'branches.name as branches_name',
'tujuan_penilaian.name as tujuan_penilaian_name',
'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name')
->leftJoin('permohonan', 'permohonan.nomor_registrasi', '=', 'penawaran.nomor_registrasi')
->leftJoin('debitures', 'debitures.id', '=', 'permohonan.debiture_id')
->leftJoin('users', 'users.id', '=', 'permohonan.user_id')
->leftJoin('branches', 'branches.id', '=', 'permohonan.branch_id')
->leftJoin('tujuan_penilaian', 'tujuan_penilaian.id','=','permohonan.tujuan_penilaian_id')
->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id','=','penawaran.tujuan_penilaian_kjpp_id')
->where('penawaran.status','=','proposal-tender')
->withCount('penawarandetails');
@@ -82,6 +94,27 @@ class OtorisasiPenawaranController extends Controller
//$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
$data = $query->get();
// format date
$i = 0;
foreach ($data as $obj) {
// tanggal_permohonan
if ($obj->tanggal_permohonan) {
$data[$i]->tanggal_permohonan = Carbon::parse($obj->tanggal_permohonan)->format('d M Y');
}
// date_range
$data[$i]->date_range = "-";
if ($obj->start_date && $obj->end_date)
{
$data[$i]->date_range = Carbon::parse($obj->start_date)->format('d M Y') . ' - ' .
Carbon::parse($obj->end_date)->format('d M Y');
}
$i++;
}
// format date
// Calculate the page count
$pageCount = ceil($totalRecords / $request->get('size'));

View File

@@ -13,12 +13,16 @@ use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\DB;
use Modules\Lpj\Http\Requests\ProsesPenawaranRequest;
use Modules\Lpj\Models\JenisLaporan;
use Modules\Lpj\Models\KJPP;
use Modules\Lpj\Models\PenawaranDetailTender;
use Modules\Lpj\Models\PenawaranDetailTenderLog;
use Modules\Lpj\Models\PenawaranTender;
use Modules\Lpj\Models\Permohonan;
use Modules\Lpj\Models\StatusPermohonan;
use Modules\Lpj\Models\TujuanPenilaianKJPP;
class ProsesPenawaranController extends Controller
{
@@ -40,7 +44,51 @@ class ProsesPenawaranController extends Controller
}
// Retrieve data from the database
$query = PenawaranTender::query()->whereIn('status', ['tender', 'proposal-tender'])->withCount('penawarandetails');
// $query = PenawaranTender::query()->whereIn('status', ['tender', 'proposal-tender'])->withCount('penawarandetails');
// penawaran need union with permohonan
$query = PenawaranTender::query()->whereIn('penawaran.status', ['tender', 'proposal-tender'])
->select('penawaran.id',
'penawaran.nomor_registrasi',
'penawaran.code as penawaran_code',
'penawaran.start_date',
'penawaran.end_date',
'penawaran.status as statusnya',
'debitures.name as debitures_name',
'permohonan.tanggal_permohonan',
'users.name as user_pemohon',
'branches.name as branches_name',
'tujuan_penilaian.name as tujuan_penilaian_name',
'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name'
)
->withCount('penawarandetails')
->leftJoin('permohonan', 'permohonan.nomor_registrasi', '=', 'penawaran.nomor_registrasi')
->leftJoin('users', 'users.id', '=', 'permohonan.user_id')
->leftJoin('branches', 'branches.id', '=', 'permohonan.branch_id')
->leftJoin('tujuan_penilaian', 'tujuan_penilaian.id','=','permohonan.tujuan_penilaian_id')
->leftJoin('debitures', 'debitures.id', '=', 'permohonan.debiture_id')
->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id', '=', 'penawaran.tujuan_penilaian_kjpp_id');
$permohonanQuery = Permohonan::whereIn('permohonan.status', ['registered'])->where('permohonan.jenis_penilaian_id', '=', 2)
->select('permohonan.id',
'permohonan.nomor_registrasi',
DB::raw('"" as penawaran_code'),
DB::raw('"" as start_date'),
DB::raw('"" as end_date'),
'permohonan.status as statusnya',
'debitures.name as debitures_name',
'permohonan.tanggal_permohonan',
'users.name as user_pemohon',
'branches.name as branches_name',
'tujuan_penilaian.name as tujuan_penilaian_name',
DB::raw('"" as tujuan_penilaian_kjpp_name'),
DB::raw('"-" as penawarandetails_count'))
->leftJoin('users', 'users.id', '=', 'permohonan.user_id')
->leftJoin('branches', 'branches.id', '=', 'permohonan.branch_id')
->leftJoin('debitures', 'debitures.id', '=', 'permohonan.debiture_id')
->leftJoin('tujuan_penilaian', 'tujuan_penilaian.id','=','permohonan.tujuan_penilaian_id');
$query->union($permohonanQuery);
// penawaran need union with permohonan
// Apply search filter if provided
if ($request->has('search') && !empty($request->get('search'))) {
@@ -76,8 +124,29 @@ class ProsesPenawaranController extends Controller
$filteredRecords = $query->count();
// Get the data for the current page
//$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
$data = $query->with(['tujuanPenilaianKjpp','permohonan','permohonan.debiture'])->get();
// $data = $query->with(['tujuanPenilaianKjpp','permohonan','permohonan.debiture'])->get();
$data = $query->get();
// format date
$i = 0;
foreach ($data as $obj) {
// tanggal_permohonan
if ($obj->tanggal_permohonan) {
$data[$i]->tanggal_permohonan = Carbon::parse($obj->tanggal_permohonan)->format('d M Y');
}
// date_range
$data[$i]->date_range = "-";
if ($obj->start_date && $obj->end_date)
{
$data[$i]->date_range = Carbon::parse($obj->start_date)->format('d M Y') . ' - ' .
Carbon::parse($obj->end_date)->format('d M Y');
}
$i++;
}
// format date
// Calculate the page count
$pageCount = ceil($totalRecords / $request->get('size'));
@@ -826,4 +895,77 @@ class ProsesPenawaranController extends Controller
return response()->json($data);
}
// merger permohonan
/**
* Show the form for creating a new resource.
*/
public function createPenawaran($id)
{
// id ==> permohonan.id
$permohonan = Permohonan::find($id);
// dd($permohonan);
$status = StatusPermohonan::all();
$tujuan_penilaian_kjpp = TujuanPenilaianKJPP::all();
$jenis_laporan = JenisLaporan::all();
$kjpp = KJPP::all();
return view('lpj::prosespenawaran.createPenawaran', compact('id', 'status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'permohonan'));
}
public function storePenawaran(ProsesPenawaranRequest $request, $id)
{
$validated = $request->validated();
DB::beginTransaction();
try {
$permohonan = Permohonan::find($id);
$userId = Auth::user()->id;
$validated['nomor_registrasi'] = $permohonan->nomor_registrasi;
$validated['status'] = 'tender';
$validated['updated_by'] = $userId; // Updating the record
$validated['end_date'] = $request->input('end_date') . ' 23:59:59';
$permohonan->update($validated);
// Adding created_by for the new penawaran record
$validated['created_by'] = $userId;
$validated['code'] = onLastnumberCodePenawaran();
$penawaran = PenawaranTender::create($validated);
$kjpps = $request->input('kjpp', []);
foreach ($kjpps as $kjpp) {
PenawaranDetailTender::create([
'penawaran_id' => $penawaran->id,
'kjpp_rekanan_id' => $kjpp,
'created_by' => $userId, // Set created_by for details
'updated_by' => $userId
]);
}
// Commit the transaction
DB::commit();
return redirect()
->route('tender.prosespenawaran.index')
->with('success', 'Data Penawaran created successfully');
} catch (Exception $e) {
DB::rollBack();
return redirect()
->route('tender.prosespenawaran.createPenawaran', $id)
->with('error', 'Validation failed: ' . $e);
}
}
public function showPermohonan($id)
{
$permohonan = Permohonan::find($id);
return view('lpj::prosespenawaran.showPermohonan', compact('id', 'permohonan'));
}
// merger permohonan
}

View File

@@ -0,0 +1,85 @@
<?php
namespace Modules\Lpj\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ProsesPenawaranRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
$rules = [
'kjpp.*' => 'exists:kjpp,id',
'tujuan_penilaian_kjpp_id' => 'required',
'jenis_laporan_id' => 'required',
'start_date' => 'required',
'end_date' => 'required',
'catatan' => 'nullable'
];
// if ($this->method() == 'PUT') {
// $rules['code'] = 'required|max:50';
// } else {
// $rules['code'] = 'required|max:50|unique:penawaran,code';
// }
return $rules;
}
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
public function messages(): array
{
return [
'code.required' => 'Kode Penawaran Wajib diisi!',
'code.max' => 'Kode Penawaran maksimal 255 huruf!',
'code.unique' => 'Kode Penawaran tidak boleh sama!',
'tujuan_penilaian_kjpp_id.required' => 'Tujuan Penilaian KJPP Wajib diisi!',
'jenis_laporan_id.required' => 'Jenis Laporan Wajib diisi!',
'start_date.required' => 'Tanggal Awal Wajib diisi!',
'end_date.required' => 'Tanggal Akhir Wajib diisi!',
];
}
public function withValidator($validator)
{
$validator->after(function ($validator) {
$startDate = strtotime($this->input('start_date'));
$endDate = strtotime($this->input('end_date'));
$today = strtotime(date('Y-m-d'));
// Jika dalam keadaan tambah penawaran maka munculkan pesan ini
// if ($this->method() !== 'PUT') {
// if ($startDate < $today) {
// $validator->errors()->add('start_date', 'Tanggal Awal tidak boleh sebelum hari ini.');
// }
// }
if ($endDate < $startDate) {
$validator->errors()->add('end_date', 'Tanggal Akhir tidak boleh lebih awal dari Tanggal Awal.');
}
// Validasi minimal 3 pilihan pada nama_kjpp
$namaKjpp = $this->input('kjpp', []);
// jika nama KJPP itu kosong
if (empty($namaKjpp)) {
$validator->errors()->add('kjpp', 'Nama KJPP wajib diisi.');
}
// jika terisi kurang dari 3 item
elseif (is_array($namaKjpp) && count($namaKjpp) < 3) {
$validator->errors()->add('kjpp', 'Nama KJPP minimal 3 pilihan.');
}
});
}
}