Merge branch 'staging' of https://git.putrakuningan.com/daengdeni/lpj into tender

This commit is contained in:
2024-11-13 18:10:49 +07:00
49 changed files with 5111 additions and 2037 deletions

View File

@@ -82,7 +82,16 @@ function checkKelengkapanDetailKJPP($id)
// detail_penawaran apakah isian biaya_penawaran, attachment, dokumen_persetujuan sudah lengkap?
$query = PenawaranDetailTender::select('id')
->where('penawaran_id', '=', $id)
->where('status','=',1)
->where(function ($query) {
// no_proposal
$query->orWhere('no_proposal', '', "");
$query->orWhereNull('no_proposal');
// tgl_proposal
$query->orWhere('tgl_proposal', '', "");
$query->orWhereNull('tgl_proposal');
$query->orWhere('biaya_penawaran', '', "");
$query->orWhereNull('biaya_penawaran');

View File

@@ -79,6 +79,7 @@
'jenis_legalitas_jaminan_id' => $value,
'name' => $request->name[$key],
'keterangan' => $request->keterangan[$key],
'details' => isset($request->custom_field[$key]) ? json_encode($request->custom_field[$key]) : ''
];
$dokumenJaminan = [];
@@ -234,6 +235,7 @@
'jenis_legalitas_jaminan_id' => $value,
'name' => $request->name[$key],
'keterangan' => $request->keterangan[$key],
'details' => isset($request->custom_field[$key]) ? json_encode($request->custom_field[$key]) : ''
];
$dokumenJaminan = [];

View File

@@ -215,7 +215,7 @@ class PenilaianController extends Controller
$teamPenilai = $userTeam->flatMap(function ($team) {
return $team->teamsUsers->filter(function ($teamUser) {
return $teamUser->user->roles->contains(function ($role) {
return $role->name === 'surveyor' || $role->name === 'surveyor-penilai';
return $role->name === 'surveyor' || $role->name === 'surveyor-penilai' || $role->name === 'administrator';
});
})->map(function ($teamUser) {
return $teamUser->user;

View File

@@ -5,6 +5,7 @@ namespace Modules\Lpj\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Http\Controllers\Controller;
use Carbon\Carbon;
use Exception;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Http\JsonResponse;
@@ -14,6 +15,7 @@ use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\DB;
use Modules\Lpj\Models\KJPP;
use Modules\Lpj\Models\PenawaranDetailTender;
use Modules\Lpj\Models\PenawaranDetailTenderLog;
use Modules\Lpj\Models\PenawaranTender;
use Modules\Lpj\Models\Permohonan;
@@ -38,7 +40,7 @@ class ProsesPenawaranController extends Controller
}
// Retrieve data from the database
$query = PenawaranTender::query()->where('status', '=', 'tender')->withCount('penawarandetails');
$query = PenawaranTender::query()->whereIn('status', ['tender', 'proposal-tender'])->withCount('penawarandetails');
// Apply search filter if provided
if ($request->has('search') && !empty($request->get('search'))) {
@@ -126,7 +128,18 @@ class ProsesPenawaranController extends Controller
}
$i++;
}
DB::enableQueryLog();
$kjpps = KJPP::whereNotIn('id', function($query) use ($id) {
$query->select('kjpp_rekanan_id')
->from('detail_penawaran')
->where('penawaran_id', '=', $id)
->where('status','=',1); // status=1 (masih aktif)
})
->select('id', 'name', 'code') // Pilih beberapa kolom sekaligus
->get();
$sql=DB::getQueryLog();
$data['sql'] = $sql;
$data['kjpps'] = $kjpps;
$data['penawaran'] = $penawaran;
$data['penawrandetails'] = $penawrandetails;
$data['status'] = 'success';
@@ -154,65 +167,52 @@ class ProsesPenawaranController extends Controller
$data = array();
$dataPenawaranDetail = array();
if (request()->ajax()) {
$validator = ProsesPenawaranController::rulesEditnya($request, $id);
try {
if ($validator['fails']) {
$data['message'] = $validator['errors'];
$data['status'] = 'error';
}
else
{
try {
$dataPenawaranDetail = ['updated_by' => Auth::id(),
'updated_at' => now(),
'no_proposal' => $request->no_proposal,
'tgl_proposal' => $request->tgl_proposal,
'biaya_penawaran' => str_replace(".","",$request->biaya_penawaran)
];
$dataPenawaranDetail = ['updated_by' => Auth::id(),
'updated_at' => now(),
'biaya_penawaran' => str_replace(".","",$request->biaya_penawaran)
];
if ($request->hasFile('dokumen_persetujuan'))
if ($request->hasFile('dokumen_persetujuan'))
{
$file_tmp = $request->file('dokumen_persetujuan');
$folderPath = 'uploads/penawaran/';
if ($file_tmp->isValid())
{
$file_tmp = $request->file('dokumen_persetujuan');
$folderPath = 'uploads/penawaran/';
if ($file_tmp->isValid())
{
$myFile=$file_tmp->getClientOriginalName(); // nama file with extension
$file_name = pathinfo($myFile, PATHINFO_FILENAME); // nama file without extension
$myFile=$file_tmp->getClientOriginalName(); // nama file with extension
$file_name = pathinfo($myFile, PATHINFO_FILENAME); // nama file without extension
$extension = $file_tmp->getClientOriginalExtension();
// kjppID_penawaranID_namaFile_userID_time
$newFileName = $request->kjpp_rekanan_id.'_'.$id.'_'.$file_name.'_'.Auth::user()->id."_".time() .'.'. $extension;
Storage::disk('public')->put($folderPath.'/'.$newFileName,file_get_contents($file_tmp));
$extension = $file_tmp->getClientOriginalExtension();
// kjppID_penawaranID_namaFile_userID_time
$newFileName = $request->kjpp_rekanan_id.'_'.$id.'_'.$file_name.'_'.Auth::user()->id."_".time() .'.'. $extension;
Storage::disk('public')->put($folderPath.'/'.$newFileName,file_get_contents($file_tmp));
$newFileNameWithPath = $folderPath . $newFileName;
$dataPenawaranDetail['attachment'] = $myFile;
$dataPenawaranDetail['dokumen_persetujuan'] = $newFileNameWithPath;
$penawarandetail = PenawaranDetailTender::findOrFail($id);
$penawarandetail->update($dataPenawaranDetail);
$data['detailpenawaran_id'] = $id;
$data['status'] = 'success';
$data['message'] ['message_success'] = array('Proses Penawarn KJPP successfully');
}
else
{
$data['status'] = 'error';
$data['message'] ['check_file_jenis'] = array("Silahkan upload file pdf");
}
$newFileNameWithPath = $folderPath . $newFileName;
$dataPenawaranDetail['attachment'] = $myFile;
$dataPenawaranDetail['dokumen_persetujuan'] = $newFileNameWithPath;
}
else
{
$data['status'] = 'error';
$data['message'] ['check_file'] = array("Silahkan upload file");
$data['message'] ['check_file_jenis'] = array("Silahkan upload file pdf");
}
} catch (Exception $e) {
$data['status'] = 'error';
$data['message'] ['message_error_try_catch'] = array('Proses Penawarn KJPP failed.');
}
}
$penawarandetail = PenawaranDetailTender::findOrFail($id);
$penawarandetail->update($dataPenawaranDetail);
$data['detailpenawaran_id'] = $id;
$data['status'] = 'success';
$data['message'] ['message_success'] = array('Proses Penawarn KJPP successfully');
} catch (Exception $e) {
$data['status'] = 'error';
$data['message'] ['message_error_try_catch'] = array('Proses Penawarn KJPP failed.');
}
} else {
$data['status'] = 'error';
@@ -338,4 +338,492 @@ class ProsesPenawaranController extends Controller
$prosespenawaran = PenawaranTender::find($id);
return view('lpj::prosespenawaran.show', compact('id', 'prosespenawaran'));
}
public function updateDraft(Request $request, $id): JsonResponse
{
// $id = penawaran.id
// init
$data = array();
$dataPenawaranDetail = array();
$failed = 0;
DB::beginTransaction();
try
{
// update detail_penawaran
$detail_penawaran_ids = $request->input('prosespenawaran_penawarandetail_id', []);
$no_proposals = $request->input('prosespenawaran_no_proposal', []);
$tgl_proposals = $request->input('prosespenawaran_tgl_proposal', []);
$biaya_penawarans = $request->input('prosespenawaran_biayaPenawaran', []);
$dokumen_penawarans = $request->file('prosespenawaran_dokumenPersetujuan');
$tot_kjpp = sizeof($detail_penawaran_ids);
if($tot_kjpp>0)
{
// loop
for($i=0;$i<$tot_kjpp;$i++)
{
$detail_penawaran_id= $detail_penawaran_ids[$i];
$dataPenawaranDetail = [
'no_proposal' => $no_proposals[$i],
'tgl_proposal' => $tgl_proposals[$i],
'biaya_penawaran' => str_replace(".","",$biaya_penawarans[$i]), // 'biaya_penawaran' => str_replace(".","",$request->biaya_penawaran)
'updated_by' => Auth::id(),
'updated_at' => now(),
];
$penawarandetail = PenawaranDetailTender::find($detail_penawaran_id);
if ($dokumen_penawarans)
{
if (is_array($dokumen_penawarans) && array_key_exists($i, $dokumen_penawarans))
{
$file_tmp = $dokumen_penawarans[$i];
if($file_tmp->isValid())
{
$folderPath = 'uploads/penawaran/';
$myFile=$file_tmp->getClientOriginalName(); // nama file with extension
$file_name = pathinfo($myFile, PATHINFO_FILENAME); // nama file without extension
$extension = $file_tmp->getClientOriginalExtension();
// kjppID_penawaranID_namaFile_userID_time
$newFileName = $penawarandetail->kjpp_rekanan_id.'_'.$penawarandetail->penawaran_id.'_'.$file_name.'_'.Auth::user()->id."_".time() .'.'. $extension;
Storage::disk('public')->put($folderPath.'/'.$newFileName,file_get_contents($file_tmp));
$newFileNameWithPath = $folderPath . $newFileName;
$dataPenawaranDetail['attachment'] = $myFile;
$dataPenawaranDetail['dokumen_persetujuan'] = $newFileNameWithPath;
}
}
}
$checkStatus = $penawarandetail->update($dataPenawaranDetail);
if(!$checkStatus)
$failed++;
}
if($failed>0)
{
DB::rollBack();
$data['status'] = 'error';
$data['message'] ['message_error'] = array('Proses Draft Penawaran KJPP failed');
}
else
{
DB::commit();
$data['status'] = 'success';
$data['message'] ['message_success'] = array('Proses Draft Penawaran KJPP successfully');
}
}
else
{
$data['status'] = 'error';
$data['message'] ['message_error'] = array('Data inti tidak ada.');
}
}
catch (Exception $e)
{
// dd($e);
DB::rollBack();
$data['status'] = 'error';
$data['message'] ['message_error_try_catch'] = array('Proses Draft Penawaran KJPP failed.');
}
return response()->json($data);
}
public function store(Request $request): JsonResponse
{
// init
$data = array();
// $data['request']=$request->all();
$dataPenawaranDetail = array();
try
{
$dataPenawaranDetail = [
'penawaran_id' => $request->penawaran_id,
'kjpp_rekanan_id' => $request->kjpp_id,
'created_by' => Auth::id(),
'created_at' => Carbon::now()
];
PenawaranDetailTender::create($dataPenawaranDetail);
$data['status'] = 'success';
$data['message'] ['message_success'] = array('Proses Tambah KJPP successfully');
}
catch (Exception $e)
{
// dd($e);
$data['status'] = 'error';
$data['message'] ['message_error_try_catch'] = array('Proses Tambah KJPP failed.');
}
return response()->json($data);
}
public function editulang($id)
{
// id ==> penawaran.id
return view('lpj::prosespenawaran.editulang', compact('id'));
}
public function setDataUlang(Request $request): JsonResponse
{
$data = array();
$penawaran = array();
$penawrandetails = array();
if (request()->ajax()) {
$id = $request->id;
$penawaran = PenawaranTender::where('status','=','proposal-tender')->find($id);
if ($penawaran) {
$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();
$i=0;
foreach($penawrandetails as $obj)
{
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++;
}
$penawaranString = "";
if($penawaran->status)
{
$penawaranString = convertSlug($penawaran->status);
$penawaran->status = $penawaranString;
}
$kjpps = KJPP::whereNotIn('id', function($query) use ($id) {
$query->select('kjpp_rekanan_id')
->from('detail_penawaran')
->where('penawaran_id', '=', $id)
->where('status','=',1); // status=1 (masih aktif)
})
->select('id', 'name', 'code') // Pilih beberapa kolom sekaligus
->get();
$data['kjpps'] = $kjpps;
$data['penawaran'] = $penawaran;
$data['penawrandetails'] = $penawrandetails;
$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");
}
return response()->json($data);
}
public function updateKJPPStatusUlang(Request $request, $id): JsonResponse
{
// message menggunakan SweetAlert2
// init
$data = array();
$dataDetailPenawaran = array();
// cek masa aktif penawaran
$detailpenawaran = PenawaranDetailTender::find($id);
$checkActiveDateRange = checkActiveDateRangePenawaran($detailpenawaran->penawaran_id);
// cek masa aktif penawaran
// cek apakah blm di approve (penawaran.status = proposal-tender)
$penawaran = PenawaranTender::find($detailpenawaran->penawaran_id);
// cek apakah blm di approve (penawaran.status = proposal-tender)
if($checkActiveDateRange && ('proposal-tender'==$penawaran->status))
{
try {
$data['id']=$id;
$dataDetailPenawaran = ['status' => '0',
'updated_by' => Auth::id(),
'updated_at' => now()
];
$detailpenawaran->update($dataDetailPenawaran);
$data['status'] = 'success';
$data['message'] ['message_success'] = array('Sukses delete Penawaran KJPP '.$request->kjppName);
} catch (Exception $e) {
$data['status'] = 'error';
$data['message'] ['message_error_try_catch'] = array("Gagal delete Penawaran KJPP ".$request->kjppName);
// $data['message']['message_error'] = array("Gagal delete Penawaran KJPP ".$request->kjppName);
}
}
else
{
$data['status'] = 'error';
$data['message']['active_date_range'] = array("Penawaran sudah di tutup");
// $data['message']['message_error'] = array("Penawaran sudah di tutup");
}
return response()->json($data);
}
public function updateulang(Request $request, $id): JsonResponse
{
// id ==> detail_penawaran.id
// init
$data = array();
$dataDetailPenawaranLog = array();
$dataDetailPenawaran = array();
$pleaseCommit= true;
if (request()->ajax()) {
$validator = ProsesPenawaranController::rulesEditUlangnya($request, $id);
if ($validator['fails']) {
$data['message'] = $validator['errors'];
$data['status'] = 'error';
}
else
{
// cek masa aktif penawaran
$detailpenawaran = PenawaranDetailTender::find($id);
$checkActiveDateRange = checkActiveDateRangePenawaran($detailpenawaran->penawaran_id);
// cek masa aktif penawaran
// cek apakah blm di approve (penawaran.status = proposal-tender)
$penawaran = PenawaranTender::find($detailpenawaran->penawaran_id);
// cek apakah blm di approve (penawaran.status = proposal-tender)
if($checkActiveDateRange && ('proposal-tender'==$penawaran->status))
{
DB::beginTransaction();
try {
$dataDetailPenawaranLog = [
'detail_penawaran_id' =>$detailpenawaran->id,
'kjpp_rekanan_id' =>$detailpenawaran->kjpp_rekanan_id,
'penawaran_id' =>$detailpenawaran->penawaran_id,
'biaya_penawaran' =>$detailpenawaran->biaya_penawaran,
'no_proposal' =>$detailpenawaran->no_proposal,
'tgl_proposal' =>$detailpenawaran->tgl_proposal,
'attachment' =>$detailpenawaran->attachment,
'dokumen_persetujuan' =>$detailpenawaran->dokumen_persetujuan,
'status' =>$detailpenawaran->status,
'authorized_status' =>$detailpenawaran->authorized_status,
'authorized_at' =>$detailpenawaran->authorized_at,
'authorized_at' =>$detailpenawaran->authorized_at,
'created_at' =>$detailpenawaran->created_at,
'updated_at' =>$detailpenawaran->updated_at,
'deleted_at' =>$detailpenawaran->deleted_at,
'created_by' =>$detailpenawaran->created_by,
'updated_by' =>$detailpenawaran->updated_by,
'deleted_by' =>$detailpenawaran->deleted_by
];
PenawaranDetailTenderLog::create($dataDetailPenawaranLog);
$biaya_penawaran="";
if($request->biaya_penawaran)
$biaya_penawaran= str_replace(".","",$request->biaya_penawaran);
$dataDetailPenawaran = ['updated_by' => Auth::id(),
'updated_at' => now(),
'no_proposal' => $request->no_proposal,
'tgl_proposal' => $request->tgl_proposal,
'biaya_penawaran' => $biaya_penawaran
];
if ($request->hasFile('dokumen_persetujuan'))
{
$file_tmp = $request->file('dokumen_persetujuan');
$folderPath = 'uploads/penawaran/';
if ($file_tmp->isValid())
{
$myFile=$file_tmp->getClientOriginalName(); // nama file with extension
$file_name = pathinfo($myFile, PATHINFO_FILENAME); // nama file without extension
$extension = $file_tmp->getClientOriginalExtension();
// kjppID_penawaranID_namaFile_userID_time
$newFileName = $request->kjpp_rekanan_id.'_'.$id.'_'.$file_name.'_'.Auth::user()->id."_".time() .'.'. $extension;
Storage::disk('public')->put($folderPath.'/'.$newFileName,file_get_contents($file_tmp));
$newFileNameWithPath = $folderPath . $newFileName;
$dataDetailPenawaran['attachment'] = $myFile;
$dataDetailPenawaran['dokumen_persetujuan'] = $newFileNameWithPath;
}
else
{
$pleaseCommit=false;
$data['status'] = 'error';
$data['message']['check_file_jenis'] = array("Silahkan upload file pdf");
}
}
else
{
$data['status'] = 'error';
$data['message']['check_file'] = array("Silahkan upload file");
}
$detailpenawaran->update($dataDetailPenawaran);
if($pleaseCommit)
{
DB::commit();
$data['id'] = $id;
$data['detailpenawaran'] = $detailpenawaran;
$data['status'] = 'success';
$data['message']['message_success'] = array('Proses Penawarn KJPP Ulang successfully');
}
else
{
DB::rollBack();
$data['status'] = 'error';
$data['message']['message_error'] = array("Proses Penawarn KJPP Ulang failed..");
}
} catch (Exception $e) {
DB::rollBack();
$data['status'] = 'error';
$data['message']['message_error_try_catch'] = array('Proses Penawarn KJPP Ulang failed.');
}
}
else
{
$data['status'] = 'error';
$data['message']['active_date_range'] = array("Penawaran sudah di tutup");
}
}
} else {
$data['status'] = 'error';
$data['message']['message_ajax'] = array("no ajax request");
}
return response()->json($data);
}
public function rulesEditUlangnya($request, $id)
{
$validateIt = [
// 'name' diambil dari definisi parameter yang di kirim pada POST Data
'no_proposal' => 'required',
'tgl_proposal' => 'required',
'biaya_penawaran' => 'required',
'dokumen_persetujuan' => 'required|file|mimes:pdf'
];
$messageIt = [
'no_proposal.required' => 'Silahkan isi No Proposal',
'tgl_proposal.required' => 'Silahkan isi Tanggal Penawaran',
'biaya_penawaran.required' => 'Silahkan isi Biaya Penawaran',
'dokumen_persetujuan.required' => 'Silahkan isi dokumen',
'dokumen_persetujuan.file' => 'Silahkan isi file',
'dokumen_persetujuan.mimes' => 'Silahkan upload pdf'
];
$validator = Validator::make($request->all(), $validateIt, $messageIt);
$data['fails'] = $validator->fails();
$data['errors'] = $validator->errors();
return $data;
}
public function storeUlang(Request $request): JsonResponse
{
// init
$data = array();
// $data['request']=$request->all();
$dataDetailPenawaran = array();
// cek masa aktif penawaran
$checkActiveDateRange = checkActiveDateRangePenawaran($request->penawaran_id);
// cek masa aktif penawaran
// cek apakah blm di approve (penawaran.status = proposal-tender)
$penawaran = PenawaranTender::find($request->penawaran_id);
// cek apakah blm di approve (penawaran.status = proposal-tender)
if($checkActiveDateRange && ('proposal-tender'==$penawaran->status))
{
try
{
$biaya_penawaran="";
if($request->biaya_penawaran)
$biaya_penawaran= str_replace(".","",$request->biaya_penawaran);
$dataDetailPenawaran = [
'kjpp_rekanan_id' => $request->kjpp_rekanan_id,
'no_proposal' => $request->no_proposal,
'tgl_proposal' => $request->tgl_proposal,
'biaya_penawaran' => $biaya_penawaran,
'penawaran_id' => $request->penawaran_id,
'created_by' => Auth::id(),
'created_at' => Carbon::now()
];
if ($request->hasFile('dokumen_persetujuan'))
{
$file_tmp = $request->file('dokumen_persetujuan');
$folderPath = 'uploads/penawaran/';
if ($file_tmp->isValid())
{
$myFile=$file_tmp->getClientOriginalName(); // nama file with extension
$file_name = pathinfo($myFile, PATHINFO_FILENAME); // nama file without extension
$extension = $file_tmp->getClientOriginalExtension();
// kjppID_penawaranID_namaFile_userID_time
$newFileName = $request->kjpp_rekanan_id.'_'.$request->penawaran_id.'_'.$file_name.'_'.Auth::user()->id."_".time() .'.'. $extension;
Storage::disk('public')->put($folderPath.'/'.$newFileName,file_get_contents($file_tmp));
$newFileNameWithPath = $folderPath . $newFileName;
$dataDetailPenawaran['attachment'] = $myFile;
$dataDetailPenawaran['dokumen_persetujuan'] = $newFileNameWithPath;
}
else
{
$pleaseCommit=false;
$data['status'] = 'error';
$data['message']['check_file_jenis'] = array("Silahkan upload file pdf");
}
}
else
{
$data['status'] = 'error';
$data['message']['check_file'] = array("Silahkan upload file");
}
PenawaranDetailTender::create($dataDetailPenawaran);
$data['status'] = 'success';
$data['message'] ['message_success'] = array('Proses Tambah KJPP Ulang successfully');
}
catch (Exception $e)
{
dd($e);
$data['status'] = 'error';
$data['message'] ['message_error_try_catch'] = array('Proses Tambah KJPP Ulang failed.');
}
}
else
{
$data['status'] = 'error';
$data['message']['active_date_range'] = array("Penawaran sudah di tutup");
}
return response()->json($data);
}
}

View File

@@ -34,7 +34,9 @@ use Modules\Lpj\Models\Denah;
use Modules\Lpj\Models\FotoJaminan;
use Modules\Lpj\Models\Lingkungan;
use Modules\Lpj\Models\LantaiUnit;
use Modules\Lpj\Models\Teams;
use Modules\Lpj\Models\Lantai;
use Modules\Lpj\Models\Inspeksi;
use Modules\Lpj\Models\ViewUnit;
use Modules\Lpj\Models\ObjekJaminan;
use Modules\Lpj\Models\RuteJaminan;
@@ -121,6 +123,8 @@ class SurveyorController extends Controller
->where('permohonan_id', $id)
->get();
$inpeksi = Inspeksi::where('permohonan_id', $id)->get();
$forminspeksi = json_decode($inpeksi[0]->data_form, true);
return view('lpj::surveyor.detail', compact(
@@ -151,38 +155,123 @@ class SurveyorController extends Controller
*/
public function store(FormSurveyorRequest $request)
{
$validatedData = $request->validated();
DB::beginTransaction();
try {
$analisa = Analisa::create($validatedData);
if ($analisa) {
$validatedData['analisa_id'] = $analisa->id;
$data = $request->validated();
if ($data) {
try {
switch ($validatedData['action']) {
case 'tanah_bangunan':
$this->handleTanahBangunan($validatedData, $request);
break;
case 'unit':
$this->handleUnit($validatedData);
break;
default:
throw new \Exception('Invalid action type');
}
AnalisaLingkungan::create($validatedData);
$validatedData['foto_tempat'] = $this->uploadFile($request->file('foto_tempat'), 'foto_tempat');
AnalisaFakta::create($validatedData);
$formatTanahJson = [
'debitur_perwakilan' => $data['debitur_perwakilan'] ?? [],
'jenis_asset' => $data['jenis_asset'] ?? null,
'jenis_asset_tidak_sesuai' => $data['jenis_asset_tidak_sesuai'] ?? null,
'alamat_sesuai' => $data['alamat_sesuai'] ?? null,
'alamat_tidak_sesuai' => $data['alamat_tidak_sesuai'] ?? null,
'nama_jalan' => $data['nama_jalan'] ?? null,
'desa_kelurahan' => $data['desa_kelurahan'] ?? null,
'kecamatan' => $data['kecamatan'] ?? null,
'kota_kabupaten' => $data['kota_kabupaten'] ?? null,
'provinsi' => $data['provinsi'] ?? null,
'kordinat_lng' => $data['kordinat_lng'] ?? null,
'kordinat_lat' => $data['kordinat_lat'] ?? null,
'luas_tanah' => $data['luas_tanah'] ?? null,
'luas_tanah_tidak_sesuai' => $data['luas_tanah_tidak_sesuai'] ?? null,
'hadap_mata_angin' => $data['hadap_mata_angin'] ?? null,
'hadap_mata_angin_tidak_sesuai' => $data['hadap_mata_angin_tidak_sesuai'] ?? null,
'bentuk_tanah' => $data['bentuk_tanah'] ?? null,
'bentuk_tanah_lainnya' => $data['bentuk_tanah_lainnya'] ?? null,
'kontur_tanah' => $data['kontur_tanah'] ?? [],
'ketinggian_tanah' => $data['ketinggian_tanah'] ?? [],
'ketinggian_tanah_tidak_sesuai' => $data['ketinggian_tanah_tidak_sesuai'] ?? [],
'posisi_kavling' => $data['posisi_kavling'] ?? [],
'posisi_kavling_lainnya' => $data['posisi_kavling_lainnya'] ?? null,
'tusuk_sate' => $data['tusuk_sate'] ?? null,
'lockland' => $data['lockland'] ?? null,
'kondisi_fisik_tanah' => $data['kondisi_fisik_tanah'] ?? [],
'kondisi_fisik_tanah_lainnya' => $data['kondisi_fisik_tanah_lainnya'] ?? null,
];
$formatBangunanJson = [
'luas_tanah_bangunan' => $data['luas_tanah_bangunan'] ?? 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,
'spek_kategori_bagunan' => $data['spek_kategori_bagunan'] ?? null,
'spek_bangunan' => $data['spek_bangunan'] ?? null,
'sarana_pelengkap' => $data['sarana_pelengkap'] ?? [],
'sarana_pelengkap_input' => $data['sarana_pelengkap_input'] ?? null,
];
$formatLingkunganJson = [
'jarak_jalan_utama' => $data['jarak_jalan_utama'] ?? null,
'jalan_linkungan' => $data['jalan_linkungan'] ?? null,
'jarak_cbd_point' => $data['jarak_cbd_point'] ?? null,
'nama_cbd_point' => $data['nama_cbd_point'] ?? null,
'lebar_perkerasan_jalan' => $data['lebar_perkerasan_jalan'] ?? null,
'perkerasan_jalan' => $data['perkerasan_jalan'] ?? null,
'lalu_lintas' => $data['lalu_lintas'] ?? null,
'gol_mas_sekitar' => $data['gol_mas_sekitar'] ?? null,
'tingkat_keramaian' => $data['tingkat_keramaian'] ?? null,
'terletak_diarea' => $data['terletak_diarea'] ?? null,
'disekitar_lokasi' => $data['disekitar_lokasi'] ?? null,
'kondisi_bangunan_sekitar' => $data['kondisi_bangunan_sekitar'] ?? null,
'sifat_bangunan_sekitar' => $data['sifat_bangunan_sekitar'] ?? null,
'dekat_makam' => $data['dekat_makam'] ?? null,
'jarak_makam' => $data['jarak_makam'] ?? null,
'nama_makam' => $data['nama_makam'] ?? null,
'dekat_tps' => $data['dekat_tps'] ?? null,
'jarak_tps' => $data['jarak_tps'] ?? null,
'nama_tps' => $data['nama_tps'] ?? null,
'merupakan_daerah' => $data['merupakan_daerah'] ?? null,
'fasilitas_dekat_object' => $data['fasilitas_dekat_object'] ?? null,
];
$formatFaktaJson = [
'fakta_positif' => $data['fakta_positif'] ?? null,
'fakta_negatif' => $data['fakta_negatif'] ?? null,
'rute_menuju' => $data['rute_menuju'] ?? null,
'batas_batas' => $data['batas_batas'] ?? null,
'kondisi_lingkungan' => $data['kondisi_lingkungan'] ?? null,
'kondisi_lain_bangunan' => $data['kondisi_lain_bangunan'] ?? null,
'informasi_dokument' => $data['informasi_dokument'] ?? null,
'peruntukan' => $data['peruntukan'] ?? null,
'kdb' => $data['kdb'] ?? null,
'kdh' => $data['kdh'] ?? null,
'gsb' => $data['gsb'] ?? null,
'max_lantai' => $data['max_lantai'] ?? null,
'klb' => $data['klb'] ?? null,
'gss' => $data['gss'] ?? null,
'pelebaran_jalan' => $data['pelebaran_jalan'] ?? null,
'nama_petugas' => $data['nama_petugas'] ?? null,
'lat' => $data['lat'] ?? null,
'lng' => $data['lng'] ?? null,
'foto_gistaru' => $data['foto_gistaru'] = $this->uploadFile($request->file('foto_gistaru'), $request->type) ?? null,
'foto_bhumi' => $data['foto_bhumi'] = $this->uploadFile($request->file('foto_bhumi'), $request->type) ?? null,
'foto_argis_region' => $data['foto_argis_region'] = $this->uploadFile($request->file('foto_argis_region'), $request->type) ?? null,
'foto_tempat' => $data['foto_tempat'] = $this->uploadFile($request->file('foto_tempat'), $request->type) ?? null,
'keterangan' => $data['keterangan'] ?? null,
];
$mergeData = array_merge($formatTanahJson, $formatBangunanJson, $formatLingkunganJson, $formatFaktaJson);
Inspeksi::create([
'permohonan_id' => $request->permohonan_id,
'data_form' => json_encode($mergeData),
'name' => $request->type,
]);
return response()->json(['success' => true, 'message' => 'Data berhasil disimpan',
'data' => $mergeData], 200);
} catch (Exception $e) {
return response()->json(['success' => false, 'message' => 'Data gagal disimpan: ' . $e->getMessage()], 500);
}
DB::commit();
return redirect()->route('surveyor.show', [
'id' => $validatedData['permohonan_id'],
'form' => 'inspeksi'
])->with('success', 'Data form surveyor berhasil disimpan');
} catch (Exception $e) {
DB::rollback();
return response()->json(['error' => 'Failed to save data', 'details' => $e->getMessage()], 500);
}
}
@@ -271,31 +360,117 @@ class SurveyorController extends Controller
'lantai.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'name_lantai_unit.*' => 'nullable|string|max:255',
'foto_lantai_unit.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'name_rute_lainnya.*' => 'nullable|string',
'foto_rute_lainnya.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'foto_lantai_lainnya.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'name_lantai_lainnya.*' => 'nullable|string|max:255',
'foto_basement.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'name_basement.*' => 'nullable|string|max:255',
'foto_gerbang' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'name_gerbang' => 'nullable|string|max:255',
]);
DB::beginTransaction();
// DB::beginTransaction();
try {
$pendampingPath = $this->uploadFile($request->file('pendamping'), 'pendamping');
$fotojaminan = FotoJaminan::create([
'pendamping' => $pendampingPath,
'permohonan_id' => $validatedData['permohonan_id'],
'jenis_jaminan_id' => $validatedData['jenis_jaminan_id'],
]);
$rute_menuju_lokasi = [];
$object_jaminan = [];
$lingkungan = [];
$foto_lantai_unit = [];
$foto_lantai_lainnya = [];
$foto_rute_lainnya = [];
$this->processObjekUploads($request, $fotojaminan);
$this->processLantaiUnitUploads($request, $fotojaminan);
$this->processUploads('rute', $request, $fotojaminan);
$this->processUploads('lingkungan', $request, $fotojaminan);
DB::commit();
return redirect()->route('surveyor.show', [
'id' => $validatedData['permohonan_id'],
'form' => 'foto'
])->with('success', 'Data foto berhasil disimpan');
foreach ($request->file('foto_rute', []) as $key => $value) {
$fotoRutePath = $this->uploadFile($request->file('foto_rute.' . $key), 'foto_rute.' . $key);
$rute_menuju_lokasi[] = [
'name_rute' => $request->input('name_rute.' . $key),
'foto_rute' => $fotoRutePath,
];
}
foreach ($request->file('foto_objek', []) as $key => $value) {
$fotoObjekPath = $this->uploadFile($request->file('foto_objek.' . $key), 'foto_objek.' . $key);
$object_jaminan[] = [
'nama_objek' => $request->input('name_objek.' . $key),
'foto_object' => $fotoObjekPath,
'deskripsi_objek' => $request->input('deskripsi_objek.' . $key),
];
}
foreach ($request->file('foto_lingkungan', []) as $key => $value) {
$fotoLingkunganPath = $this->uploadFile($request->file('foto_lingkungan.' . $key), 'foto_lingkungan.' . $key);
$lingkungan[] = [
'name_lingkungan' => $request->input('name_lingkungan.' . $key),
'foto_lingkungan' => $fotoLingkunganPath,
];
}
foreach ($request->file('foto_lantai_unit', []) as $key => $value) {
$foto_lantai_unit_Path = $this->uploadFile($request->file('foto_lantai_unit.' . $key), 'foto_lantai_unit.' . $key);
$foto_lantai_unit[] = [
'name_lantai_unit' => $request->input('name_lantai_unit.' . $key),
'foto_lantai_unit' => $foto_lantai_unit_Path,
];
}
foreach ($request->file('foto_rute_lainnya', []) as $key => $value) {
$foto_rute_lainnya_path = $this->uploadFile($request->file('foto_rute_lainnya.' . $key), 'foto_rute_lainnya.' . $key);
$foto_rute_lainnya[] = [
'name_rute_lainnya' => $request->input('name_rute_lainnya.' . $key),
'foto_rute_lainnya' => $foto_rute_lainnya_path,
];
}
foreach ($request->file('foto_lantai_lainnya', []) as $key => $value) {
$foto_lantai_lainnya_path = $this->uploadFile($request->file('foto_lantai_lainnya.' . $key), 'foto_lantai_lainnya.' . $key);
$foto_lantai_lainnya[] = [
'name_lantai_lainnya' => $request->input('name_lantai_lainnya.' . $key),
'foto_lantai_lainnya' => $foto_lantai_lainnya_path,
];
}
$basement = $this->uploadFile($request->file('foto_basement'), 'foto_basement');
$gerbang = $this->uploadFile($request->file('foto_gerbang'), 'foto_gerbang');
$formatFotojson = [
'rute_menuju_lokasi' => $rute_menuju_lokasi,
'object_jaminan' => $object_jaminan,
'lingkungan' => $lingkungan
,'foto_lantai_unit' => $foto_lantai_unit,
'foto_lantai_lainnya' => $foto_lantai_lainnya,
'foto_rute_lainnya' => $foto_rute_lainnya,
'basement' => $basement,
'gerbang' => $gerbang
];
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->first();
if($request->input('permohonan_id') == $inspeksi->permohonan_id){
$inspeksi->update([
'foto_form' => json_encode($formatFotojson)
]);
}else {
Inspeksi::create([
'permohonan_id' => $request->input('permohonan_id'),
'foto_form' => json_encode($formatFotojson)
]);
}
// DB::commit();
return response()->json(['success' => true, 'message' => 'Data berhasil disimpan', 'data' => $formatFotojson], 200);
} catch (Exception $e) {
DB::rollBack();
return response()->json(['success' => false, 'message' => 'Failed to upload: ' . $e->getMessage()], 500);
}
}
@@ -518,8 +693,9 @@ class SurveyorController extends Controller
$query->whereRaw('LOWER(status) = ?', ['assign']);
$query->whereHas('region.teams.teamsUsers.user', function ($q) {
$q->where('id', Auth::user()->id);
$query->whereHas('penilaian.userPenilai', function ($q) {
$q->where('user_id', Auth::user()->id);
$q->where('role', 'surveyor');
});
@@ -544,7 +720,7 @@ class SurveyorController extends Controller
}
$filteredRecords = $query->count();
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian', 'jenisFasilitasKredit'])->get();
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'jenisFasilitasKredit'])->get();
$pageCount = ceil($totalRecords / $size);
@@ -567,8 +743,14 @@ class SurveyorController extends Controller
{
$permohonan = $this->getPermohonanJaminanId($id, $jaminanId);
// Auth::user()->id
$link_url_region = Teams::with('regions', 'teamsUsers')
->whereHas('teamsUsers', function ($query) {
$query->where('user_id', Auth::user()->id);
})->first();
$branches = Branch::all();
$provinces = Province::all();
@@ -600,7 +782,9 @@ class SurveyorController extends Controller
->where('jenis_jaminan_id', $jaminanId)
->first();
// return response()->json($permohonan);
$inpeksi = Inspeksi::where('permohonan_id', $id)->get();
$forminspeksi = json_decode($inpeksi[0]->data_form, true);
return view('lpj::surveyor.components.inspeksi', compact(
@@ -626,7 +810,9 @@ class SurveyorController extends Controller
'golMasySekitar',
'tingkatKeramaian',
'laluLintasLokasi',
'perkerasanJalan'
'perkerasanJalan',
'link_url_region',
'forminspeksi'
));
}
@@ -654,7 +840,10 @@ class SurveyorController extends Controller
$branches = Branch::all();
$provinces = Province::all();
$fotoJaminan = FotoJaminan::with(['objekJaminan', 'lantaiUnit' ,'ruteJaminan', 'lingkungan'])->where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first();
// $fotoJaminan = FotoJaminan::with(['objekJaminan', 'lantaiUnit' ,'ruteJaminan', 'lingkungan'])->where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first();
$fotoJaminan = null;
return view('lpj::surveyor.components.foto', compact('permohonan', 'surveyor', 'branches', 'provinces', 'fotoJaminan'));
}
@@ -740,11 +929,9 @@ class SurveyorController extends Controller
->with('success', 'created successfully');
} catch (Exeception $e) {
return response()->json(array('error' => $e->getMessage()), 400);
// return redirect()
// ->route('basicdata.' . $type .'.index')
// ->with('error', $th->getMessage());
return redirect()
->route('basicdata.' . $type .'.index')
->with('error', $th->getMessage());
}
}
}
@@ -779,6 +966,7 @@ class SurveyorController extends Controller
$header = $dataMap[$type] ?? '';
$model = $modelClass::findOrFail($id);
$spekKategoriBagunan = null;
if ($type == 'spek-bangunan') {
$spekKategoriBagunan = SpekKategoritBangunan::all();

View File

@@ -196,6 +196,9 @@ class TeamsController extends Controller
->leftJoin('teams_users', 'teams.id', '=', 'teams_users.teams_id')
->leftJoin('users', 'teams_users.user_id', '=', 'users.id')
->addSelect('users.id as user_id', 'users.name as user_name');
// Filter pencarian
if ($request->has('search') && !empty($request->get('search'))) {

View File

@@ -19,10 +19,11 @@ class FormSurveyorRequest extends FormRequest
*/
public function rules(): array
{
$commonRules = $this->getCommonRules();
$commonRules = $this->getBangunanRules();
$actionSpecificRules = $this->getActionSpecificRules();
return array_merge($commonRules, $actionSpecificRules);
return $actionSpecificRules;
}
/**
@@ -31,44 +32,29 @@ class FormSurveyorRequest extends FormRequest
private function getCommonRules(): array
{
return [
'jenis_jaminan_id' => 'required',
'type' => 'required',
'permohonan_id' => 'required',
'luas' => 'required',
'jarak_jalan_utama' => 'required',
'alamat' => 'required',
'jarak_cbd_point' => 'required',
'lebar_perkerasan_jalan' => 'required',
'perkerasan_jalan' => 'required',
'lalu_lintas' => 'required',
'gol_mas_sekitar' => 'required',
'tingkat_keramaian' => 'required',
'terletak_diarea' => 'required',
'disekitar_lokasi' => 'required',
'dekat_makam' => 'required',
'dekat_tps' => 'required',
'merupakan_daerah' => 'required',
'fasilitas_dekat_object' => 'required',
'fakta_positif' => 'required',
'fakta_negatif' => 'required',
'rute_menuju' => 'required',
'batas_batas' => 'required',
'kondisi_linkungan' => 'required',
'kondisi_lain_bangunan' => 'required',
'informasi_dokument' => 'required',
'peruntukan' => 'required',
'kdb' => 'required',
'kdh' => 'required',
'gsb' => 'required',
'max_lantai' => 'required',
'klb' => 'required',
'gss' => 'required',
'pelebaran_jalan' => 'required',
'nama_petugas' => 'required',
'lat' => 'required|numeric',
'lng' => 'required|numeric',
'foto_tempat' => 'required',
'keterangan' => 'required',
'fakta_positif' => 'nullable|array',
'fakta_negatif' => 'nullable|array',
'rute_menuju' => 'nullable',
'batas_batas' => 'nullable|array',
'kondisi_linkungan' => 'nullable|array',
'kondisi_lain_bangunan' => 'nullable|array',
'informasi_dokument' => 'nullable',
'peruntukan' => 'nullable',
'kdb' => 'nullable',
'kdh' => 'nullable',
'gsb' => 'nullable',
'max_lantai' => 'nullable',
'klb' => 'nullable',
'gss' => 'nullable',
'pelebaran_jalan' => 'nullable',
'nama_petugas' => 'nullable',
'lat' => 'nullable|numeric',
'lng' => 'nullable|numeric',
'foto_gistaru' => 'nullable',
'foto_bhumi' => 'nullable',
'foto_argis_region' => 'nullable',
'foto_tempat' => 'nullable',
'keterangan' => 'nullable',
];
}
@@ -80,54 +66,181 @@ class FormSurveyorRequest extends FormRequest
$action = $this->input('action');
switch ($action) {
case 'tanah_bangunan':
return $this->getTanahBangunanRules();
case 'tanah':
return $this->getTanahRules();
case 'unit':
return $this->getUnitRules();
case 'kapal':
return $this->getUnitRules();
case 'kendaraan':
return $this->getUnitRules();
case 'mesin':
return $this->getUnitRules();
case 'bangunan':
return $this->getTanahBangunanRules();
case 'tanah_bangunan':
return array_merge($this->getAssetDescriptionRules(),$this->getTanahRules(), $this->getBangunanRules(), $this->getLinkunganRules(), $this->getCommonRules());
case 'alat-berat':
return $this->getUnitRules();
default:
return [];
}
}
/**
* Get rules specific to tanah_bangunan action.
* Get rules specific to tanah action.
*/
private function getTanahBangunanRules(): array
public function getTanahRules(): array
{
return [
'action' => 'required',
'bentuk_tanah' => 'required',
'kontur_tanah' => 'required',
'posisi_kavling' => 'required',
'ketinggian_jalan' => 'required',
'kondisi_fisik_tanah' => 'required',
return [
'luas_tanah' => 'required',
'luas_tanah_tidak_sesuai' => 'nullable',
'hadap_mata_angin' => 'required',
'hadap_mata_angin_tidak_sesuai' => 'nullable',
'bentuk_tanah' => 'nullable|array',
'bentuk_tanah_lainnya' => 'nullable',
'kontur_tanah' => 'required|array',
'ketinggian_jalan' => 'required|array',
'kontur_jalan' => 'required',
'kondisi_bangunan' => 'required',
'sifat_bangunan' => 'required',
'sarana_pelengkap' => 'required',
'luas_tanah_bagunan' => 'required',
'posisi_kavling' => 'required|array',
'posisi_kavling_lainnya' => 'nullable',
'tusuk_sate' => 'required',
'name.*' => 'required|string',
'kategori.*' => 'required|string',
'lockland' => 'required',
'jenis_bangunan' => 'required',
'kondisi_bangunan' => 'required',
'kondisi_fisik_tanah' => 'required|array',
];
}
/**
* Get rules specific to Bangunan action.
*/
private function getBangunanRules(): array
{
return [
'action' => 'required',
'luas_tanah_bagunan' => 'required',
'jenis_bangunan' => 'required',
'kondisi_bangunan' => 'nullable',
'sifat_bangunan' => 'required|array',
'sifat_bangunan_input' => 'nullable|array',
'nama_bagunan' => 'required|array',
'spek_kategori_bangunan' => 'required|array',
'spek_kategori_bangunan.*' => 'required|string',
'sarana_pelengkap' => 'required',
'sarana_pelengkap_input' => 'nullable|array',
];
}
/**
* Get rules specific to unit action.
*/
private function getUnitRules(): array
{
return [
return [
'action' => 'required',
'jenis_unit' => 'required',
'kondisi_unit' => 'required',
'posisi_unit' => 'required',
'lantai' => 'required',
'view' => 'required',
'bentuk_unit' => 'required',
'luas_unit' => 'required',
'luas_unit_tidak_sesuai' => 'nullable',
'jenis_unit' => 'required|array',
'kondisi_unit' => 'required|array',
'posisi_unit' => 'required|array',
'lantai' => 'required|array',
'view' => 'required|array',
'bentuk_unit' => 'required|array',
];
}
/**
* Get rules specific to Linkungan action.
*/
private function getLinkunganRules(): array
{
return [
'action' => 'required',
'jarak_jalan_utama' => 'nullable',
'jalan_linkungan' => 'nullable',
'jarak_cbd_point' => 'nullable',
'nama_cbd_point' => 'nullable',
'lebar_perkerasan_jalan' => 'nullable',
'perkerasan_jalan' => 'nullable',
'lalu_lintas' => 'nullable',
'gol_mas_sekitar' => 'nullable',
'tingkat_keramaian' => 'nullable',
'terletak_diarea' => 'nullable',
'disekitar_lokasi' => 'nullable',
'kondisi_bangunan_sekitar' => 'nullable',
'sifat_bangunan_sekitar' => 'nullable',
'dekat_makam' => 'nullable',
'jarak_makam' => 'nullable',
'nama_makam' => 'nullable',
'dekat_tps' => 'nullable',
'jarak_tps' => 'nullable',
'nama_tpu' => 'nullable',
'merupakan_daerah' => 'nullable',
'fasilitas_dekat_object' => 'nullable',
];
}
private function getKapalRules(): array
{
return [
'action' => 'required',
'kondisi_kapal' => 'required',
'kondisi_kapal_lain' => 'required',
];
}
public function getKendaraanRules(): array
{
return [
'action' => 'required',
'kondisi_kendaraan' => 'required',
'kondisi_kendaraan_lain' => 'required',
];
}
public function getMesinRules(): array
{
return [
'action' => 'required',
'kondisi_mesin' => 'required',
'kondisi_mesin_lain' => 'required',
];
}
public function getAlatBeratRules(): array
{
return [
'action' => 'required',
'kondisi_alat_berat' => 'required',
'kondisi_alat_berat_lain' => 'required',
];
}
private function getAssetDescriptionRules(): array
{
return [
'permohonan_id' => 'required',
'type' => 'required',
'debitur_perwakilan' => 'required|array',
'jenis_asset' => 'required',
'jenis_asset_tidak_sesuai' => 'nullable',
'alamat_sesuai' => 'required',
'alamat_tidak_sesuai' => 'nullable',
'nama_jalan' => 'nullable',
'desa_kelurahan' => 'nullable',
'kecamatan' => 'nullable',
'kota_kabupaten' => 'nullable',
'provinsi' => 'nullable',
'kordinat_lng' => 'nullable',
'kordinat_lat' => 'nullable',
];
}
}

View File

@@ -25,15 +25,12 @@ class PenilaianRequest extends FormRequest
];
}
return [
'jenis_penilaian_id' => 'required|max:255',
'teams_id' => 'required|max:255',
'tanggal_kunjungan' => 'required|max:255',
'status' => 'required|string',
'nomor_registrasi' => 'required|string',
'surveyor_id' => 'nullable|required_without_all:penilai_surveyor_id,surveyor_region_id,penilai_region_id,penilai_id',
'penilai_id' => 'nullable|required_without_all:penilai_surveyor_id,surveyor_region_id,penilai_region_id,surveyor_id',
'penilai_surveyor_id' => 'nullable',

View File

@@ -14,6 +14,8 @@ class RegionRequest extends FormRequest
$rules = [
'name' => 'required|string|max:255',
'status' => 'nullable|boolean',
'url' => 'nullable|string|max:255',
'name_url' => 'nullable|string|max:255',
'authorized_at' => 'nullable|datetime',
'authorized_status' => 'nullable|string|max:1',
'authorized_by' => 'nullable|exists:users,id',

23
app/Models/Inspeksi.php Normal file
View File

@@ -0,0 +1,23 @@
<?php
namespace Modules\Lpj\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
// use Modules\Lpj\Database\Factories\InspeksiFactory;
class Inspeksi extends Model
{
use HasFactory;
protected $table = 'inspeksi';
/**
* The attributes that are mass assignable.
*/
protected $fillable = ['data_form', 'foto_form', 'denah_form','permohonan_id', 'name', 'status', 'authorized_status', 'authorized_at', 'authorized_by', 'created_by', 'updated_by', 'deleted_by'];
// protected static function newFactory(): InspeksiFactory
// {
// // return InspeksiFactory::new();
// }
}

View File

@@ -29,7 +29,7 @@ class PenilaianTeam extends Model
public function penilaian(){
return $this->hasMany(Penilaian::class, 'penilaian_id', 'id');
return $this->belongsTo(Penilaian::class, 'penilaian_id', 'id');
}
protected static function newFactory(): PenilaianTeamFactory

View File

@@ -17,7 +17,7 @@ class Regions extends Model
protected $table = 'regions';
protected $fillable = [
'code', 'name', 'status', 'authorized_status', 'authorized_at', 'authorized_by'
'code', 'name', 'status', 'name_url','url','authorized_status', 'authorized_at', 'authorized_by'
];
public function teams(){