diff --git a/app/Http/Controllers/OtorisasiPenawaranController.php b/app/Http/Controllers/OtorisasiPenawaranController.php index 44df3f5..ca25549 100644 --- a/app/Http/Controllers/OtorisasiPenawaranController.php +++ b/app/Http/Controllers/OtorisasiPenawaranController.php @@ -1,425 +1,430 @@ user) || !$this->user->can('debitur.view')) { - //abort(403, 'Sorry! You are not allowed to view users.'); + public $user; + + /** + * Display a listing of the resource. + */ + public function index() + { + // dd('hai otorisasi'); + return view('lpj::otorisasipenawaran.index'); } - // Retrieve data from the database - $query =PenawaranTender::query() - ->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'); - - // Apply search filter if provided - if ($request->has('search') && !empty($request->get('search'))) { - $search = $request->get('search'); - $query->where(function ($q) use ($search) { - $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); - $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); - - $q->orWhere('status', 'LIKE', '%' . $search . '%'); - }); - } - - // Apply sorting if provided - if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { - $order = $request->get('sortOrder'); - $column = $request->get('sortField'); - $query->orderBy($column, $order); - } - - // Get the total count of records - $totalRecords = $query->count(); - - // Apply pagination if provided - if ($request->has('page') && $request->has('size')) { - $page = $request->get('page'); - $size = $request->get('size'); - $offset = ($page - 1) * $size; // Calculate the offset - - $query->skip($offset)->take($size); - } - - // Get the filtered count of records - $filteredRecords = $query->count(); - - // Get the data for the current page - //$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'); + public function dataForDatatables(Request $request) + { + if (is_null($this->user) || !$this->user->can('debitur.view')) { + //abort(403, 'Sorry! You are not allowed to view users.'); } - // 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'); + // Retrieve data from the database + $query = PenawaranTender::query()->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'); + + // Apply search filter if provided + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); + $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); + + $q->orWhere('status', 'LIKE', '%' . $search . '%'); + }); } - $i++; - } - // format date + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } - // Calculate the page count - $pageCount = ceil($totalRecords / $request->get('size')); + // Get the total count of records + $totalRecords = $query->count(); - // Calculate the current page number - $currentPage = 0 + 1; + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $size = $request->get('size'); + $offset = ($page - 1) * $size; // Calculate the offset - // Return the response data as a JSON object - return response()->json([ - 'draw' => $request->get('draw'), - 'recordsTotal' => $totalRecords, - 'recordsFiltered' => $filteredRecords, - 'pageCount' => $pageCount, - 'page' => $currentPage, - 'totalCount' => $totalRecords, - 'data' => $data - ]); - } + $query->skip($offset)->take($size); + } - public function edit($id) - { - // id ==> penawaran.id - return view('lpj::otorisasipenawaran.edit', compact('id')); - } + // Get the filtered count of records + $filteredRecords = $query->count(); - public function setData(Request $request): JsonResponse - { - $data = array(); - $penawaran = array(); - $penawrandetails = array(); - $penawarandetailLogs = array(); - - if (request()->ajax()) { - $id = $request->id; - $penawaran = PenawaranTender::where('status','=','proposal-tender')->find($id); - - if ($penawaran) { - $penawarandetailLogs = PenawaranDetailTenderLog::where('penawaran_id',$id) - ->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran_logs.kjpp_rekanan_id') - ->select('detail_penawaran_logs.*', DB::raw("DATE_FORMAT(detail_penawaran_logs.created_at, '%d-%m-%Y %H:%i') AS created_at2"),'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name') - ->get(); - $penawrandetails = PenawaranDetailTender::where('penawaran_id','=',$id) - ->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran.kjpp_rekanan_id') - ->select('detail_penawaran.*', 'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name') - ->where('detail_penawaran.status','=',1) - ->get(); - - if(sizeof($penawarandetailLogs)>0) - { - $h=0; - foreach($penawarandetailLogs as $obj1) - { - // tgl_proposal - if ($obj1->tgl_proposal) { - $penawarandetailLogs[$h]->tgl_proposal = Carbon::parse($obj1->tgl_proposal)->format('d M Y'); - } - - if($obj1->dokumen_persetujuan && Storage::disk('public')->exists($obj1->dokumen_persetujuan)) - { - $penawarandetailLogs_path = Storage::url($obj1->dokumen_persetujuan); - $penawarandetailLogs[$h]->dokumen_persetujuan = $penawarandetailLogs_path; - } - $h++; - } + // Get the data for the current page + //$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'); } - $i=0; - foreach($penawrandetails as $obj) - { - // tgl_proposal - if ($obj->tgl_proposal) { - $penawrandetails[$i]->tgl_proposal = Carbon::parse($obj->tgl_proposal)->format('d M Y'); - } - - if($obj->dokumen_persetujuan && Storage::disk('public')->exists($obj->dokumen_persetujuan)) - { - $penawrandetails_path = Storage::url($obj->dokumen_persetujuan); - $penawrandetails[$i]->dokumen_persetujuan = $penawrandetails_path; - - } - $i++; + // 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'); } - $penawaranString = ""; - if($penawaran->status) - { - $penawaranString = convertSlug($penawaran->status); - $penawaran->status = $penawaranString; - } - - $kjpp=null; - $kjpp = KJPP::pluck('name', 'id'); - $data['penawaran'] = $penawaran; - $data['penawrandetails'] = $penawrandetails; - $data['penawarandetailLogs'] = $penawarandetailLogs; - $data['status'] = 'success'; - $data['message']['message_success'] = array("data successfully found"); - } else { - $data['status'] = 'error'; - $data['penawaran'] = null; - $data['penawrandetails'] = null; - $data['message']['message_data'] = array("data not found"); + $i++; } - } else { - $data['status'] = 'error'; - $data['message']['message_ajax'] = array("no ajax request"); + // format date + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = 0 + 1; + + // Return the response data as a JSON object + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); } + + public function edit($id) + { + // id ==> penawaran.id + return view('lpj::otorisasipenawaran.edit', compact('id')); + } + + public function setData(Request $request): JsonResponse + { + $data = []; + $penawaran = []; + $penawrandetails = []; + $penawarandetailLogs = []; - return response()->json($data); - } + if (request()->ajax()) { + $id = $request->id; + $penawaran = PenawaranTender::where('status','=','proposal-tender')->find($id); - public function otorisasiPenawaranKJPP(Request $request, $id): JsonResponse - { - $data = array(); - $dataDetailPenawaranLog=[]; - if (request()->ajax()) { + if ($penawaran) { + $penawarandetailLogs = PenawaranDetailTenderLog::where('penawaran_id',$id) + ->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran_logs.kjpp_rekanan_id') + ->select('detail_penawaran_logs.*', DB::raw("DATE_FORMAT(detail_penawaran_logs.created_at, '%d-%m-%Y %H:%i') AS created_at2"),'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name') + ->get(); + $penawrandetails = PenawaranDetailTender::where('penawaran_id','=',$id) + ->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran.kjpp_rekanan_id') + ->select('detail_penawaran.*', 'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name') + ->where('detail_penawaran.status','=',1) + ->get(); - // cek masa aktif penawaran - $detailpenawaran = PenawaranDetailTender::find($id); - $penawaran = PenawaranTender::findOrFail($detailpenawaran->penawaran_id); - $checkActiveDateRange = checkActiveDateRangePenawaran($detailpenawaran->penawaran_id); - // cek masa aktif penawaran - if($checkActiveDateRange) - { - DB::beginTransaction(); - try { + if(sizeof($penawarandetailLogs)>0) + { + $h=0; + foreach($penawarandetailLogs as $obj1) + { + // tgl_proposal + if ($obj1->tgl_proposal) { + $penawarandetailLogs[$h]->tgl_proposal = Carbon::parse($obj1->tgl_proposal)->format('d M Y'); + } - // update status KJPP yg tidak terpilih menjadi 2 -> kalah - // update status Penawaran menjadi SPK - // update status Permohonan menjadi SPK - // insert detail_permohonan_log + if($obj1->dokumen_persetujuan && Storage::disk('public')->exists($obj1->dokumen_persetujuan)) + { + $penawarandetailLogs_path = Storage::url($obj1->dokumen_persetujuan); + $penawarandetailLogs[$h]->dokumen_persetujuan = $penawarandetailLogs_path; + } + $h++; + } - PenawaranDetailTender::where('status', 1) - ->where('penawaran_id', $request->penawaran_id) - ->whereNotIn('id', [$id]) - ->update(['status' => 2, - 'updated_by' => Auth::id(), - 'updated_at' => now() - ]); + } - PenawaranTender::where('id', $request->penawaran_id) - ->update(['status'=>'spk', - 'nama_kjpp_sebelumnya'=>$request->kjppName, - 'biaya_kjpp_sebelumnya'=>$request->biaya_penawaran, - 'tanggal_penilaian_sebelumnya'=>now(), - 'authorized_status'=>1, - 'authorized_at'=>now(), - 'authorized_by'=>Auth::id(), - 'updated_by' => Auth::id(), - 'updated_at' => now() - ]); + $i=0; + foreach($penawrandetails as $obj) + { + // tgl_proposal + if ($obj->tgl_proposal) { + $penawrandetails[$i]->tgl_proposal = Carbon::parse($obj->tgl_proposal)->format('d M Y'); + } - Permohonan::where('nomor_registrasi',$request->noReg) - ->update(['status'=>'spk', - 'updated_by' => Auth::id(), - 'updated_at' => now() - ]); + if($obj->dokumen_persetujuan && Storage::disk('public')->exists($obj->dokumen_persetujuan)) + { + $penawrandetails_path = Storage::url($obj->dokumen_persetujuan); + $penawrandetails[$i]->dokumen_persetujuan = $penawrandetails_path; - // log - $detailPenawaran = PenawaranDetailTender::where('penawaran_id', $request->penawaran_id)->get(); - if(sizeof($detailPenawaran)>0) - { + } + $i++; + } - foreach ($detailPenawaran as $model) { - array_push($dataDetailPenawaranLog, [ - 'detail_penawaran_id' =>$model->id, - 'kjpp_rekanan_id' =>$model->kjpp_rekanan_id, - 'penawaran_id' =>$model->penawaran_id, - 'no_proposal' =>$model->no_proposal, - 'tgl_proposal' =>$model->tgl_proposal, - 'biaya_penawaran' =>$model->biaya_penawaran, - 'attachment' =>$model->attachment, - 'dokumen_persetujuan' =>$model->dokumen_persetujuan, - 'status' =>$model->status, - 'authorized_status' =>$model->authorized_status, - 'authorized_at' =>$model->authorized_at, - 'authorized_at' =>$model->authorized_at, - 'created_at' =>$model->created_at, - 'updated_at' =>$model->updated_at, - 'deleted_at' =>$model->deleted_at, - 'created_by' =>$model->created_by, - 'updated_by' =>$model->updated_by, - 'deleted_by' =>$model->deleted_by - ]); + $penawaranString = ""; + if($penawaran->status) + { + $penawaranString = convertSlug($penawaran->status); + $penawaran->status = $penawaranString; + } - } + $kjpp=null; + $kjpp = KJPP::pluck('name', 'id'); + $data['penawaran'] = $penawaran; + $data['penawrandetails'] = $penawrandetails; + $data['penawarandetailLogs'] = $penawarandetailLogs; + $data['status'] = 'success'; + $data['message']['message_success'] = array("data successfully found"); + } else { + $data['status'] = 'error'; + $data['penawaran'] = null; + $data['penawrandetails'] = null; + $data['message']['message_data'] = array("data not found"); + } + } else { + $data['status'] = 'error'; + $data['message']['message_ajax'] = array("no ajax request"); + } - PenawaranDetailTenderLog::insert($dataDetailPenawaranLog); - } - // log + return response()->json($data); + } + + public function otorisasiPenawaranKJPP(Request $request, $id): JsonResponse + { + $data = []; + $dataDetailPenawaranLog = []; + if (request()->ajax()) { - DB::commit(); - $data['status'] = 'success'; - $data['message']['message_success'] = array('Otorisasi Penawaran KJPP '.$request->kjppName.' successfully'); - } catch (Exception $e) { - DB::rollBack(); - $data['status'] = 'error'; - $data['message']['message_error'] = array("Otorisasi Penawaran KJPP failed.."); - } - } - else - { - $data['status'] = 'error'; - $data['message']['message_error'] = array("Penawaran sudah di tutup"); - } + // cek masa aktif penawaran + $detailpenawaran = PenawaranDetailTender::find($id); + $penawaran = PenawaranTender::findOrFail($detailpenawaran->penawaran_id); + $checkActiveDateRange = checkActiveDateRangePenawaran($detailpenawaran->penawaran_id); + // cek masa aktif penawaran + if($checkActiveDateRange) + { + DB::beginTransaction(); + try { - } else { - $data['status'] = 'error'; - $data['message']['message_error'] = array("no ajax request"); - } - return response()->json($data); - } + // update status KJPP yg tidak terpilih menjadi 2 -> kalah + // update status Penawaran menjadi SPK + // update status Permohonan menjadi SPK + // insert detail_permohonan_log - public function show($id) - { - $prosespenawaran = PenawaranTender::find($id); - return view('lpj::otorisasipenawaran.show', compact('id','prosespenawaran')); - } + PenawaranDetailTender::where('status', 1) + ->where('penawaran_id', $request->penawaran_id) + ->whereNotIn('id', [$id]) + ->update(['status' => 2, + 'updated_by' => Auth::id(), + 'updated_at' => now() + ]); - public function penawaranulang(Request $request, $id): JsonResponse - { - // $id ==> penawaran.id - $data = array(); - $dataDetailPenawaranLog=[]; - if (request()->ajax()) { + PenawaranTender::where('id', $request->penawaran_id) + ->update(['status'=>'spk', + 'nama_kjpp_sebelumnya'=>$request->kjppName, + 'biaya_kjpp_sebelumnya'=>$request->biaya_penawaran, + 'tanggal_penilaian_sebelumnya'=>now(), + 'authorized_status'=>1, + 'authorized_at'=>now(), + 'authorized_by'=>Auth::id(), + 'updated_by' => Auth::id(), + 'updated_at' => now() + ]); - - DB::beginTransaction(); - try { + Permohonan::where('nomor_registrasi',$request->noReg) + ->update(['status'=>'persetujuan-penawaran', + 'updated_by' => Auth::id(), + 'updated_at' => now() + ]); - // update detail_penawaran => detail_penawaran.status = 1 (untuk all KJPP) - // update penawaran => penawaran.status ="tender", penawaran.updated_at, penawaran.updated_by - // update permohonan => permohonan.status ="tender", permohonan.updated_at, permohonan.updated_by - // insert detail_permohonan_log - - PenawaranDetailTender::where('penawaran_id', $id) - ->update(['status' => 1, - 'updated_by' => Auth::id(), - 'updated_at' => now() - ]); - - PenawaranTender::where('id', $id) - ->update(['status'=>'tender', - 'updated_by' => Auth::id(), - 'updated_at' => now() - ]); - - Permohonan::where('nomor_registrasi',$request->noReg) - ->update(['status'=>'tender', - 'updated_by' => Auth::id(), - 'updated_at' => now() - ]); - - $detailPenawaran = PenawaranDetailTender::where('penawaran_id', $id) - ->distinct() - ->get(); + // log + $detailPenawaran = PenawaranDetailTender::where('penawaran_id', $request->penawaran_id)->get(); + if(sizeof($detailPenawaran)>0) + { - // log - if(sizeof($detailPenawaran)>0) - { + foreach ($detailPenawaran as $model) { + array_push($dataDetailPenawaranLog, [ + 'detail_penawaran_id' =>$model->id, + 'kjpp_rekanan_id' =>$model->kjpp_rekanan_id, + 'penawaran_id' =>$model->penawaran_id, + 'no_proposal' =>$model->no_proposal, + 'tgl_proposal' =>$model->tgl_proposal, + 'biaya_penawaran' =>$model->biaya_penawaran, + 'attachment' =>$model->attachment, + 'dokumen_persetujuan' =>$model->dokumen_persetujuan, + 'status' =>$model->status, + 'authorized_status' =>$model->authorized_status, + 'authorized_at' =>$model->authorized_at, + 'authorized_at' =>$model->authorized_at, + 'created_at' =>$model->created_at, + 'updated_at' =>$model->updated_at, + 'deleted_at' =>$model->deleted_at, + 'created_by' =>$model->created_by, + 'updated_by' =>$model->updated_by, + 'deleted_by' =>$model->deleted_by + ]); - foreach ($detailPenawaran as $model) { - array_push($dataDetailPenawaranLog, [ - 'detail_penawaran_id' =>$model->id, - 'kjpp_rekanan_id' =>$model->kjpp_rekanan_id, - 'penawaran_id' =>$model->penawaran_id, - 'no_proposal' =>$model->no_proposal, - 'tgl_proposal' =>$model->tgl_proposal, - 'biaya_penawaran' =>$model->biaya_penawaran, - 'attachment' =>$model->attachment, - 'dokumen_persetujuan' =>$model->dokumen_persetujuan, - 'status' =>$model->status, - 'authorized_status' =>$model->authorized_status, - 'authorized_at' =>$model->authorized_at, - 'authorized_at' =>$model->authorized_at, - 'created_at' =>$model->created_at, - 'updated_at' =>$model->updated_at, - 'deleted_at' =>$model->deleted_at, - 'created_by' =>$model->created_by, - 'updated_by' =>$model->updated_by, - 'deleted_by' =>$model->deleted_by - ]); + } - } + PenawaranDetailTenderLog::insert($dataDetailPenawaranLog); + } + // log - PenawaranDetailTenderLog::insert($dataDetailPenawaranLog); - } - // log + DB::commit(); + $data['status'] = 'success'; + $data['message']['message_success'] = array('Otorisasi Penawaran KJPP '.$request->kjppName.' successfully'); + } catch (Exception $e) { + DB::rollBack(); + $data['status'] = 'error'; + $data['message']['message_error'] = array("Otorisasi Penawaran KJPP failed.."); + } + } + else + { + $data['status'] = 'error'; + $data['message']['message_error'] = array("Penawaran sudah di tutup"); + } - DB::commit(); - $data['detailPenawaran'] = $detailPenawaran; - $data['status'] = 'success'; - $data['message']['message_success'] = array('Penawaran ulang successfully'); - } catch (Exception $e) { - DB::rollBack(); - $data['status'] = 'error'; - $data['message']['message_error'] = array("Penawaran ulang failed."); - } - + } else { + $data['status'] = 'error'; + $data['message']['message_error'] = array("no ajax request"); + } + return response()->json($data); + } + + public function show($id) + { + $prosespenawaran = PenawaranTender::find($id); + return view('lpj::otorisasipenawaran.show', compact('id','prosespenawaran')); + } + + public function penawaranulang(Request $request, $id): JsonResponse + { + // $id ==> penawaran.id + $data = []; + $dataDetailPenawaranLog=[]; + if (request()->ajax()) { - } else { - $data['status'] = 'error'; - $data['message']['message_error'] = array("no ajax request"); - } + + DB::beginTransaction(); + try { - return response()->json($data); - } -} + // update detail_penawaran => detail_penawaran.status = 1 (untuk all KJPP) + // update penawaran => penawaran.status ="tender", penawaran.updated_at, penawaran.updated_by + // update permohonan => permohonan.status ="tender", permohonan.updated_at, permohonan.updated_by + // insert detail_permohonan_log + + PenawaranDetailTender::where('penawaran_id', $id) + ->update(['status' => 1, + 'updated_by' => Auth::id(), + 'updated_at' => now() + ]); + + PenawaranTender::where('id', $id) + ->update(['status'=>'tender', + 'updated_by' => Auth::id(), + 'updated_at' => now() + ]); + + Permohonan::where('nomor_registrasi',$request->noReg) + ->update(['status'=>'tender', + 'updated_by' => Auth::id(), + 'updated_at' => now() + ]); + + $detailPenawaran = PenawaranDetailTender::where('penawaran_id', $id) + ->distinct() + ->get(); + + // log + if(sizeof($detailPenawaran)>0) + { + + foreach ($detailPenawaran as $model) { + array_push($dataDetailPenawaranLog, [ + 'detail_penawaran_id' =>$model->id, + 'kjpp_rekanan_id' =>$model->kjpp_rekanan_id, + 'penawaran_id' =>$model->penawaran_id, + 'no_proposal' =>$model->no_proposal, + 'tgl_proposal' =>$model->tgl_proposal, + 'biaya_penawaran' =>$model->biaya_penawaran, + 'attachment' =>$model->attachment, + 'dokumen_persetujuan' =>$model->dokumen_persetujuan, + 'status' =>$model->status, + 'authorized_status' =>$model->authorized_status, + 'authorized_at' =>$model->authorized_at, + 'authorized_at' =>$model->authorized_at, + 'created_at' =>$model->created_at, + 'updated_at' =>$model->updated_at, + 'deleted_at' =>$model->deleted_at, + 'created_by' =>$model->created_by, + 'updated_by' =>$model->updated_by, + 'deleted_by' =>$model->deleted_by + ]); + + } + + PenawaranDetailTenderLog::insert($dataDetailPenawaranLog); + } + // log + + DB::commit(); + $data['detailPenawaran'] = $detailPenawaran; + $data['status'] = 'success'; + $data['message']['message_success'] = array('Penawaran ulang successfully'); + } catch (Exception $e) { + DB::rollBack(); + $data['status'] = 'error'; + $data['message']['message_error'] = array("Penawaran ulang failed.."); + } + + + } else { + $data['status'] = 'error'; + $data['message']['message_error'] = array("no ajax request"); + } + return response()->json($data); + } + } \ No newline at end of file diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index 6b2a0c0..ab47dd1 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -39,8 +39,9 @@ class PenilaiController extends Controller */ public function show($id) { - $permohonan = Permohonan::with('debiture.documents.jenisjaminan')->find($id); + $permohonan = Permohonan::with(['debiture.documents.jenisjaminan', 'region.teams.teamsUsers.user', 'penilaian'])->find($id); + // return response()->json(['permohonan' => $permohonan]); return view('lpj::penilai.show', compact('permohonan')); } diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index c5d5252..8daef81 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -98,7 +98,7 @@ class PenilaianController extends Controller if (isset($validatedData['penilai_surveyor_id'])) { $user_ids[] = $validatedData['penilai_surveyor_id']; - }else { + } else { $user_ids[] = $validatedData['penilai_id']; } @@ -126,11 +126,11 @@ class PenilaianController extends Controller ]); DB::commit(); - - return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil disimpan'); + return response()->json(['success' => true, 'message' => 'Data berhasil disimpan'], 200); } catch (Exception $e) { DB::rollBack(); - return redirect()->route('penilaian.index')->with('error', $e->getMessage()); + + return response()->json(['error' => $e->getMessage()]); } } } @@ -179,10 +179,10 @@ class PenilaianController extends Controller 'status' => 'assign', ]); DB::commit(); - return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil disimpan'); + return response()->json(['success' => true, 'message' => 'Data berhasil disimpan'], 200); } catch (Exception $e) { DB::rollBack(); - return redirect()->route('penilaian.index')->with('error', $e->getMessage()); + return response()->json([ 'success' => false, 'error' => $e->getMessage()]); } } diff --git a/app/Http/Controllers/PersetujuanPenawaranController.php b/app/Http/Controllers/PersetujuanPenawaranController.php new file mode 100644 index 0000000..73f7429 --- /dev/null +++ b/app/Http/Controllers/PersetujuanPenawaranController.php @@ -0,0 +1,147 @@ +validated(); + $validated['created_by'] = Auth::id(); + + PersetujuanPenawaran::create($validated); + + return redirect() + ->route('persetujuan-penawaran.index')->with('success', 'Persetujuan Penawaran created successfully.'); + } + + /** + * Show the form for creating a new resource. + */ + public function create() + { + return view('lpj::persetujuan_penawaran.create'); + } + + /** + * Display the specified resource. + */ + public function show(PersetujuanPenawaran $persetujuanPenawaran) + { + return view('lpj::persetujuan_penawaran.show', compact('persetujuanPenawaran')); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(PersetujuanPenawaran $persetujuanPenawaran) + { + return view('lpj::persetujuan_penawaran.edit', compact('persetujuanPenawaran')); + } + + /** + * Update the specified resource in storage. + */ + public function update(PersetujuanPenawaranRequest $request, PersetujuanPenawaran $persetujuanPenawaran) + { + $validated = $request->validated(); + $validated['updated_by'] = Auth::id(); + + $persetujuanPenawaran->update($validated); + + return redirect() + ->route('persetujuan-penawaran.index')->with('success', 'Persetujuan Penawaran updated successfully'); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(PersetujuanPenawaran $persetujuanPenawaran) + { + $persetujuanPenawaran->delete(); + + return redirect() + ->route('persetujuan-penawaran.index')->with('success', 'Persetujuan Penawaran deleted successfully'); + } + + public function dataForDatatables(Request $request) + { + if (is_null($this->user) || !$this->user->can('persetujuan_penawaran.view')) { + //abort(403, 'Sorry! You are not allowed to view persetujuan penawaran.'); + } + + // Retrieve data from the database + $query = Permohonan::query()->where(['status' => 'persetujuan-penawaran']); + + // Apply search filter if provided + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q + ->where('nomor_registrasi', 'LIKE', "%$search%"); + }); + } + + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Get the total count of records + $totalRecords = $query->count(); + + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $size = $request->get('size'); + $offset = ($page - 1) * $size; // Calculate the offset + + $query->skip($offset)->take($size); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + $data = $query->with(['debiture','penawaranTender.detail'])->get(); + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = $request->get('page', 1); + + // Return the response data as a JSON object + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); + } + } diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index 3c86379..681dbe1 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -40,6 +40,10 @@ use Modules\Lpj\Models\Lantai; use Modules\Lpj\Models\Inspeksi; use Modules\Lpj\Models\ViewUnit; use Modules\Lpj\Models\ObjekJaminan; +use Modules\Lpj\Models\ModelAlatBerat; +use Modules\Lpj\Models\JenisPesawat; +use Modules\Lpj\Models\JenisKapal; +use Modules\Lpj\Models\JenisKendaraan; use Modules\Lpj\Models\RuteJaminan; use Modules\Lpj\Models\AnalisaUnit; use Modules\Lpj\Models\GolonganMasySekitar; @@ -48,6 +52,8 @@ use Modules\Lpj\Models\LaluLintasLokasi; use Modules\Lpj\Models\SpekBagunanAnalisaDetail; use Modules\Lpj\Http\Requests\SurveyorRequest; use Modules\Lpj\Http\Requests\FormSurveyorRequest; +use Modules\Lpj\Emails\SendEmail; +use Illuminate\Support\Facades\Mail; class SurveyorController extends Controller { @@ -93,6 +99,10 @@ class SurveyorController extends Controller $spekBangunan = SpekBangunan::all(); $saranaPelengkap = SaranaPelengkap::all(); $arahMataAngin = ArahMataAngin::all(); + $jenisKendaraan = JenisKendaraan::all(); + $jenisKapal = JenisKapal::all(); + $jenisPesawat = JenisPesawat::all(); + $modelAlatBerat = ModelAlatBerat::all(); @@ -146,7 +156,11 @@ class SurveyorController extends Controller 'forminspeksi', 'formDenah', 'formFoto', - 'jaminanId' + 'jaminanId', + 'jenisKendaraan', + 'jenisKapal', + 'jenisPesawat', + 'modelAlatBerat' )); } /** @@ -167,7 +181,7 @@ class SurveyorController extends Controller $rules = $this->getActionSpecificRules($data, $action, $request); $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))->first(); - if ($request->input('permohonan_id') == $inspeksi->permohonan_id && $request->input('jenis_jaminan_id') == $inspeksi->jenis_jaminan_id) { + if ($inspeksi) { $inspeksi->update(['data_form' => json_encode($rules)]); } else { Inspeksi::create([ @@ -210,7 +224,7 @@ class SurveyorController extends Controller foreach ($pisah as $act) { if (isset($allRules[$act])) { $rules = array_merge($rules, $allRules[$act]); - if ($act == 'tanah' || $act == 'bangunan') { + if ($act == 'tanah' || $act == 'bangunan' || $act == 'apartemen-kantor') { $hasAssetDescriptionRules = true; } } @@ -226,7 +240,6 @@ class SurveyorController extends Controller public function storeDenah(Request $request) { - try { $validatedData = $request->validate([ 'foto_denah' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048', @@ -237,31 +250,33 @@ class SurveyorController extends Controller $validatedData['foto_denah'] = $this->uploadFile($request->file('foto_denah'), 'foto_denah'); - $formatJsonDenah = [ 'foto_denah' => $validatedData['foto_denah'], 'luas' => $validatedData['luas'], ]; - $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))->first(); - if ($request->input('permohonan_id') == $inspeksi->permohonan_id && $request->input('jenis_jaminan_id') == $inspeksi->jenis_jaminan_id) { + $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id')) + ->where('jenis_jaminan_id', $request->input('jenis_jaminan_id')) + ->first(); + + if ($inspeksi) { $inspeksi->update([ 'denah_form' => json_encode($formatJsonDenah) ]); } else { Inspeksi::create([ 'permohonan_id' => $request->input('permohonan_id'), - 'denah_form' => json_encode($formatFotojson) + 'jenis_jaminan_id' => $request->input('jenis_jaminan_id'), + 'denah_form' => json_encode($formatJsonDenah) ]); } return response()->json(['success' => true, 'message' => 'Data berhasil disimpan', - 'data' => $formatJsonDenah], 200); + 'data' => $formatJsonDenah], 200); } catch (Exception $e) { return response()->json(['success' => false, 'message' => 'Data gagal disimpan: ' . $e->getMessage()], 500); } - } @@ -368,20 +383,22 @@ class SurveyorController extends Controller ,'foto_lantai_unit' => $foto_lantai_unit, 'foto_lantai_lainnya' => $foto_lantai_lainnya, 'foto_rute_lainnya' => $foto_rute_lainnya, - 'basement' => $basement, - 'gerbang' => $gerbang, + 'foto_basement' => $basement, + 'foto_gerbang' => $gerbang, 'pendamping' => $pendamping ]; $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))->first(); - if ($request->input('permohonan_id') == $inspeksi->permohonan_id && $request->input('jenis_jaminan_id') == $inspeksi->jenis_jaminan_id) { + + if ($inspeksi) { $inspeksi->update([ 'foto_form' => json_encode($formatFotojson) ]); } else { Inspeksi::create([ 'permohonan_id' => $request->input('permohonan_id'), - 'foto_form' => json_encode($formatFotojson) + 'foto_form' => json_encode($formatFotojson), + 'jenis_jaminan_id' => $request->input('jenis_jaminan_id') ]); } @@ -391,19 +408,21 @@ class SurveyorController extends Controller } } - public function submitSurveyor($id,$jaminanId) + + + public function submitSurveyor($id) { try { - $cekButton = $this->checkButtonStatus($id)->getData(); - if (!$cekButton->buttonDisable) { + // $cekButton = $this->checkButtonStatus($id); + // if (!$cekButton->buttonDisable) { $permohonan = Permohonan::find($id); $permohonan->update([ 'status' => 'done', ]); return response()->json(['success' => true, 'message' => 'Form surveyor submitted successfully'], 200); - } else { - return response()->json(['error' => 'Something went wrong'], 400); - } + // } else { + // return response()->json(['error' => 'Something went wrong'], 400); + // } } catch (Exception $e) { return response()->json(['error' => 'Something went wrong', 'message' => $e->getMessage()], 500); } @@ -436,7 +455,11 @@ class SurveyorController extends Controller return response()->json(['buttonDisable' => true]); } } catch (\Exception $e) { - return response()->json(['buttonDisable' => true]); + // return response()->json(['buttonDisable' => true]); + return response()->json([ + 'error' => 'Something went wrong', + 'message' => $e->getMessage() + ], 500); } } @@ -445,35 +468,40 @@ class SurveyorController extends Controller public function storeJadwal(Request $request) { try { - $validate = $request->validate([ 'id' => 'required', 'waktu_penilaian' => 'required', 'deskripsi_penilaian' => 'required' ]); - // return response()->json([ - // 'daa'=>$validate - // ]); + // $user = ['user' => 'rustammajid76@gmail.com']; + + // $emailData = [ + // 'email' => 'rustammajid76@gmail.com', + // 'subject' => 'Test', + // 'emailData' => '

Hello, World!

This is the email content. Waktu Penilaian:

' + // ]; + + // $this->sendMessage($emailData, $user); + $id = $request->input('id'); $penilaian = Penilaian::findOrFail($id); $penilaian->update([ 'waktu_penilaian' => $validate['waktu_penilaian'], 'deskripsi_penilaian' => $validate['deskripsi_penilaian'], - ]); return redirect() ->route('surveyor.index') ->with('success', 'Jadwal berhasil dibuat.'); } catch (\Exception $e) { - return redirect() - ->route('surveyor.index') - ->with('error', 'Gagal membuat jadwal: ' . $e->getMessage()); + return response()->json(['buttonDisable' => $e->getMessage()]); } } + + public function storeAproved($id) { try { @@ -534,7 +562,10 @@ class SurveyorController extends Controller $tingkatKeramaian = TingkatKeramaian::all(); $laluLintasLokasi = LaluLintasLokasi::all(); $perkerasanJalan = PerkerasanJalan::all(); - + $jenisKendaraan = JenisKendaraan::all(); + $jenisKapal = JenisKapal::all(); + $jenisPesawat = JenisPesawat::all(); + $modelAlatBerat = ModelAlatBerat::all(); // return response()->json([ // 'per'=> @@ -571,7 +602,11 @@ class SurveyorController extends Controller 'laluLintasLokasi', 'perkerasanJalan', 'link_url_region', - 'forminspeksi' + 'forminspeksi', + 'jenisKendaraan', + 'jenisKapal', + 'jenisPesawat', + 'modelAlatBerat' )); } @@ -628,7 +663,7 @@ class SurveyorController extends Controller * Data pembanding. */ - public function dataPembanding($id) + public function dataPembanding($id, $jaminanId) { $permohonan = Permohonan::with( [ @@ -646,7 +681,16 @@ class SurveyorController extends Controller $branches = Branch::all(); $provinces = Province::all(); - return view('lpj::surveyor.detail', compact('permohonan', 'surveyor', 'branches', 'provinces')); + + $inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); + $forminspeksi = null; + if ($inpeksi) { + $forminspeksi = $inpeksi; + // $forminspeksi = json_decode($inpeksi->data_form, true); + } + + // return response()->json($forminspeksi); + return view('lpj::surveyor.components.data-pembanding', compact('permohonan', 'surveyor', 'branches', 'provinces','forminspeksi')); } @@ -731,6 +775,10 @@ class SurveyorController extends Controller 'lantai-unit' => ['Lantai Unit', 'lantai-unit', Lantai::class], 'view-unit' => ['View Unit', 'view-unit', ViewUnit::class], 'gol-mas-sekitar' => ['Golongan Masyarakat Sekitar', 'gol-mas-sekitar', GolonganMasySekitar::class], + 'jenis-pesawat' => ['Jenis Pasawat', 'jenis-pesawat', JenisPesawat::class], + 'model-alat-berat' => ['Model Alat Berat', 'model-alat-berat', ModelAlatBerat::class], + 'jenis-kapal' => ['Jenis Kapal', 'jenis-kapal', JenisKapal::class], + 'jenis-kendaraan' => ['Jenis Kendaraan', 'jenis-kendaraan', JenisKendaraan::class], ]; @@ -878,7 +926,11 @@ class SurveyorController extends Controller 'Golongan Masyarakat Sekitar' => GolonganMasySekitar::class, 'Lantai Unit' => Lantai::class, 'View Unit' => ViewUnit::class, - 'Perkerasan jalan' => PerkerasanJalan::class + 'Perkerasan jalan' => PerkerasanJalan::class, + 'Jenis pesawat' => JenisPesawat::class, + 'Model alat berat' => ModelAlatBerat::class, + 'Jenis kapal' => JenisKapal::class, + 'Jenis kendaraan' => JenisKendaraan::class, ]; @@ -1011,6 +1063,10 @@ class SurveyorController extends Controller 'spek-bangunan' => SpekBangunan::class, 'lantai-unit' => Lantai::class, 'view-unit' => ViewUnit::class, + 'jenis-pesawat' => JenisPesawat::class, + 'model-alat-berat' => ModelAlatBerat::class, + 'jenis-kapal' => JenisKapal::class, + 'jenis-kendaraan' => JenisKendaraan::class, ]; @@ -1038,6 +1094,10 @@ class SurveyorController extends Controller 'golMasySekitar' => GolonganMasySekitar::all(), 'tingkatKeramaian' => TingkatKeramaian::all(), 'laluLintasLokasi' => LaluLintasLokasi::all(), + 'jenisPesawat' => JenisPesawat::all(), + 'modelAlatBerat' => ModelAlatBerat::all(), + 'jenisKapal' => JenisKapal::all(), + 'jenisKendaraan' => JenisKendaraan::all(), ]; } @@ -1060,8 +1120,12 @@ class SurveyorController extends Controller 'spek-bangunan' => ['Spek Bangunan', 'spek-bangunan'], 'lantai-unit' => ['Lantai Unit', 'lantai-unit'], 'view-unit' => ['View Unit', 'view-unit'], - 'perkerasan-jalan' => ['Perkerasan jalan', 'perkerasan-jalan'] - ]; + 'perkerasan-jalan' => ['Perkerasan jalan', 'perkerasan-jalan'], + 'jenis-pesawat' => ['Jenis pesawat', 'jenis-pesawat'], + 'model-alat-berat' => ['Model alat berat', 'model-alat-berat'], + 'jenis-kapal' => ['Jenis kapal', 'jenis-kapal'], + 'jenis-kendaraan' => ['Jenis kendaraan', 'jenis-kendaraan'], + ]; private function getAssetData($data) { @@ -1107,14 +1171,25 @@ class SurveyorController extends Controller private function getBangunanData($data, $request): array { + // $kategori_bangunan = []; + // if ($request->has('spek_kategori_bagunan')) { + // foreach ($request->input('spek_kategori_bagunan', []) as $value) { + // $kategori_bangunan[] = [ + // 'value' => [ + // 'data' => $data['spek_bangunan'] ?? [], + // ], + // ]; + // } + // } + return [ 'luas_tanah_bagunan' => $data['luas_tanah_bagunan'] ?? null, 'jenis_bangunan' => $data['jenis_bangunan'] ?? null, 'kondisi_bangunan' => $data['kondisi_bangunan'] ?? null, 'sifat_bangunan' => $data['sifat_bangunan'] ?? null, - 'sifat_bangunan_input' => $data['sifat_bagunan_input'] ?? null, + 'sifat_bangunan_input' => $data['sifat_bangunan_input'] ?? null, 'spek_kategori_bagunan' => $data['spek_kategori_bagunan'] ?? null, - 'spek_bangunan' => $data['spek_bangunan'] ?? null, + 'spek_bangunan' => $data['spek_bangunan'] ?? [], 'sarana_pelengkap' => $data['sarana_pelengkap'] ?? [], 'sarana_pelengkap_input' => $data['sarana_pelengkap_input'] ?? null, ]; @@ -1154,6 +1229,7 @@ class SurveyorController extends Controller 'fakta_negatif' => $data['fakta_negatif'] ?? null, 'rute_menuju' => $data['rute_menuju'] ?? null, 'batas_batas' => $data['batas_batas'] ?? null, + 'batas_batas_input' => $data['batas_batas_input'] ?? null, 'kondisi_lingkungan' => $data['kondisi_lingkungan'] ?? null, 'kondisi_lain_bangunan' => $data['kondisi_lain_bangunan'] ?? null, 'informasi_dokument' => $data['informasi_dokument'] ?? null, @@ -1210,47 +1286,361 @@ class SurveyorController extends Controller unlink($fullPath); } } - private function getKapalData($data): array + + + private function getKapalData($data, $request): array { return [ - 'keterangan' => $data['keterangan'] + 'action' => $data['action'] ?? null, + 'nama_wakil_debitur' => $data['nama_wakil_debitur'] ?? null, + 'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null, + 'dermaga' => $data['dermaga'] ?? null, + 'desa_kelurahan' => $data['desa_kelurahan'] ?? null, + 'kecamatan' => $data['kecamatan'] ?? null, + 'kota_madya' => $data['kota_madya'] ?? null, + 'provinsi' => $data['provinsi'] ?? null, + 'jenis' => $data['jenis'] ?? null, + 'size' => $data['size'] ?? null, + 'kondisi' => $data['kondisi'] ?? null, + 'klasifikasi' => $data['klasifikasi'] ?? null, + + 'nama_kapal' => $data['nama_kapal'] ?? null, + 'pemilik_kapal' => $data['pemilik_kapal'] ?? null, + 'bendera' => $data['bendera'] ?? null, + 'nomor_selar' => $data['nomor_selar'] ?? null, + 'kapal' => $data['kapal'] ?? null, + 'galangan_kapal' => $data['galangan_kapal'] ?? null, + 'kapal_shipyard' => $data['kapal_shipyard'] ?? null, + 'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null, + 'tahun_launcing' => $data['tahun_launcing'] ?? null, + 'dwt' => $data['dwt'] ?? null, + 'lwt' => $data['lwt'] ?? null, + 'gross_tonnage' => $data['gross_tonnage'] ?? null, + 'net_tonnage' => $data['net_tonnage'] ?? null, + 'tenaga_mesin' => $data['tenaga_mesin'] ?? null, + 'loa' => $data['loa'] ?? null, + 'lbp' => $data['lbp'] ?? null, + 'beam' => $data['beam'] ?? null, + 'depth' => $data['depth'] ?? null, + 'draft' => $data['draft'] ?? null, + + 'lambung_kapal' => $data['lambung_kapal'] ?? null, + 'dek' => $data['dek'] ?? null, + 'struktur_rangka' => $data['struktur_rangka'] ?? null, + 'palka' => $data['palka'] ?? null, + 'pondasi_mesin' => $data['pondasi_mesin'] ?? null, + 'area_mesin' => $data['area_mesin'] ?? null, + 'cat_dan_korosi' => $data['cat_dan_korosi'] ?? null, + 'sistem_pengelasan' => $data['sistem_pengelasan'] ?? null, + 'deskripsi_struktur' => $data['deskripsi_struktur'] ?? null, + + 'sekoci' => $data['sekoci'] ?? null, + 'jaket_pelampung' => $data['jaket_pelampung'] ?? null, + 'alat_pemadaman' => $data['alat_pemadaman'] ?? null, + 'rambu_darurat' => $data['rambu_darurat'] ?? null, + 'sistem_alarm' => $data['sistem_alarm'] ?? null, + 'sistem_pencegah' => $data['sistem_pencegah'] ?? null, + 'kebakaran' => $data['kebakaran'] ?? null, + 'lampu_darurat' => $data['lampu_darurat'] ?? null, + 'deskripsi_peralatan' => $data['deskripsi_peralatan'] ?? null, + + 'gps' => $data['gps'] ?? null, + 'radar' => $data['radar'] ?? null, + 'radio_komunikasi' => $data['radio_komunikasi'] ?? null, + 'lampu_navigasi' => $data['lampu_navigasi'] ?? null, + 'sistem_kendali_otomatis' => $data['sistem_kendali_otomatis'] ?? null, + 'kompas' => $data['kompas'] ?? null, + 'deskripsi_navigasi' => $data['deskripsi_navigasi'] ?? null, + + 'mesin_utama' => $data['mesin_utama'] ?? null, + 'mesin_bantu' => $data['mesin_bantu'] ?? null, + 'pompa_pendingin' => $data['pompa_pendingin'] ?? null, + 'sistem_pelumasan' => $data['sistem_pelumasan'] ?? null, + 'propeller' => $data['propeller'] ?? null, + 'sistem_kelistrikan' => $data['sistem_kelistrikan'] ?? null, + 'deskripsi_mesin_penggerak' => $data['deskripsi_mesin_penggerak'] ?? null, + + 'lampu_navigasi' => $data['lampu_navigasi'] ?? null, + 'sistem_penerangan' => $data['sistem_penerangan'] ?? null, + 'sistem_panel_distribusi' => $data['sistem_panel_distribusi'] ?? null, + 'kabel_perangkat' => $data['kabel_perangkat'] ?? null, + 'deskripsi_kelistrikan' => $data['deskripsi_kelistrikan'] ?? null, + + 'kebersihan_dek_luar' => $data['kebersihan_dek_luar'] ?? null, + 'tangki_limbah' => $data['tangki_limbah'] ?? null, + 'sistem_pengelolaan_limbah' => $data['sistem_pengelolaan_limbah'] ?? null, + 'pengelolaan_air_ballast' => $data['pengelolaan_air_ballast'] ?? null, + 'deskripsi_kebersihan' => $data['deskripsi_kebersihan'] ?? null, + + 'fakta_positif' => $data['fakta_positif'] ?? null, + 'fakta_negatif' => $data['fakta_negatif'] ?? null, + 'analisa_makro' => $data['analisa_makro'] ?? null, + 'kesimpulan' => $data['kesimpulan'] ?? null, + 'catatan' => $data['catatan'] ?? null, + ]; + } + public function getKendaraanData($data, $request): array + { + return [ + 'action' => $data['action'] ?? null, + 'tanggal_survey' => $data['tanggal_survey'] ?? null, + 'nama_wakil' => $data['nama_wakil'] ?? null, + 'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null, + 'nama_jalan' => $data['nama_jalan'] ?? null, + 'perumahan_gang' => $data['perumahan_gang'] ?? null, + 'blok_nomor' => $data['blok_nomor'] ?? null, + 'desa_kelurahan' => $data['desa_kelurahan'] ?? null, + 'kecamatan' => $data['kecamatan'] ?? null, + 'kota_madya' => $data['kota_madya'] ?? null, + 'provinsi' => $data['provinsi'] ?? null, + 'kondisi' => $data['kondisi'] ?? null, + 'nomor_polisi' => $data['nomor_polisi'] ?? null, + 'nomor_polis_tidak_sesuai' => $data['nomor_polis_tidak_sesuai'] ?? null, + 'merek' => $data['merek'] ?? null, + 'merek_tidak_sesuai' => $data['merek_tidak_sesuai'] ?? null, + 'warna' => $data['warna'] ?? null, + 'warna_tidak_sesuai' => $data['warna_tidak_sesuai'] ?? null, + 'nomor_rangka' => $data['nomor_rangka'] ?? null, + 'nomor_rangka_tidak_sesuai' => $data['nomor_rangka_tidak_sesuai'] ?? null, + 'nomor_mesin' => $data['nomor_mesin'] ?? null, + 'nomor_mesin_tidak_sesuai' => $data['nomor_mesin_tidak_sesuai'] ?? null, + 'posisi_kilometer' => $data['posisi_kilometer'] ?? null, + 'transmisi' => $data['transmisi'] ?? null, + + + 'mesin_panel_instrument' => $data['mesin_panel_instrument'] ?? null, + 'fungsi_mesin_panel_instrument' => $data['fungsi_mesin_panel_instrument'] ?? null, + 'interior' => $data['interior'] ?? null, + 'interior' => $data['interior'] ?? null, + + 'jumlah_pintu' => $data['jumlah_pintu'] ?? null, + 'rangka_karoseri' => $data['rangka_karoseri'] ?? null, + 'ban' => $data['ban'] ?? null, + 'velg' => $data['velg'] ?? null, + 'bamper_depan' => $data['bamper_depan'] ?? null, + 'bamper_belakang' => $data['bamper_belakang'] ?? null, + 'lampu_depan' => $data['lampu_depan'] ?? null, + 'lampu_belakang' => $data['lampu_belakang'] ?? null, + 'kaca_kendaraan' => $data['kaca_kendaraan'] ?? null, + 'air_conditioner' => $data['air_conditioner'] ?? null, + 'tape_radio_cd' => $data['tape_radio_cd'] ?? null, + 'sensor_parkir' => $data['sensor_parkir'] ?? null, + 'sensor_camera_recorder' => $data['sensor_camera_recorder'] ?? null, + 'lcd' => $data['lcd'] ?? null, + 'sabuk_keselamatan' => $data['sabuk_keselamatan'] ?? null, + 'airbag' => $data['airbag'] ?? null, + 'asuransi' => $data['asuransi'] ?? null, + 'perusahaan_asuransi' => $data['perusahaan_asuransi'] ?? null, + 'tahun_berakhir' => $data['tahun_berakhir'] ?? null, + + + 'fakta_positif' => $data['fakta_positif'] ?? null, + 'fakta_negatif' => $data['fakta_negatif'] ?? null, + 'analisa_makro' => $data['analisa_makro'] ?? null, + 'kesimpulan' => $data['kesimpulan'] ?? null, + 'catatan' => $data['catatan'] ?? null, ]; } - private function getKendaraanData($data): array + public function getMesinData($data, $request): array { return [ - 'keterangan' => $data['keterangan'] + 'action' => $data['action'] ?? null, + 'nama_wakil' => $data['nama_wakil'] ?? null, + 'nama_jalan' => $data['nama_jalan'] ?? null, + 'perumahan_gang' => $data['perumahan_gang'] ?? null, + 'blok' => $data['blok'] ?? null, + 'desa_kelurahan' => $data['desa_kelurahan'] ?? null, + 'kecamatan' => $data['kecamatan'] ?? null, + 'kota_madya' => $data['kota_madya'] ?? null, + 'provinsi' => $data['provinsi'] ?? null, + 'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null, + 'tipe_model' => $data['tipe_model'] ?? null, + 'merek' => $data['merek'] ?? null, + 'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null, + 'negara_pembuat' => $data['negara_pembuat'] ?? null, + 'kondisi_mesin' => $data['kondisi_mesin'] ?? null, + 'faktor_positif' => $data['faktor_positif'] ?? null, + 'faktor_negatif' => $data['faktor_negatif'] ?? null, + 'kesimpulan' => $data['kesimpulan'] ?? null, + 'catatan' => $data['catatan'] ?? null, ]; } - private function getMesinData($data): array + public function getAlatBeratData($data, $request): array { return [ - 'keterangan' => $data['keterangan'] + 'action' => $data['action'] ?? null, + 'tanggal_survey' => $data['tanggal_survey'] ?? null, + 'nama_wakil' => $data['nama_wakil'] ?? null, + 'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null, + 'dengan_wadeb' => $data['dengan_wadeb'] ?? null, + 'nama_jalan' => $data['nama_jalan'] ?? null, + 'perumahan_gang' => $data['perumahan_gang'] ?? null, + 'blok' => $data['blok'] ?? null, + 'desa_kelurahan' => $data['desa_kelurahan'] ?? null, + 'kecamatan' => $data['kecamatan'] ?? null, + 'kota_madya' => $data['kota_madya'] ?? null, + 'provinsi' => $data['provinsi'] ?? null, + 'jenis_model' => $data['jenis_model'] ?? null, + 'nomor_lambung' => $data['nomor_lambung'] ?? null, + 'model_unit' => $data['model_unit'] ?? null, + 'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null, + 'merk' => $data['merk'] ?? null, + 'negara_pembuat' => $data['negara_pembuat'] ?? null, + 'tahun_pembelian' => $data['tahun_pembelian'] ?? null, + 'nomor_faktur' => $data['nomor_faktur'] ?? null, + 'nomor_kontrak' => $data['nomor_kontrak'] ?? null, + 'nama_pemilik' => $data['nama_pemilik'] ?? null, + 'alamat_pemilik' => $data['alamat_pemilik'] ?? null, + 'nomor_asuransi' => $data['nomor_asuransi'] ?? null, + 'nomor_rangka' => $data['nomor_rangka'] ?? null, + 'nomor_mesin' => $data['nomor_mesin'] ?? null, + 'hour_mesters' => $data['hour_mesters'] ?? null, + 'overhaul_mesin' => $data['overhaul_mesin'] ?? null, + + 'mesin_panel' => $data['mesin_panel'] ?? null, + 'fungsi_panel' => $data['fungsi_panel'] ?? null, + 'interior' => $data['interior'] ?? null, + 'rangka_Karoseri' => $data['rangka_Karoseri'] ?? null, + 'ban' => $data['ban'] ?? null, + 'velg' => $data['velg'] ?? null, + 'air_conditioner' => $data['air_conditioner'] ?? null, + 'aksesoris' => $data['aksesoris'] ?? null, + 'lcd' => $data['lcd'] ?? null, + 'perlengkapan' => $data['perlengkapan'] ?? null, + 'asuransi' => $data['asuransi'] ?? null, + 'perusahaan_asuransi' => $data['perusahaan_asuransi'] ?? null, + 'tahun_berakhir' => $data['tahun_berakhir'] ?? null, + 'sensor_kamera' => $data['sensor_kamera'] ?? null, + 'sabuk_keselamatan' => $data['sabuk_keselamatan'] ?? null, + 'air_bag' => $data['air_bag'] ?? null, + + 'faktor_positif' => $data['faktor_positif'] ?? null, + 'faktor_negatif' => $data['faktor_negatif'] ?? null, + 'kesimpulan' => $data['kesimpulan'] ?? null, + 'catatan' => $data['catatan'] ?? null, ]; } - private function getPesawatData($data): array + private function getPesawatData($data, $request): array { return [ - 'keterangan' => $data['keterangan'] + 'action' => $data['action'] ?? null, + 'tanggal_survey' => $data['tanggal_survey'] ?? null, + 'nama_wakil' => $data['nama_wakil'] ?? null, + 'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null, + 'bandara' => $data['bandara'] ?? null, + 'desa_kelurahan' => $data['desa_kelurahan'] ?? null, + 'kecamatan' => $data['kecamatan'] ?? null, + 'kota_madya' => $data['kota_madya'] ?? null, + 'provinsi' => $data['provinsi'] ?? null, + + 'jenis_pesawat' => $data['jenis_pesawat'] ?? null, + 'size' => $data['size'] ?? null, + 'kondisi' => $data['kondisi'] ?? null, + 'nama_pesawat' => $data['nama_pesawat'] ?? null, + 'model' => $data['model'] ?? null, + 'nomor_registrasi' => $data['nomor_registrasi'] ?? null, + 'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null, + 'certificate_of_airworthines' => $data['certificate_of_airworthines'] ?? null, + 'certificate_of_registration' => $data['certificate_of_registration'] ?? null, + 'total_service_hours' => $data['total_service_hours'] ?? null, + 'total_service_cycles' => $data['total_service_cycles'] ?? null, + + 'last_a_check' => $data['last_a_check'] ?? null, + 'next_a_check' => $data['next_a_check'] ?? null, + 'last_b_check' => $data['last_b_check'] ?? null, + 'next_b_check' => $data['next_b_check'] ?? null, + 'last_c_check' => $data['last_c_check'] ?? null, + 'next_c_check' => $data['next_c_check'] ?? null, + 'next_d_check' => $data['next_d_check'] ?? null, + 'last_d_check' => $data['last_d_check'] ?? null, + 'deskripsi_maintenence' => $data['deskripsi_maintenence'] ?? null, + + 'instrument_landing_system' => $data['instrument_landing_system'] ?? null, + 'traffic_collision_avoidance_system' => $data['traffic_collision_avoidance_system'] ?? null, + 'windshear' => $data['windshear'] ?? null, + 'electronic_flight' => $data['electronic_flight'] ?? null, + 'winglets' => $data['winglets'] ?? null, + 'deskripsi_konfigurasi' => $data['deskripsi_konfigurasi'] ?? null, + + 'maksimal_penumpang' => $data['maksimal_penumpang'] ?? null, + 'jumlah_kursi' => $data['jumlah_kursi'] ?? null, + 'kursi_pramugari_pramugara' => $data['kursi_pramugari_pramugara'] ?? null, + 'kartu_fitur_keselamatan' => $data['kartu_fitur_keselamatan'] ?? null, + 'sabuk_pengaman' => $data['sabuk_pengaman'] ?? null, + 'lampu_kabin' => $data['lampu_kabin'] ?? null, + 'lampu_pintu_keluar' => $data['lampu_pintu_keluar'] ?? null, + 'intercom_kabin' => $data['intercom_kabin'] ?? null, + 'deskripsi_kabin' => $data['deskripsi_kabin'] ?? null, + + 'badan_pesawat' => $data['badan_pesawat'] ?? null, + 'sayap_pesawat' => $data['sayap_pesawat'] ?? null, + 'ekor_pesawat' => $data['ekor_pesawat'] ?? null, + 'landing_gear' => $data['landing_gear'] ?? null, + 'sistem_pengelasan' => $data['sistem_pengelasan'] ?? null, + 'deskripsi_struktur' => $data['deskripsi_struktur'] ?? null, + + 'gps' => $data['gps'] ?? null, + 'radar' => $data['radar'] ?? null, + 'radio_komunikasi' => $data['radio_komunikasi'] ?? null, + 'lampu_navigasi' => $data['lampu_navigasi'] ?? null, + 'sistem_autopilot' => $data['sistem_autopilot'] ?? null, + 'deskripsi_navigasi' => $data['deskripsi_navigasi'] ?? null, + + 'tangki_bahan_bakar' => $data['tangki_bahan_bakar'] ?? null, + 'saluran_pipa_bahan_bakar' => $data['saluran_pipa_bahan_bakar'] ?? null, + 'pompa_bahan_bakar' => $data['pompa_bahan_bakar'] ?? null, + 'sistem_hidrolik_utama' => $data['sistem_hidrolik_utama'] ?? null, + 'sistem_pendigin_hidrolik' => $data['sistem_pendigin_hidrolik'] ?? null, + 'deskripsi_hidrolik' => $data['deskripsi_hidrolik'] ?? null, + + 'mesin_utama' => $data['mesin_utama'] ?? null, + 'sistem_pendorong' => $data['sistem_pendorong'] ?? null, + 'sistem_pendigin_mesin' => $data['sistem_pendigin_mesin'] ?? null, + 'sistem_pelumasan' => $data['sistem_pelumasan'] ?? null, + 'filter_dan_perangkat_pendukung' => $data['filter_dan_perangkat_pendukung'] ?? null, + 'deskripsi_kondisi_mesin' => $data['deskripsi_kondisi_mesin'] ?? null, + + 'jaket_pelampung' => $data['jaket_pelampung'] ?? null, + 'pintu_darurat' => $data['pintu_darurat'] ?? null, + 'alat_pemadaman_kebakaran' => $data['alat_pemadaman_kebakaran'] ?? null, + 'sistem_alaram_darurat' => $data['sistem_alaram_darurat'] ?? null, + 'sekoci' => $data['sekoci'] ?? null, + 'masker_oxigen' => $data['masker_oxigen'] ?? null, + 'sabuk_pengaman' => $data['sabuk_pengaman'] ?? null, + 'deskripsi_fungsi_keselamatan' => $data['deskripsi_fungsi_keselamatan'] ?? null, + + 'sistem_ventilasi_ac' => $data['sistem_ventilasi_ac'] ?? null, + 'sistem_penerangan_kabin' => $data['sistem_penerangan_kabin'] ?? null, + 'panel_informasi_penumpang' => $data['panel_informasi_penumpang'] ?? null, + 'sistem_hiburan_kabin' => $data['sistem_hiburan_kabin'] ?? null, + 'deskripsi_Interior' => $data['deskripsi_Interior'] ?? null, + + // Validasi untuk faktor dan kesimpulan + 'faktor_positif' => $data['faktor_positif'] ?? null, + 'faktor_negatif' => $data['faktor_negatif'] ?? null, + 'kesimpulan' => $data['kesimpulan'] ?? null, + 'catatan' => $data['catatan'] ?? null, ]; } - private function getAlatBeratData($data): array - { - return [ - 'keterangan' => $data['keterangan'] - ]; - } - private function getUnitData($data): array + private function getUnitData($data, $request): array { return [ - 'keterangan' => $data['keterangan'] + 'action' => $data['action'] ?? null, + 'luas_unit' => $data['luas_unit'] ?? null, + 'luas_unit_tidak_sesuai' => $data['luas_unit_tidak_sesuai'] ?? null, + 'jenis_unit' => $data['jenis_unit'] ?? null, + 'kondisi_unit' => $data['kondisi_unit'] ?? null, + 'posisi_unit' => $data['posisi_unit'] ?? null, + 'lantai' => $data['lantai'] ?? null, + 'view' => $data['view'] ?? null, + 'bentuk_unit' => $data['bentuk_unit'] ?? null, ]; } diff --git a/app/Http/Controllers/TenderController.php b/app/Http/Controllers/TenderController.php index f4edb45..9a2e05e 100644 --- a/app/Http/Controllers/TenderController.php +++ b/app/Http/Controllers/TenderController.php @@ -23,6 +23,7 @@ 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\PenawaranEmailTenderLog; class TenderController extends Controller { @@ -618,7 +619,9 @@ class TenderController extends Controller $penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); // Retrieve data from the database - $query = PenawaranDetailTender::query()->where('penawaran_id', '=', $penawaran->id)->with(['kjpp', 'penawaran', 'emailTenderLog']); + $query = PenawaranDetailTender::query()->where('penawaran_id', '=', $penawaran->id)->with(['kjpp', 'penawaran', 'penawaran.emailTenderLog']); + + // dd($query); // Apply sorting if provided if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { @@ -641,23 +644,8 @@ class TenderController extends Controller } } - // Get the total count of records - $totalRecords = $query->count(); - - // Apply pagination if provided - if ($request->has('page') && $request->has('size')) { - $page = $request->get('page'); - $size = $request->get('size'); - $offset = ($page - 1) * $size; // Calculate the offset - - $query->skip($offset)->take($size); - } - - // Get the filtered count of records - $filteredRecords = $query->count(); - // Get the data for the current page - $data = $query->with(['kjpp', 'penawaran', 'emailTenderLog'])->get(); + $data = $query->get(); // add column "No" $i = 0; @@ -670,20 +658,9 @@ class TenderController extends Controller $j++; } - // Calculate the page count - $pageCount = ceil($totalRecords / $request->get('size')); - - // Calculate the current page number - $currentPage = 0 + 1; - // Return the response data as a JSON object return response()->json([ 'draw' => $request->get('draw'), - 'recordsTotal' => $totalRecords, - 'recordsFiltered' => $filteredRecords, - 'pageCount' => $pageCount, - 'page' => $currentPage, - 'totalCount' => $totalRecords, 'data' => $data, ]); } @@ -800,8 +777,6 @@ class TenderController extends Controller $dp1 = PenawaranDetailTender::with('kjpp')->where('kjpp_rekanan_id', '=', $id)->first(); - // dd($dp1->kjpp); - foreach ($permohonan->debiture->documents as $document) { $village_permohonan = $document->village_code; $district_permohonan = $document->district_code; @@ -814,21 +789,89 @@ class TenderController extends Controller $cities = City::where('code', $city_permohonan)->get(); $provinces = Province::where('code', $province_permohonan)->get(); - try { - $balikan = SendPenawaranKJPPTenderJob::dispatch( - $kjpps, - $dp1, - $penawaran, - $permohonan, - $villages, - $districts, - $cities, - $provinces - ); - } catch (\Exception $e) { - return redirect()->route('tender.penawaran.ulang.index')->with('error', 'Email Penawaran Gagal Terkirim!'); - } + $subject = 'Send Penawaran K J P P Email'; - return redirect()->route('tender.penawaran.ulang.index')->with('success', 'Email Penawaran Berhasil Terkirim!'); + $body_pdf = view('lpj::penawaran.kirimEmailKJPP', [ + 'dp1' => $dp1, + 'penawaran' => $penawaran, + 'permohonan' => $permohonan, + 'kjpps' => $kjpps, + 'villages' => $villages, + 'districts' => $districts, + 'cities' => $cities, + 'provinces' => $provinces + ])->render(); + + SendPenawaranKJPPTenderJob::dispatch( + $kjpps, + $dp1, + $penawaran, + $permohonan, + $villages, + $districts, + $cities, + $provinces + ); + + try { + // Proses log email + foreach ($kjpps as $email) { + // Cek apakah sudah ada log dengan status 'failed' untuk email ini + $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) { + // Jika log ditemukan dan statusnya 'failed', update status menjadi 'success' + $log->update([ + 'status' => 'success', + 'error_message' => null, // Reset error_message saat status diubah menjadi success + 'updated_at' => now(), + ]); + } else if ($log1) { + // Jika log ditemukan dan statusnya 'success' biarkan saja + $log1->update([ // Reset error_message saat status diubah menjadi success + 'updated_at' => now(), + ]); + } else { + // Jika tidak ada log gagal, buat log baru dengan status 'success' + PenawaranEmailTenderLog::create([ + '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, // Tidak ada error message + '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 + foreach ($kjpps as $email) { + PenawaranEmailTenderLog::create([ + '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(), + 'created_at' => now(), + 'updated_at' => now(), + ]); + } + return redirect()->route('tender.penawaran.showKirimEmail', ['noreg' => $noreg])->with('error', 'Email Penawaran Gagal Terkirim!'); + } } } diff --git a/app/Http/Requests/FormSurveyorRequest.php b/app/Http/Requests/FormSurveyorRequest.php index d724c72..719b695 100644 --- a/app/Http/Requests/FormSurveyorRequest.php +++ b/app/Http/Requests/FormSurveyorRequest.php @@ -38,8 +38,8 @@ class FormSurveyorRequest extends FormRequest 'kapal' => $this->getKapalRules(), 'kendaraan' => $this->getKendaraanRules(), 'mesin' => $this->getMesinRules(), - 'pesawat' => $this->getLinkunganRules(), - 'alat-berat' => $this->getLinkunganRules(), + 'pesawat' => $this->getPesawatRules(), + 'alat-berat' => $this->getAlatBeratRules(), 'apartemen-kantor' => $this->getUnitRules(), 'lingkungan' => $this->getLinkunganRules(), 'fakta' => $this->getCommonRules(), @@ -51,7 +51,7 @@ class FormSurveyorRequest extends FormRequest foreach ($pisah as $act) { if (isset($allRules[$act])) { $rules = array_merge($rules, $allRules[$act]); - if ($act == 'tanah' || $act == 'bangunan') { + if ($act == 'tanah' || $act == 'bangunan' || $act == 'apartemen-kantor') { $hasAssetDescriptionRules = true; } } @@ -162,8 +162,91 @@ class FormSurveyorRequest extends FormRequest { return [ 'action' => 'required', - 'kondisi_kapal' => 'required', - 'kondisi_kapal_lain' => 'required', + 'nama_wakil_debitur' => 'required', + 'hub_calon_debitur' => 'required', + 'dermaga' => 'required', + 'desa_kelurahan' => 'required', + 'kecamatan' => 'required', + 'kota_madya' => 'required', + 'provinsi' => 'required', + 'jenis.*' => 'required', + 'size.*' => 'required', + 'kondisi.*' => 'required', + 'klasifikasi.*' => 'required', + + 'nama_kapal' => 'required', + 'pemilik_kapal' => 'required', + 'bendera' => 'required', + 'nomor_selar' => 'required', + 'kapal' => 'required', + 'galangan_kapal' => 'required', + 'kapal_shipyard' => 'required', + 'tahun_pembuatan' => 'required', + 'tahun_launcing' => 'required', + 'dwt' => 'required', + 'lwt' => 'required', + 'gross_tonnage' => 'required', + 'net_tonnage' => 'required', + 'tenaga_mesin' => 'required', + 'loa' => 'required', + 'lbp' => 'required', + 'beam' => 'required', + 'depth' => 'required', + 'draft' => 'required', + + 'lambung_kapal' => 'required', + 'dek' => 'required', + 'struktur_rangka' => 'required', + 'palka' => 'required', + 'pondasi_mesin' => 'required', + 'area_mesin' => 'required', + 'cat_dan_korosi' => 'required', + 'sistem_pengelasan' => 'required', + 'deskripsi_struktur' => 'required', + + 'sekoci' => 'required', + 'jaket_pelampung' => 'required', + 'alat_pemadaman' => 'required', + 'rambu_darurat' => 'required', + 'sistem_alarm' => 'required', + 'sistem_pencegah' => 'required', + 'kebakaran' => 'required', + 'lampu_darurat' => 'required', + 'deskripsi_peralatan' => 'required', + + 'gps' => 'required', + 'radar' => 'required', + 'radio_komunikasi' => 'required', + 'lampu_navigasi' => 'required', + 'sistem_kendali_otomatis' => 'required', + 'kompas' => 'required', + 'deskripsi_navigasi' => 'required', + + 'mesin_utama' => 'required', + 'mesin_bantu' => 'required', + 'pompa_pendingin' => 'required', + 'sistem_pelumasan' => 'required', + 'propeller' => 'required', + 'sistem_kelistrikan' => 'required', + 'deskripsi_mesin_penggerak' => 'required', + + 'lampu_navigasi' => 'required', + 'sistem_penerangan' => 'required', + 'sistem_panel_distribusi' => 'required', + 'kabel_perangkat' => 'required', + 'deskripsi_kelistrikan' => 'required', + + 'kebersihan_dek_luar' => 'required', + 'tangki_limbah' => 'required', + 'sistem_pengelolaan_limbah' => 'required', + 'pengelolaan_air_ballast' => 'required', + 'deskripsi_kebersihan' => 'required', + + 'fakta_positif.*' => 'nullable', + 'fakta_negatif.*' => 'nullable', + 'analisa_makro.*' => 'nullable', + 'kesimpulan.*' => 'nullable', + 'catatan.*' => 'nullable', ]; } @@ -171,8 +254,56 @@ class FormSurveyorRequest extends FormRequest { return [ 'action' => 'required', - 'kondisi_kendaraan' => 'required', - 'kondisi_kendaraan_lain' => 'required', + 'tanggal_survey' => 'required', + 'nama_wakil' => 'required', + 'hub_calon_debitur' => 'required', + 'nama_jalan' => 'required', + 'perumahan_gang' => 'required', + 'blok_nomor' => 'required', + 'desa_kelurahan' => 'required', + 'kecamatan' => 'required', + 'kota_madya' => 'required', + 'provinsi' => 'required', + 'kondisi' => 'required', + 'nomor_polisi' => 'required', + 'nomor_polis_tidak_sesuai' => 'nullable', + 'merek' => 'required', + 'merek_tidak_sesuai' => 'nullable', + 'warna' => 'required', + 'warna_tidak_sesuai' => 'nullable', + 'nomor_rangka' => 'required', + 'nomor_rangka_tidak_sesuai' => 'nullable', + 'nomor_mesin' => 'required', + 'nomor_mesin_tidak_sesuai' => 'nullable', + 'posisi_kilometer' => 'required', + 'transmisi' => 'required', + 'mesin_panel_instrument.*' => 'required', + 'fungsi_mesin_panel_instrument.*' => 'required', + 'interior.*' => 'required', + 'jumlah_pintu.*' => 'required', + 'rangka_karoseri.*' => 'required', + 'ban.*' => 'required', + 'velg.*' => 'required', + 'bamper_depan.*' => 'required', + 'bamper_belakang.*' => 'required', + 'lampu_depan.*' => 'required', + 'lampu_belakang.*' => 'required', + 'kaca_kendaraan.*' => 'required', + 'air_conditioner.*' => 'required', + 'tape_radio_cd.*' => 'required', + 'sensor_parkir.*' => 'required', + 'sensor_camera_recorder.*' => 'required', + 'lcd.*' => 'required', + 'sabuk_keselamatan.*' => 'required', + 'airbag.*' => 'required', + 'asuransi.*' => 'required', + 'perusahaan_asuransi' => 'required', + 'tahun_berakhir' => 'required', + 'fakta_positif.*' => 'nullable', + 'fakta_negatif.*' => 'nullable', + 'analisa_makro.*' => 'nullable', + 'kesimpulan.*' => 'nullable', + 'catatan.*' => 'nullable', ]; } @@ -181,8 +312,24 @@ class FormSurveyorRequest extends FormRequest { return [ 'action' => 'required', - 'kondisi_mesin' => 'required', - 'kondisi_mesin_lain' => 'required', + 'nama_wakil' => 'required', + 'nama_jalan' => 'required', + 'perumahan_gang' => 'required', + 'blok' => 'required', + 'desa_kelurahan' => 'required', + 'kecamatan' => 'required', + 'kota_madya' => 'required', + 'provinsi' => 'required', + 'hub_calon_debitur' => 'required', + 'tipe_model' => 'required', + 'merek' => 'required', + 'tahun_pembuatan' => 'required', + 'negara_pembuat' => 'required', + 'kondisi_mesin' => 'required', + 'faktor_positif' => 'nullable', + 'faktor_negatif' => 'nullable', + 'kesimpulan' => 'nullable', + 'catatan' => 'nullable', ]; } @@ -191,12 +338,173 @@ class FormSurveyorRequest extends FormRequest { return [ 'action' => 'required', - 'kondisi_alat_berat' => 'required', - 'kondisi_alat_berat_lain' => 'required', + 'tanggal_survey' => 'required', + 'nama_wakil' => 'required', + 'hub_calon_debitur' => 'required', + 'dengan_wadeb' => 'required', + 'nama_jalan' => 'required', + 'perumahan_gang' => 'required', + 'blok' => 'required', + 'desa_kelurahan' => 'required', + 'kecamatan' => 'required', + 'kota_madya' => 'required', + 'provinsi' => 'required', + 'jenis_model' => 'required', + 'nomor_lambung' => 'required', + 'model_unit' => 'required', + 'tahun_pembuatan' => 'required', + 'merk' => 'required', + 'negara_pembuat' => 'required', + 'tahun_pembelian' => 'required', + 'nomor_faktur' => 'nullable', + 'nomor_kontrak' => 'nullable', + 'nama_pemilik' => 'nullable', + 'alamat_pemilik' => 'nullable', + 'nomor_asuransi' => 'nullable', + 'nomor_rangka' => 'nullable', + 'nomor_mesin' => 'nullable', + 'hour_mesters' => 'nullable', + 'overhaul_mesin' => 'nullable', + 'mesin_panel.*' => 'nullable', + 'fungsi_panel.*' => 'nullable', + 'interior.*' => 'nullable', + 'rangka_Karoseri.*' => 'nullable', + 'ban.*' => 'nullable', + 'velg.*' => 'nullable', + 'air_conditioner.*' => 'nullable', + 'aksesoris.*' => 'nullable', + 'lcd.*' => 'nullable', + 'perlengkapan.*' => 'nullable', + 'asuransi.*' => 'nullable', + 'perusahaan_asuransi.*' => 'nullable', + 'tahun_berakhir.*' => 'nullable', + 'sensor_kamera.*' => 'nullable', + 'lcd.*' => 'nullable', + 'sabuk_keselamatan.*' => 'nullable', + 'air_bag.*' => 'nullable', + 'asuransi.*' => 'nullable', + 'perusahan_asuransi' => 'nullable', + 'tahun_berakhir' => 'nullable', + 'faktor_positif' => 'nullable', + 'faktor_negatif' => 'nullable', + 'kesimpulan' => 'nullable', + 'catatan' => 'nullable', ]; } + + private function getPesawatRules(): array + { + return [ + 'action' => 'required', + 'tanggal_survey' => 'required', + 'nama_wakil' => 'required', + 'hub_calon_debitur' => 'required', + 'bandara' => 'required', + 'desa_kelurahan' => 'required', + 'kecamatan' => 'required', + 'kota_madya' => 'required', + 'provinsi' => 'required', + + 'jenis_pesawat' => 'required', + 'size' => 'required', + 'kondisi' => 'required', + 'nama_pesawat' => 'required', + 'model' => 'required', + 'nomor_registrasi' => 'required', + 'tahun_pembuatan' => 'required', + 'certificate_of_airworthines' => 'required', + 'certificate_of_registration' => 'required', + 'total_service_hours' => 'required', + 'total_service_cycles' => 'required', + + 'last_a_check' => 'required', + 'next_a_check' => 'required', + 'last_b_check' => 'required', + 'next_b_check' => 'required', + 'last_c_check' => 'required', + 'next_c_check' => 'required', + 'next_d_check' => 'required', + 'last_d_check' => 'required', + 'deskripsi_maintenence' => 'nullable', + + 'instrument_landing_system' => 'required', + 'traffic_collision_avoidance_system' => 'required', + 'windshear' => 'required', + 'electronic_flight' => 'required', + 'winglets' => 'required', + 'deskripsi_konfigurasi' => 'required', + + + 'maksimal_penumpang' => 'required', + 'jumlah_kursi' => 'required', + 'kursi_pramugari_pramugara' => 'required', + 'kartu_fitur_keselamatan' => 'required', + 'sabuk_pengaman' => 'required', + 'lampu_kabin' => 'required', + 'lampu_pintu_keluar' => 'required', + 'intercom_kabin' => 'required', + 'deskripsi_kabin' => 'required', + + + 'badan_pesawat' => 'required', + 'sayap_pesawat' => 'required', + 'ekor_pesawat' => 'required', + 'landing_gear' => 'required', + 'sabuk_pengaman' => 'required', + 'sistem_pengelasan' => 'required', + 'deskripsi_struktur' => 'required', + + 'gps' => 'required', + 'radar' => 'required', + 'radio_komunikasi' => 'required', + 'lampu_navigasi' => 'required', + 'sistem_autopilot' => 'required', + 'deskripsi_navigasi' => 'required', + + 'tangki_bahan_bakar' => 'required', + 'saluran_pipa_bahan_bakar' => 'required', + 'pompa_bahan_bakar' => 'required', + 'sistem_hidrolik_utama' => 'required', + 'sistem_pendigin_hidrolik' => 'required', + 'deskripsi_hidrolik' => 'required', + + 'mesin_utama' => 'required', + 'sistem_pendorong' => 'required', + 'sistem_pendigin_mesin' => 'required', + 'sistem_pelumasan' => 'required', + 'filter_dan_perangkat_pendukung' => 'required', + 'deskripsi_kondisi_mesin' => 'required', + + + 'jaket_pelampung' => 'required', + 'pintu_darurat' => 'required', + 'alat_pemadaman_kebakaran' => 'required', + 'sistem_alaram_darurat' => 'required', + 'sekoci' => 'required', + 'masker_oxigen' => 'required', + 'sabuk_pengaman' => 'required', + 'deskripsi_fungsi_keselamatan' => 'required', + + + 'sistem_ventilasi_ac' => 'required', + 'sistem_penerangan_kabin' => 'required', + 'panel_informasi_penumpang' => 'required', + 'sistem_hiburan_kabin' => 'required', + 'deskripsi_Interior' => 'required', + + + + 'faktor_positif.*' => 'nullable', + 'faktor_negatif.*' => 'nullable', + 'kesimpulan.*' => 'nullable', + 'catatan.*' => 'nullable', + + + ]; + } + private function getAssetDescriptionRules(): array { return [ @@ -229,6 +537,7 @@ class FormSurveyorRequest extends FormRequest 'fakta_negatif' => 'nullable|array', 'rute_menuju' => 'nullable', 'batas_batas' => 'nullable|array', + 'batas_batas_input' => 'nullable|array', 'kondisi_lingkungan' => 'nullable|array', 'kondisi_lain_bangunan' => 'nullable|array', 'informasi_dokument' => 'nullable', diff --git a/app/Http/Requests/PersetujuanPenawaranRequest.php b/app/Http/Requests/PersetujuanPenawaranRequest.php new file mode 100644 index 0000000..b33cc7a --- /dev/null +++ b/app/Http/Requests/PersetujuanPenawaranRequest.php @@ -0,0 +1,76 @@ + 'required|exists:penawaran_tender,id', + 'nomor_proposal_penawaran' => 'nullable|string|max:255', + 'tanggal_proposal_penawaran' => 'nullable|date', + 'biaya_final' => 'nullable|numeric|min:0', + 'sla_resume' => 'nullable|date', + 'sla_final' => 'nullable|date|after_or_equal:sla_resume', + 'catatan' => 'nullable|string', + 'attachment' => 'nullable|file|mimes:pdf,doc,docx|max:10240', // Max 10MB + 'region_id' => 'nullable|exists:regions,id', + 'status' => 'nullable|boolean', + 'authorized_status' => 'nullable|boolean', + 'authorized_at' => 'nullable|date', + 'authorized_by' => 'nullable|exists:users,id', + ]; + } + + /** + * Get custom messages for validator errors. + */ + public function messages() + : array + { + return [ + 'penawaran_id.required' => 'Penawaran ID wajib diisi.', + 'penawaran_id.exists' => 'Penawaran ID tidak valid.', + 'nomor_proposal_penawaran.required' => 'Nomor proposal penawaran wajib diisi.', + 'tanggal_proposal_penawaran.required' => 'Tanggal proposal penawaran wajib diisi.', + 'tanggal_proposal_penawaran.date' => 'Tanggal proposal penawaran harus berupa tanggal yang valid.', + 'biaya_final.required' => 'Biaya final wajib diisi.', + 'biaya_final.numeric' => 'Biaya final harus berupa angka.', + 'biaya_final.min' => 'Biaya final tidak boleh kurang dari 0.', + 'sla_resume.required' => 'SLA Resume wajib diisi.', + 'sla_resume.date' => 'SLA Resume harus berupa tanggal yang valid.', + 'sla_final.required' => 'SLA Final wajib diisi.', + 'sla_final.date' => 'SLA Final harus berupa tanggal yang valid.', + 'sla_final.after_or_equal' => 'SLA Final harus sama dengan atau setelah SLA Resume.', + 'attachment.file' => 'Attachment harus berupa file.', + 'attachment.mimes' => 'Attachment harus berupa file PDF, DOC, atau DOCX.', + 'attachment.max' => 'Ukuran attachment tidak boleh lebih dari 10MB.', + 'region_id.required' => 'Region ID wajib diisi.', + 'region_id.exists' => 'Region ID tidak valid.', + 'status.required' => 'Status wajib diisi.', + 'status.boolean' => 'Status harus berupa nilai boolean.', + 'authorized_status.boolean' => 'Status otorisasi harus berupa nilai boolean.', + 'authorized_at.date' => 'Tanggal otorisasi harus berupa tanggal yang valid.', + 'authorized_by.exists' => 'ID pengguna yang mengotorisasi tidak valid.', + ]; + } + } diff --git a/app/Http/Requests/SurveyorRequest.php b/app/Http/Requests/SurveyorRequest.php index 0762ad9..b6b1791 100644 --- a/app/Http/Requests/SurveyorRequest.php +++ b/app/Http/Requests/SurveyorRequest.php @@ -28,6 +28,10 @@ class SurveyorRequest extends FormRequest 'spek-bangunan' => 'spek_bangunan', 'lantai-unit' => 'lantai', 'view-unit' => 'view_unit', + 'jenis-pesawat' => 'jenis_pesawat', + 'model-alat-berat' => 'model_alat_berat', + 'jenis-kapal' => 'jenis_kapal', + 'jenis-kendaraan' => 'jenis_kendaraan', ]; /** diff --git a/app/Models/JenisKapal.php b/app/Models/JenisKapal.php new file mode 100644 index 0000000..169d29d --- /dev/null +++ b/app/Models/JenisKapal.php @@ -0,0 +1,24 @@ +belongsTo(KJPP::class, 'kjpp_rekanan_id', 'id'); } - - public function emailTenderLog(): BelongsTo - { - return $this->belongsTo(PenawaranEmailTenderLog::class, 'penawaran_id', 'id', PenawaranTender::class); - } } diff --git a/app/Models/PenawaranEmailTenderLog.php b/app/Models/PenawaranEmailTenderLog.php index 9048405..224c351 100644 --- a/app/Models/PenawaranEmailTenderLog.php +++ b/app/Models/PenawaranEmailTenderLog.php @@ -15,4 +15,9 @@ class PenawaranEmailTenderLog extends Model * The attributes that are mass assignable. */ protected $guarded = ['id']; + + public function penawaran() + { + return $this->belongsTo(PenawaranTender::class, 'penawaran_id', 'id'); + } } diff --git a/app/Models/PenawaranTender.php b/app/Models/PenawaranTender.php index f38d42e..16b8532 100644 --- a/app/Models/PenawaranTender.php +++ b/app/Models/PenawaranTender.php @@ -24,8 +24,17 @@ class PenawaranTender extends Model { return $this->hasMany(PenawaranDetailTender::class, 'penawaran_id', 'id')->where('status', '=', 1); } + + public function detail(){ + return $this->belongsTo(PenawaranDetailTender::class, 'id', 'penawaran_id')->where('status', 1); + } // andy add + public function emailTenderLog(): HasMany + { + return $this->hasMany(PenawaranEmailTenderLog::class, 'penawaran_id', 'id'); + } + public function penawaranKjpp() { return $this->hasMany(PenawaranDetailTender::class, 'penawaran_id'); diff --git a/app/Models/PenilaianTeam.php b/app/Models/PenilaianTeam.php index 8df88ef..a61b5dd 100644 --- a/app/Models/PenilaianTeam.php +++ b/app/Models/PenilaianTeam.php @@ -2,6 +2,7 @@ namespace Modules\Lpj\Models; +use Modules\Usermanagement\Models\User; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; use Modules\Lpj\Database\Factories\PenilaianTeamFactory; @@ -24,7 +25,7 @@ class PenilaianTeam extends Model public function team(){ - return $this->belongsTo(Team::class, 'team_id', 'id'); + return $this->belongsTo(Teams::class, 'team_id', 'id'); } public function penilaian(){ diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php index 0255e63..81b94b7 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -136,7 +136,7 @@ public function penawaranTender() { - return $this->hasMany(PenawaranTender::class, 'nomor_registrasi'); + return $this->belongsTo(PenawaranTender::class, 'nomor_registrasi', 'nomor_registrasi'); } public function region() diff --git a/app/Models/PersetujuanPenawaran.php b/app/Models/PersetujuanPenawaran.php new file mode 100644 index 0000000..d0658a6 --- /dev/null +++ b/app/Models/PersetujuanPenawaran.php @@ -0,0 +1,56 @@ + 'date', + 'sla_resume' => 'datetime', + 'sla_final' => 'datetime', + 'status' => 'boolean', + 'authorized_at' => 'datetime', + ]; + + // Relationship with Penawaran + public function penawaran() + { + return $this->belongsTo(PenawaranTender::class, 'penawaran_id'); + } + + // Relationship with Region + public function region() + { + return $this->belongsTo(Region::class); + } + + // Relationship with User (for authorized_by) + public function authorizedBy() + { + return $this->belongsTo(User::class, 'authorized_by'); + } + } diff --git a/database/migrations/2024_11_20_042242_create_jenis_kendaraan_table.php b/database/migrations/2024_11_20_042242_create_jenis_kendaraan_table.php new file mode 100644 index 0000000..6a6403e --- /dev/null +++ b/database/migrations/2024_11_20_042242_create_jenis_kendaraan_table.php @@ -0,0 +1,37 @@ +id(); + $table->string('code')->unique()->index(); + $table->string('name'); + $table->boolean('status')->default(true); + $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); + $table->timestamp('authorized_at')->nullable(); + $table->unsignedBigInteger('authorized_by')->nullable(); + $table->softDeletes(); + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('jenis_kendaraan'); + } +}; diff --git a/database/migrations/2024_11_20_042337_create_model_alat_berat_table.php b/database/migrations/2024_11_20_042337_create_model_alat_berat_table.php new file mode 100644 index 0000000..7176863 --- /dev/null +++ b/database/migrations/2024_11_20_042337_create_model_alat_berat_table.php @@ -0,0 +1,36 @@ +id(); + $table->string('code')->unique()->index(); + $table->string('name'); + $table->boolean('status')->default(true); + $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); + $table->timestamp('authorized_at')->nullable(); + $table->unsignedBigInteger('authorized_by')->nullable(); + $table->softDeletes(); + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('model_alat_berat'); + } +}; diff --git a/database/migrations/2024_11_20_042453_create_jenis_pesawat_table.php b/database/migrations/2024_11_20_042453_create_jenis_pesawat_table.php new file mode 100644 index 0000000..9cf0c61 --- /dev/null +++ b/database/migrations/2024_11_20_042453_create_jenis_pesawat_table.php @@ -0,0 +1,36 @@ +id(); + $table->string('code')->unique()->index(); + $table->string('name'); + $table->boolean('status')->default(true); + $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); + $table->timestamp('authorized_at')->nullable(); + $table->unsignedBigInteger('authorized_by')->nullable(); + $table->softDeletes(); + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('jenis_pesawat'); + } +}; diff --git a/database/migrations/2024_11_20_042545_create_jenis_kapal_table.php b/database/migrations/2024_11_20_042545_create_jenis_kapal_table.php new file mode 100644 index 0000000..3be6b80 --- /dev/null +++ b/database/migrations/2024_11_20_042545_create_jenis_kapal_table.php @@ -0,0 +1,37 @@ +id(); + $table->string('code')->unique()->index(); + $table->string('name'); + $table->boolean('status')->default(true); + $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); + $table->timestamp('authorized_at')->nullable(); + $table->unsignedBigInteger('authorized_by')->nullable(); + $table->softDeletes(); + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('jenis_kapal'); + } +}; diff --git a/database/migrations/2024_11_20_073420_update_penawaran_email_tender_log.php b/database/migrations/2024_11_20_073420_update_penawaran_email_tender_log.php new file mode 100644 index 0000000..3300063 --- /dev/null +++ b/database/migrations/2024_11_20_073420_update_penawaran_email_tender_log.php @@ -0,0 +1,28 @@ +text('error_message')->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('penawaran_email_tender_log', function (Blueprint $table) { + $table->text('error_message')->change(); + }); + } +}; diff --git a/database/migrations/2024_11_20_073530_update_persetujuan_penawaran_table.php b/database/migrations/2024_11_20_073530_update_persetujuan_penawaran_table.php new file mode 100644 index 0000000..5428933 --- /dev/null +++ b/database/migrations/2024_11_20_073530_update_persetujuan_penawaran_table.php @@ -0,0 +1,47 @@ +string('nomor_proposal_penawaran')->nullable()->change(); + $table->date('tanggal_proposal_penawaran')->nullable()->change(); + $table->string('biaya_final')->nullable()->change(); + $table->renameColumn('sls_resume', 'sla_resume'); + $table->datetime('sla_resume')->nullable()->change(); + $table->datetime('sla_final')->nullable()->change(); + $table->string('catatan')->nullable()->change(); + $table->string('attachment')->nullable()->change(); + $table->foreignId('region_id')->nullable()->change(); + $table->boolean('status')->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + */ + public function down() + : void + { + Schema::table('persetujuan_penawaran', function (Blueprint $table) { + $table->string('nomor_proposal_penawaran')->nullable(false)->change(); + $table->date('tanggal_proposal_penawaran')->nullable(false)->change(); + $table->string('biaya_final')->nullable(false)->change(); + $table->renameColumn('sla_resume', 'sls_resume'); + $table->datetime('sls_resume')->nullable(false)->change(); + $table->datetime('sla_final')->nullable(false)->change(); + $table->string('catatan')->nullable(false)->change(); + $table->string('attachment')->nullable(false)->change(); + $table->foreignId('region_id')->nullable(false)->change(); + $table->boolean('status')->nullable(false)->change(); + }); + } + }; diff --git a/module.json b/module.json index 126b921..db1356b 100644 --- a/module.json +++ b/module.json @@ -1,570 +1,815 @@ { - "name": "Lpj", - "alias": "lpj", - "database": "", - "description": "", - "keywords": [], - "priority": 0, - "providers": ["Modules\\Lpj\\Providers\\LpjServiceProvider"], - "files": ["app/Helpers/Lpj.php"], - "menu": { - "main": [ - { - "title": "Permohonan", - "path": "permohonan", - "icon": "ki-filled ki-questionnaire-tablet text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Registrasi", - "path": "registrasi", - "icon": "ki-filled ki-file-added text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Tender", - "path": "tender", - "icon": "ki-filled ki-category text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"], - "sub": [ - { - "title": "Data Proses Penawaran", - "path": "tender.prosespenawaran", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Data Penawaran Ulang", - "path": "tender.penawaran.ulang", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - } - ] - }, - { - "title": "Otorisasi Tender", - "path": "otorisasitender", - "icon": "ki-filled ki-category text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin","EO Appraisal","DD Appraisal"], - "sub": [ - { - "title": "Otorisasi Penawaran", - "path": "otorisasitender.penawaran", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin","EO Appraisal","DD Appraisal"] - } - ] - }, - { - "title": "SPK", - "path": "spk", - "icon": "ki-filled ki-file-added text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Registrasi Final", - "path": "registrasifinal", - "icon": "ki-filled ki-file-added text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Pembatalan", - "path": "", - "icon": "ki-filled ki-file-deleted text-lg text-danger", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Data Debitur", - "path": "debitur", - "icon": "ki-filled ki-people text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Authorization", - "path": "authorization", - "icon": "ki-filled ki-security-user text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-eo"] - }, - { - "title": "Assignment", - "path": "penilaian", - "icon": "ki-filled ki-badge text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "senior-officer"] - }, - { - "title": "Team Activity", - "path": "activity.progres", - "icon": "ki-filled ki-questionnaire-tablet text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","senior-officer"] - }, - { - "title": "Otorisator", - "path": "otorisator", - "icon": "ki-filled ki-security-user text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","senior-officer"], - "sub": [ - { - "title": "Pelaporan", - "path": "otorisator.pelaporan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","senior-officer"] - }, - { - "title": "Pembayaran", - "path": "otorisator.pembayaran", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","senior-officer"] - }, - { - "title": "Pembatalan", - "path": "otorisator.pembatalan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","senior-officer"] - }, - { - "title": "SLA", - "path": "otorisator.sla", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","senior-officer"] - } - ] - }, - { - "title": "Surveyor", - "path": "surveyor", - "icon": "ki-filled ki-questionnaire-tablet text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - - { - "title": "Activity", - "path": "activity", - "icon": "ki-filled ki-calendar-edit text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": [ - "administrator", - "pemohon-ao", - "pemohon-eo", - "admin", - "surveyor" - ] - }, - { - "title": "Penilai", - "path": "penilai", - "icon": "ki-filled ki-brush text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Laporan", - "path": "laporan", - "icon": "ki-filled ki-filter-tablet text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": [ - "administrator", - "pemohon-ao", - "pemohon-eo", - "admin", - "senior-officer" - ], - "sub": [ - { - "title": "Sederhana", - "path": "laporan.sederhana", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Standard", - "path": "laporan.standard", - "classes": "", - "attributes": [], - "permission": "", - "roles": [ - "administrator", - "pemohon-ao", - "pemohon-eo", - "admin", - "senior-officer" - ] - } - ] - }, - { - "title": "Resume", - "path": "resume", - "icon": "ki-filled ki-questionnaire-tablet text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - } + "name": "Lpj", + "alias": "lpj", + "database": "", + "description": "", + "keywords": [], + "priority": 0, + "providers": [ + "Modules\\Lpj\\Providers\\LpjServiceProvider" ], - "master": [ - { - "title": "Basic Data", - "path": "basicdata", - "icon": "ki-filled ki-category text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": [ - "administrator", - "pemohon-ao", - "pemohon-eo", - "admin", - "surveyor" - ], - "sub": [ - { - "title": "Jenis Fasilitas Kredit", - "path": "basicdata.jenis-fasilitas-kredit", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Jenis Legalitas Jaminan", - "path": "basicdata.jenis-legalitas-jaminan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Jenis Aset", - "path": "basicdata.jenis-jaminan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Jenis Dokumen", - "path": "basicdata.jenis-dokumen", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Tujuan Penilaian", - "path": "basicdata.tujuan-penilaian", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Nilai Plafond", - "path": "basicdata.nilai-plafond", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Hubungan Pemilik Jaminan", - "path": "basicdata.hubungan-pemilik-jaminan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Hubungan Penghuni Jaminan", - "path": "basicdata.hubungan-penghuni-jaminan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Arah Mata Angin", - "path": "basicdata.arah-mata-angin", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator"] - }, - { - "title": "Status Permohonan", - "path": "basicdata.status-permohonan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator"] - }, - { - "title": "Region", - "path": "basicdata.region", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin", "senior-officer"] - }, - { - "title": "Staff Appraisal", - "path": "basicdata.teams", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "senior-officer"] - }, - { - "title": "Jenis Penilaian", - "path": "basicdata.jenis-penilaian", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin", "senior-officer"] - }, - { - "title": "KJPP", - "path": "basicdata.kjpp", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Jenis Laporan", - "path": "basicdata.jenis_laporan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Tujuan Penilaian KJPP", - "path": "basicdata.tujuan_penilaian_kjpp", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Ijin Usaha", - "path": "basicdata.ijin_usaha", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "SLA", - "path": "basicdata.sla", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Bentuk", - "path": "basicdata.bentuk-tanah", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Kontur Tanah", - "path": "basicdata.kontur-tanah", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Posisi Kavling", - "path": "basicdata.posisi-kavling", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Ketinggian Tanah", - "path": "basicdata.ketinggian-tanah", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Kondisi Fisik Tanah", - "path": "basicdata.kondisi-fisik-tanah", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Jenis Bangunan", - "path": "basicdata.jenis-bangunan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Kondisi Bangunan", - "path": "basicdata.kondisi-bangunan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Sifat Bangunan", - "path": "basicdata.sifat-bangunan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - - { - "title": "Sarana Pelengkap", - "path": "basicdata.sarana-pelengkap", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - - { - "title": "Lalu Lintas Sekitar", - "path": "basicdata.lalu-lintas-lokasi", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Tingkat Keramaian", - "path": "basicdata.tingkat-keramaian", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Masyarakat Sekitar", - "path": "basicdata.gol-mas-sekitar", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Lantai Unit", - "path": "basicdata.lantai-unit", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "View unit", - "path": "basicdata.view-unit", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Spesifikasi Bangunan", - "path": "basicdata.spek-bangunan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Kategori Speksikasi Bangunan", - "path": "basicdata.spek-kategori-bangunan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - }, - { - "title": "Perkerasan jalan", - "path": "basicdata.perkerasan-jalan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator","surveyor"] - } - - - ] - } + "files": [ + "app/Helpers/Lpj.php" ], - "system": [] - } + "menu": { + "main": [ + { + "title": "Permohonan", + "path": "permohonan", + "icon": "ki-filled ki-questionnaire-tablet text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Persetujuan Penawaran", + "path": "persetujuan-penawaran", + "icon": "ki-filled ki-questionnaire-tablet text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao" + ] + }, + { + "title": "Registrasi", + "path": "registrasi", + "icon": "ki-filled ki-file-added text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "Tender", + "path": "tender", + "icon": "ki-filled ki-category text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ], + "sub": [ + { + "title": "Data Proses Penawaran", + "path": "tender.prosespenawaran", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "Data Penawaran Ulang", + "path": "tender.penawaran.ulang", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + } + ] + }, + { + "title": "Otorisasi Tender", + "path": "otorisasitender", + "icon": "ki-filled ki-category text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin", + "EO Appraisal", + "DD Appraisal" + ], + "sub": [ + { + "title": "Otorisasi Penawaran", + "path": "otorisasitender.penawaran", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin", + "EO Appraisal", + "DD Appraisal" + ] + } + ] + }, + { + "title": "SPK", + "path": "spk", + "icon": "ki-filled ki-file-added text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "Registrasi Final", + "path": "registrasifinal", + "icon": "ki-filled ki-file-added text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "Pembatalan", + "path": "", + "icon": "ki-filled ki-file-deleted text-lg text-danger", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Data Debitur", + "path": "debitur", + "icon": "ki-filled ki-people text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Authorization", + "path": "authorization", + "icon": "ki-filled ki-security-user text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-eo" + ] + }, + { + "title": "Assignment", + "path": "penilaian", + "icon": "ki-filled ki-badge text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "senior-officer" + ] + }, + { + "title": "Team Activity", + "path": "activity.progres", + "icon": "ki-filled ki-questionnaire-tablet text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "senior-officer" + ] + }, + { + "title": "Otorisator", + "path": "otorisator", + "icon": "ki-filled ki-security-user text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "senior-officer" + ], + "sub": [ + { + "title": "Pelaporan", + "path": "otorisator.pelaporan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "senior-officer" + ] + }, + { + "title": "Pembayaran", + "path": "otorisator.pembayaran", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "senior-officer" + ] + }, + { + "title": "Pembatalan", + "path": "otorisator.pembatalan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "senior-officer" + ] + }, + { + "title": "SLA", + "path": "otorisator.sla", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "senior-officer" + ] + } + ] + }, + { + "title": "Surveyor", + "path": "surveyor", + "icon": "ki-filled ki-questionnaire-tablet text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Activity", + "path": "activity", + "icon": "ki-filled ki-calendar-edit text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo", + "admin", + "surveyor" + ] + }, + { + "title": "Penilai", + "path": "penilai", + "icon": "ki-filled ki-brush text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Laporan", + "path": "laporan", + "icon": "ki-filled ki-filter-tablet text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo", + "admin", + "senior-officer" + ], + "sub": [ + { + "title": "Sederhana", + "path": "laporan.sederhana", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "Standard", + "path": "laporan.standard", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo", + "admin", + "senior-officer" + ] + } + ] + }, + { + "title": "Resume", + "path": "resume", + "icon": "ki-filled ki-questionnaire-tablet text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + } + ], + "master": [ + { + "title": "Basic Data", + "path": "basicdata", + "icon": "ki-filled ki-category text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo", + "admin", + "surveyor" + ], + "sub": [ + { + "title": "Jenis Fasilitas Kredit", + "path": "basicdata.jenis-fasilitas-kredit", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Jenis Legalitas Jaminan", + "path": "basicdata.jenis-legalitas-jaminan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Jenis Aset", + "path": "basicdata.jenis-jaminan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Jenis Dokumen", + "path": "basicdata.jenis-dokumen", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Tujuan Penilaian", + "path": "basicdata.tujuan-penilaian", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Nilai Plafond", + "path": "basicdata.nilai-plafond", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Hubungan Pemilik Jaminan", + "path": "basicdata.hubungan-pemilik-jaminan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Hubungan Penghuni Jaminan", + "path": "basicdata.hubungan-penghuni-jaminan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo" + ] + }, + { + "title": "Arah Mata Angin", + "path": "basicdata.arah-mata-angin", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator" + ] + }, + { + "title": "Status Permohonan", + "path": "basicdata.status-permohonan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator" + ] + }, + { + "title": "Region", + "path": "basicdata.region", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin", + "senior-officer" + ] + }, + { + "title": "Staff Appraisal", + "path": "basicdata.teams", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "senior-officer" + ] + }, + { + "title": "Jenis Penilaian", + "path": "basicdata.jenis-penilaian", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin", + "senior-officer" + ] + }, + { + "title": "KJPP", + "path": "basicdata.kjpp", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "Jenis Laporan", + "path": "basicdata.jenis_laporan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "Tujuan Penilaian KJPP", + "path": "basicdata.tujuan_penilaian_kjpp", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "Ijin Usaha", + "path": "basicdata.ijin_usaha", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "SLA", + "path": "basicdata.sla", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, + { + "title": "Bentuk", + "path": "basicdata.bentuk-tanah", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Kontur Tanah", + "path": "basicdata.kontur-tanah", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Posisi Kavling", + "path": "basicdata.posisi-kavling", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Ketinggian Tanah", + "path": "basicdata.ketinggian-tanah", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Kondisi Fisik Tanah", + "path": "basicdata.kondisi-fisik-tanah", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Jenis Bangunan", + "path": "basicdata.jenis-bangunan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Kondisi Bangunan", + "path": "basicdata.kondisi-bangunan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Sifat Bangunan", + "path": "basicdata.sifat-bangunan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Sarana Pelengkap", + "path": "basicdata.sarana-pelengkap", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Lalu Lintas Sekitar", + "path": "basicdata.lalu-lintas-lokasi", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Tingkat Keramaian", + "path": "basicdata.tingkat-keramaian", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Masyarakat Sekitar", + "path": "basicdata.gol-mas-sekitar", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Lantai Unit", + "path": "basicdata.lantai-unit", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "View unit", + "path": "basicdata.view-unit", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Spesifikasi Bangunan", + "path": "basicdata.spek-bangunan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Kategori Speksikasi Bangunan", + "path": "basicdata.spek-kategori-bangunan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Perkerasan jalan", + "path": "basicdata.perkerasan-jalan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Jenis Pesawat", + "path": "basicdata.jenis-pesawat", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Jenis kapal", + "path": "basicdata.jenis-kapal", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Jenis Kendaraan", + "path": "basicdata.jenis-kendaraan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + }, + { + "title": "Model Alat Berat", + "path": "basicdata.model-alat-berat", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "surveyor" + ] + } + ] + } + ], + "system": [] + } } diff --git a/resources/views/activity/progres_activity/index.blade.php b/resources/views/activity/progres_activity/index.blade.php index 4ed5286..3884136 100644 --- a/resources/views/activity/progres_activity/index.blade.php +++ b/resources/views/activity/progres_activity/index.blade.php @@ -210,7 +210,11 @@ }, due_date: { title: 'Due Date', - render: (item, data) => `${data.due_date || ''}`, + render: (item, data) => { + const mulai = new Date(data.permohonan.created_at); + const selesai = new Date(data.tanggal_kunjungan) + return `${mulai.getDate()}-${mulai.getMonth() + 1}-${mulai.getFullYear()} - ${selesai.getDate()}-${selesai.getMonth() + 1}-${selesai.getFullYear()}` + }, }, paparan: { title: 'Paparan', @@ -236,6 +240,11 @@ }); }); + + + + + function formatDateFromISO(isoDateString) { const date = new Date(isoDateString); const day = String(date.getDate()).padStart(2, '0'); diff --git a/resources/views/jenis_jaminan/create.blade.php b/resources/views/jenis_jaminan/create.blade.php index a12b7ee..382377f 100644 --- a/resources/views/jenis_jaminan/create.blade.php +++ b/resources/views/jenis_jaminan/create.blade.php @@ -75,7 +75,7 @@ name="form_kategori[]" multiple="multiple"> - @foreach (['tanah', 'bangunan', 'kapal', 'kendaraan', 'mesin', 'pesawat', 'alat-berat', 'apartemen-kantor','lingkungan', 'fakta'] as $item) + @foreach (['tanah', 'bangunan', 'kapal', 'kendaraan', 'mesin', 'pesawat', 'alat-berat', 'apartemen-kantor','lingkungan', 'fakta','informasi'] as $item)