fix(so): perbaikan assigment bisa pindah region, dan perbaikan call report dan revisi dokumen admin dari so

This commit is contained in:
majid
2025-02-20 16:54:39 +07:00
parent 61c5690e38
commit 28295f5b85
14 changed files with 631 additions and 383 deletions

View File

@@ -407,26 +407,26 @@ class PenilaiController extends Controller
$nomorLaporan = $this->generateNoLaporan($permohonan, $documentId, 'call-report'); $nomorLaporan = $this->generateNoLaporan($permohonan, $documentId, 'call-report');
$basicData = $this->surveyorController->getCommonData(); $basicData = $this->surveyorController->getCommonData();
$inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); $inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first();
// Penilai::updateOrCreate( Penilai::updateOrCreate(
// [ [
// 'permohonan_id' => $permohonanId, 'permohonan_id' => $permohonanId,
// 'dokument_id' => $documentId, 'dokument_id' => $documentId,
// 'inspeksi_id' => $inspeksiId, 'inspeksi_id' => $inspeksiId,
// ], ],
// [ [
// 'type_penilai' => 'call-report', 'type_penilai' => 'call-report',
// ] ]
// ); );
// $resume = Penilai::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); $call = Penilai::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first();
// $lpjData = null; // $lpjData = null;
// $rap = null; $callReport = null;
// $forminspeksi = null; $forminspeksi = null;
// if ($resume) { if ($forminspeksi) {
$forminspeksi = json_decode($inspeksi->data_form, true); $forminspeksi = json_decode($inspeksi->data_form, true);
// $rap = json_decode($resume->rap, true); $callReport = json_decode($call->call_report, true);
// } }
// Default: gunakan data dari debitur // Default: gunakan data dari debitur
$debitur = Debiture::find($permohonan->debiture_id); $debitur = Debiture::find($permohonan->debiture_id);
@@ -460,10 +460,8 @@ class PenilaiController extends Controller
} }
} }
// return view('lpj::penilai.components.call-report', compact('permohonan', 'rap', 'provinces', 'cities',
// 'districts', return view('lpj::penilai.components.call-report', compact('permohonan', 'basicData', 'nomorLaporan', 'forminspeksi', 'cities', 'districts', 'villages', 'cekAlamat', 'callReport'));
// 'villages','forminspeksi', 'noLpRAP', 'basicData','cekAlamat'));
return view('lpj::penilai.components.call-report', compact('permohonan', 'basicData', 'nomorLaporan', 'forminspeksi', 'cities', 'districts', 'villages', 'cekAlamat'));
} }
/** /**
@@ -992,34 +990,34 @@ class PenilaiController extends Controller
{ {
try { try {
// DB::beginTransaction();
$validated = $request->validate([ $validated = $request->validate([
'permohonan_id' => 'required|exists:permohonan,id', 'permohonan_id' => 'required|exists:permohonan,id',
'dokument_id' => 'required|exists:dokument,id', 'dokument_id' => 'required',
'inspeksi_id' => 'required|exists:inspeksi,id', 'inspeksi_id' => 'required',
'data' => 'required' 'data' => 'required'
]); ]);
DB::beginTransaction();
$data = $request->input('data'); $data = $request->input('data');
Penilai::updateOrCreate( Penilai::updateOrCreate(
[ [
'permohonan_id' => $request->permohonanId, 'permohonan_id' => $validated['permohonan_id'],
'dokument_id' => $request->documentId, 'dokument_id' => $validated['dokument_id'],
'inspeksi_id' => $request->inspeksiId, 'inspeksi_id' => $validated['inspeksi_id'],
], ],
[ [
'call-report' => json_encode($data), 'call_report' => json_encode($validated['data']),
] ]
); );
DB::commit(); // DB::commit();
return response()->json([ return response()->json([
'success' => true, 'success' => true,
'message' => 'Berhasil menyimpan data', 'message' => 'Berhasil menyimpan data',
'data' => $result 'data' => $data
], 200); ], 200);
} catch (\Throwable $e) { } catch (\Throwable $e) {
DB::rollBack(); // DB::rollBack();
return response()->json([ return response()->json([
'success' => false, 'success' => false,
'message' => 'Terjadi kesalahan saat menyimpan data', 'message' => 'Terjadi kesalahan saat menyimpan data',

View File

@@ -84,12 +84,20 @@ class PenilaianController extends Controller
$roles[] = 'surveyor'; $roles[] = 'surveyor';
} else { } else {
$permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first(); $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first();
$teams_ids[] = $validatedData['teams_id'];
if (isset($validatedData['penilai_surveyor_id'])) { if (isset($validatedData['penilai_surveyor_id'])) {
if ($validatedData['penilai_surveyor_id'] == 'pilih_dari_region') {
$teams_ids[] = $validatedData['surveyor_penilai_region_id'];
$user_ids[] = null;
} else {
$teams_ids[] = $validatedData['teams_id'];
$user_ids[] = $validatedData['penilai_surveyor_id']; $user_ids[] = $validatedData['penilai_surveyor_id'];
}
} else { } else {
$user_ids[] = $validatedData['surveyor_id']; $user_ids[] = $validatedData['surveyor_id'];
} }
$roles[] = 'surveyor'; $roles[] = 'surveyor';
@@ -111,10 +119,22 @@ class PenilaianController extends Controller
$roles[] = 'penilai'; $roles[] = 'penilai';
} else { } else {
$permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first(); $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first();
$teams_ids[] = $validatedData['teams_id'];
if (isset($validatedData['penilai_surveyor_id'])) { if (isset($validatedData['penilai_surveyor_id'])) {
if ($validatedData['penilai_surveyor_id'] == 'pilih_dari_region') {
$permohonan->update([
'region_id' => $validatedData['surveyor_penilai_region_id'],
]);
$teams_ids[] = $validatedData['surveyor_penilai_region_id'];
$user_ids[] = null;
} else {
$teams_ids[] = $validatedData['teams_id'];
$user_ids[] = $validatedData['penilai_surveyor_id']; $user_ids[] = $validatedData['penilai_surveyor_id'];
}
} else { } else {
$user_ids[] = $validatedData['penilai_id']; $user_ids[] = $validatedData['penilai_id'];
} }
@@ -122,6 +142,7 @@ class PenilaianController extends Controller
$roles[] = 'penilai'; $roles[] = 'penilai';
} }
// dd($teams_ids, $user_ids);
foreach ($teams_ids as $key => $teams_id) { foreach ($teams_ids as $key => $teams_id) {
PenilaianTeam::create([ PenilaianTeam::create([
'penilaian_id' => $validatedData['penilaian_id'], 'penilaian_id' => $validatedData['penilaian_id'],
@@ -131,12 +152,14 @@ class PenilaianController extends Controller
]); ]);
} }
if ($validatedData['surveyor_id'] === 'pilih_dari_region' || $validatedData['penilai_id'] === 'pilih_dari_region') { if ($validatedData['surveyor_id'] === 'pilih_dari_region' || $validatedData['penilai_id'] === 'pilih_dari_region' || $validatedData['penilai_surveyor_id'] === 'pilih_dari_region') {
$status = $permohonan->status; $status = $permohonan->status;
} else { }else {
$status = 'assign'; $status = 'assign';
} }
$permohonan->update([ $permohonan->update([
'status' => $status, 'status' => $status,
]); ]);
@@ -144,6 +167,7 @@ class PenilaianController extends Controller
DB::commit(); DB::commit();
return response()->json(['success' => true, 'message' => 'Data berhasil di-assign.'], 200); return response()->json(['success' => true, 'message' => 'Data berhasil di-assign.'], 200);
} catch (Exception $e) { } catch (Exception $e) {
dd($e);
DB::rollBack(); DB::rollBack();
return response()->json(['error' => $e->getMessage()]); return response()->json(['error' => $e->getMessage()]);
@@ -766,7 +790,7 @@ class PenilaianController extends Controller
return redirect()->back()->with('error', 'Laporan belum dibuat'); return redirect()->back()->with('error', 'Laporan belum dibuat');
} }
return view('lpj::' . $viewLaporan, compact('permohonan', 'forminspeksi', 'basicData', 'inspeksi', 'lpjData', 'provinces', 'resumeData', 'rap', 'memo', 'cities', 'districts', 'villages','formFoto', 'formPeta','nomorLaporan', 'penilai')); return view('lpj::' . $viewLaporan, compact('permohonan', 'forminspeksi', 'basicData', 'inspeksi', 'lpjData', 'provinces', 'resumeData', 'rap', 'memo', 'cities', 'districts', 'villages', 'formFoto', 'formPeta', 'nomorLaporan', 'penilai'));
} }
private function getViewLaporan($tipe) private function getViewLaporan($tipe)
@@ -835,7 +859,7 @@ class PenilaianController extends Controller
} }
} }
public function revisiLaporan(Request $request,$id) public function revisiLaporan(Request $request, $id)
{ {
$permohonan = Permohonan::findOrFail($id); $permohonan = Permohonan::findOrFail($id);
$permohonan->update([ $permohonan->update([

View File

@@ -1,20 +1,22 @@
<?php <?php
namespace Modules\Lpj\Http\Controllers; namespace Modules\Lpj\Http\Controllers;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Exception; use Exception;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Maatwebsite\Excel\Facades\Excel; use Maatwebsite\Excel\Facades\Excel;
use Modules\Lpj\Models\JenisPenilaian; use Modules\Lpj\Models\JenisPenilaian;
use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\Permohonan;
use Modules\Lpj\Models\Regions; use Modules\Lpj\Models\Regions;
use Modules\Lpj\Models\DokumenJaminan;
use Modules\Lpj\Models\Debiture;
class RegistrasiController extends Controller class RegistrasiController extends Controller
{ {
public $user; public $user;
public function index() public function index()
@@ -95,8 +97,8 @@
return view('lpj::registrasi.edit', compact('id')); return view('lpj::registrasi.edit', compact('id'));
} }
public function setData(Request $request) public function setData(Request $request): JsonResponse
: JsonResponse { {
$data = []; $data = [];
$datas = []; $datas = [];
@@ -128,8 +130,8 @@
return response()->json($data); return response()->json($data);
} }
public function update(Request $request, $id) public function update(Request $request, $id): JsonResponse
: JsonResponse { {
// init // init
$data = []; $data = [];
$dataku = []; $dataku = [];
@@ -207,9 +209,7 @@
if (1 == $jenis_penilaian) { if (1 == $jenis_penilaian) {
$validateIt['region'] = ['required']; $validateIt['region'] = ['required'];
$messageIt ['region.required'] = 'Silahkan pilih Region'; $messageIt ['region.required'] = 'Silahkan pilih Region';
} } else {
else
{
$validateIt['sla'] = ['required']; $validateIt['sla'] = ['required'];
$messageIt ['sla.required'] = 'Silahkan isi SLA'; $messageIt ['sla.required'] = 'Silahkan isi SLA';
} }
@@ -230,7 +230,24 @@
public function show($id) public function show($id)
{ {
$permohonan = Permohonan::find($id); $permohonan = Permohonan::find($id);
return view('lpj::registrasi.show', compact('id', 'permohonan')); $debitur = Debiture::find($permohonan->debiture_id);
$documents = DokumenJaminan::with('pemilik', 'detail')->where('debiture_id', $id)->get();
return view('lpj::registrasi.show', compact('id', 'permohonan', 'documents', 'debitur'));
} }
public function storeRevisi(Request $request, $id)
{
try {
$permohonan = Permohonan::find($id);
$permohonan->update([
'status' => 'registered'
]);
return redirect()->route('registrasi.index')->with('success', 'Submit Revision successfully');
} catch (Exception $e) {
return redirect()->route('registrasi.index')->with('error', 'Failed to create permohonan' . $e->getMessage());
} }
}
}

View File

@@ -36,7 +36,7 @@ class PenilaianRequest extends FormRequest
'penilai_surveyor_id' => 'nullable', 'penilai_surveyor_id' => 'nullable',
'surveyor_region_id' => 'nullable|required_without_all:penilai_surveyor_id,penilai_region_id,penilai_id,surveyor_id', 'surveyor_region_id' => 'nullable|required_without_all:penilai_surveyor_id,penilai_region_id,penilai_id,surveyor_id',
'penilai_region_id' => 'nullable|required_without_all:penilai_surveyor_id,surveyor_region_id,penilai_id,surveyor_id', 'penilai_region_id' => 'nullable|required_without_all:penilai_surveyor_id,surveyor_region_id,penilai_id,surveyor_id',
'surveyor_penilai_region_id' => 'nullable',
'keterangan' => 'nullable', 'keterangan' => 'nullable',
]; ];

View File

@@ -14,18 +14,7 @@ class Penilai extends Model
/** /**
* The attributes that are mass assignable. * The attributes that are mass assignable.
*/ */
protected $fillable = [ protected $guarded = ['id'];
'dokument_id',
'permohonan_id',
'inspeksi_id',
'kertas_kerja',
'resume',
'lpj',
'type',
'memo',
'rap',
'type_penilai'
];
// protected static function newFactory(): PenilaiFactory // protected static function newFactory(): PenilaiFactory
// { // {
@@ -41,4 +30,8 @@ class Penilai extends Model
return $this->belongsTo(Inspeksi::class); return $this->belongsTo(Inspeksi::class);
} }
public function penilai_nilai_likuidasi(){
return $this->hasMany(PenilaiNilaiLikuidasi::class);
}
} }

View File

@@ -0,0 +1,37 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('penilai', function (Blueprint $table) {
$table->enum('type_penilai', ['memo', 'resume', 'standard', 'sederhana', 'rap', 'call-report'])
->nullable()
->comment('Jenis penilai: memo, resume, standard, sederhana, rap, call-report')
->change();
$table->json('call_report')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('penilai', function (Blueprint $table) {
$table->enum('type_penilai', ['memo', 'resume', 'standard', 'sederhana', 'rap'])
->nullable()
->comment('Jenis penilai: memo, resume, standard, sederhana, rap')
->change();
$table->dropColumn(['type_penilai', 'call_report']);
});
}
};

View File

@@ -0,0 +1,33 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class () extends Migration {
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('sla_criteria', function (Blueprint $table) {
$table->id();
$table->string('name_criteria');
$table->string('criteria');
$table->timestamps();
$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('sla_criteria');
}
};

View File

@@ -13,7 +13,13 @@
{{ isset($document->id) ? 'Edit' : 'Tambah' }} Data Jaminan {{ isset($document->id) ? 'Edit' : 'Tambah' }} Data Jaminan
</h3> </h3>
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
@if (Auth::user()->roles[0]->name === 'admin')
<a href="{{ url()->previous() }}" class="btn btn-xs btn-info">
<i class="ki-filled ki-exit-left"></i> Back
</a>
@else
<a href="{{ route('debitur.jaminan.index',$debitur->id) }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a> <a href="{{ route('debitur.jaminan.index',$debitur->id) }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
@endif
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">

View File

@@ -72,7 +72,7 @@
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nomor Laporan</label> <label class="form-label max-w-56">Nomor Laporan</label>
<div class="flex flex-wrap items-base line w-full"> <div class="flex flex-wrap items-base line w-full">
<input type="text" name="nomor_rap" class="input w-full cursor-not-allowed" <input type="text" name="nomor_laporan" class="input w-full cursor-not-allowed"
placeholder="Masukkan..." value="{{ $nomorLaporan ?? '' }}" @readonly(true)> placeholder="Masukkan..." value="{{ $nomorLaporan ?? '' }}" @readonly(true)>
</div> </div>
</div> </div>
@@ -224,13 +224,13 @@
<label for="Lelang" class="form-label max-w-56">Lelang ke </label> <label for="Lelang" class="form-label max-w-56">Lelang ke </label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<input type="text" id="lelang" name="lelang" class="input w-full" <input type="text" id="lelang" name="lelang" class="input w-full"
placeholder="Masukkan Lelang" value="{{ $memo->lokasi->penilai ?? old('penilai') }}"> placeholder="Masukkan Lelang" value="{{ $memo->lokasi->penilai ?? old('lelang') }}">
</div> </div>
</div> </div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full"> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="penilai" class="form-label max-w-56">Nilai Pasar Wajar (NPW)</label> <label for="penilai" class="form-label max-w-56">Nilai Pasar Wajar (NPW)</label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<input type="text" id="nilai-pasar" name="likuidasi" <input type="text" id="nilai-pasar" name="nilai_pasar"
class="input w-full nilai-pasar currency-format" placeholder="Masukkan likuidasi" class="input w-full nilai-pasar currency-format" placeholder="Masukkan likuidasi"
value="{{ old('likuidasi') }}"> value="{{ old('likuidasi') }}">
</div> </div>
@@ -238,7 +238,7 @@
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full"> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full">
<label for="likuidasi_nilai_1" class="form-label max-w-56">Nilai Likuidasi(%)</label> <label for="likuidasi_nilai_1" class="form-label max-w-56">Nilai Likuidasi(%)</label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<input type="text" id="likuidasi" name="likuidasi_nilai_1" class="input w-full likuidasi" <input type="text" id="likuidasi" name="likuidasi" class="input w-full likuidasi"
placeholder="Masukkan likuidasi dalam bentuk persen" onkeyup="calculateTotal(this)"> placeholder="Masukkan likuidasi dalam bentuk persen" onkeyup="calculateTotal(this)">
</div> </div>
</div> </div>
@@ -411,26 +411,81 @@
@endsection @endsection
@push('scripts') @push('scripts')
<script type="text/javascript"> <script type="text/javascript">
const callReport = @json($forminspeksi ?? ''); const callReports = @json($callReport);
console.log('callReport', callReport) console.log('callReport', callReports)
function formatJson(formElement) {
const formData = new FormData(formElement);
const jsonData = {
kepada: "",
tanggal: "",
nomor_laporan: "",
perihal: "",
dari: "",
lelang: "",
fakta: {
fakta_positif: [],
fakta_negatif: []
},
nilai_pasar: "",
persentase_likuidasi: "",
hasil_nilai_likuidasi: ""
};
// Ambil fakta positif
document.querySelectorAll('textarea[name="fakta_positif[]"]').forEach(textarea => {
if (textarea.value.trim() !== "") {
jsonData.fakta.fakta_positif.push(textarea.value.trim());
}
});
// Ambil fakta negatif
document.querySelectorAll('textarea[name="fakta_negatif[]"]').forEach(textarea => {
if (textarea.value.trim() !== "") {
jsonData.fakta.fakta_negatif.push(textarea.value.trim());
}
});
jsonData.perihal = document.querySelector('input[name="perihal"]')?.value.trim() || "";
jsonData.dari = document.querySelector('input[name="dari"]')?.value.trim() || "";
jsonData.tanggal = document.querySelector('input[name="tanggal"]')?.value.trim() || "";
jsonData.kepada = document.querySelector('input[name="kepada"]')?.value.trim() || "";
jsonData.nomor_laporan = document.querySelector('input[name="nomor_laporan"]')?.value.trim() || "";
jsonData.lelang = document.querySelector('input[name="lelang"]')?.value.trim() || "";
// Ambil nilai lainnya
jsonData.nilai_pasar = document.querySelector('input[name="nilai_pasar"]')?.value.trim() || "";
jsonData.persentase_likuidasi = document.querySelector('input[name="likuidasi"]')?.value.trim() || "";
jsonData.hasil_nilai_likuidasi = document.querySelector('input[name="likuidasi_nilai_1"]')?.value.trim() || "";
return jsonData;
}
function submitData() { function submitData() {
showLoadingSwal('Mengirim data ke server...'); showLoadingSwal('Mengirim data ke server...');
const form = document.querySelector('form'); const formElement = document.querySelector('form');
const formData = new FormData(form); // console.log('Form data entries:', Array.from(formData.entries()));
console.log('Form data entries:', Array.from(formData.entries()));
const urlParams = new URLSearchParams(window.location.search); const urlParams = new URLSearchParams(window.location.search);
const permohonanId = {{ $permohonan->id }}; const permohonanId = {{ $permohonan->id }};
const documentId = urlParams.get('documentId'); const documentId = urlParams.get('documentId');
const inspeksiId = urlParams.get('inspeksiId'); const inspeksiId = urlParams.get('inspeksiId');
const requestUrl = const requestUrl =
`{{ route('penilai.storeCallReport') }}?permohonanId=${permohonanId}&inspeksiId=${inspeksiId}&documentId=${documentId}`; `{{ route('penilai.storeCallReport') }}?permohonan_id=${permohonanId}&inspeksi_id=${inspeksiId}&dokument_id=${documentId}`;
const jsonData = formatJson(formElement);
$.ajax({ $.ajax({
url: requestUrl, url: requestUrl,
type: 'POST', type: 'POST',
data: formData, data: JSON.stringify({
processData: false, permohonan_id: permohonanId,
contentType: false, dokument_id: documentId,
inspeksi_id: inspeksiId,
data: jsonData,
}),
contentType: 'application/json',
headers: { headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}' 'X-CSRF-TOKEN': '{{ csrf_token() }}'
}, },

View File

@@ -282,7 +282,7 @@
@endif @endif
@endif @endif
@if ($permohonan->penilaian->jenis_penilaian_id == 2 && $permohonan->tujuanPenilaian->id == 4) {{-- @if ($permohonan->penilaian->jenis_penilaian_id == 2 && $permohonan->tujuanPenilaian->id == 4) --}}
<div class="menu-item"> <div class="menu-item">
<a class="menu-link" <a class="menu-link"
onclick="callReport('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }})"> onclick="callReport('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }})">
@@ -295,7 +295,7 @@
</span> </span>
</a> </a>
</div> </div>
@endif {{-- @endif --}}
</div> </div>
</div> </div>

View File

@@ -4,7 +4,7 @@
{{ Breadcrumbs::render(request()->route()->getName()) }} {{ Breadcrumbs::render(request()->route()->getName()) }}
@endsection @endsection
@section('content') @section('content')
@include('lpj::assetsku.includenya') @include('lpj::assetsku.includenya')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto"> <div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
@include('lpj::component.detail-jaminan', ['backLink' => 'penilaian.index']) @include('lpj::component.detail-jaminan', ['backLink' => 'penilaian.index'])
@@ -85,6 +85,10 @@
@foreach ($teamPenilai as $item) @foreach ($teamPenilai as $item)
<option value="{{ $item->id }}">{{ $item->name }}</option> <option value="{{ $item->id }}">{{ $item->name }}</option>
@endforeach @endforeach
@if ($penilaianTeam->isEmpty())
<option value="pilih_dari_region">Pilih Surveyor dan Penilai Dari Region
</option>
@endif
</select> </select>
</div> </div>
@@ -94,6 +98,29 @@
</div> </div>
</div> </div>
<div id="surveyorPenilaiRegion" class="hidden items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Pilih Region
</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="input-group w-full">
<select id="surveyor_penilai_region_id" name="surveyor_penilai_region_id"
class="tomselect input @error('surveyor_penilai_region_id') border-danger bg-danger-light @enderror w-full">
<option value="">Pilih Region</option>
@if (isset($updateTeamPenilai))
@foreach ($updateTeamPenilai as $item)
<option value="{{ $item->regions->id }}">
{{ $item->regions->name }}</option>
@endforeach
@endif
</select>
</div>
<em id="error-surveyor_penilai_region_id" class="alert text-danger text-sm"></em>
</div>
</div>
<div id="different_surveyor_penilai" class="{{ $penilaianTeam->isNotEmpty() ? '' : 'hidden' }}"> <div id="different_surveyor_penilai" class="{{ $penilaianTeam->isNotEmpty() ? '' : 'hidden' }}">
<div class="grid gap-2.5"> <div class="grid gap-2.5">
@@ -269,7 +296,8 @@
Catatan Catatan
</label> </label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<textarea class="textarea @error('keterangan') border-danger bg-danger-light @enderror" rows="3" name="keterangan">{{ $permohonan->registrasi_catatan ? $permohonan->registrasi_catatan . "\n\n" : "" }}{{ $penilaian->keterangan ?? '' }}</textarea> <textarea class="textarea @error('keterangan') border-danger bg-danger-light @enderror" rows="3"
name="keterangan">{{ $permohonan->registrasi_catatan ? $permohonan->registrasi_catatan . "\n\n" : '' }}{{ $penilaian->keterangan ?? '' }}</textarea>
</div> </div>
<em id="error-keterangan" class="alert text-danger text-sm"></em> <em id="error-keterangan" class="alert text-danger text-sm"></em>
@@ -355,20 +383,37 @@
const selectedValue = this.value; const selectedValue = this.value;
const sameSurveyorPenilai = document.getElementById('same_surveyor_penilai'); const sameSurveyorPenilai = document.getElementById('same_surveyor_penilai');
const differentSurveyorPenilai = document.getElementById('different_surveyor_penilai'); const differentSurveyorPenilai = document.getElementById('different_surveyor_penilai');
const surveyorPenilaiRegion = document.getElementById('surveyorPenilaiRegion');
if (selectedValue === 'penilai_dan_surveyor') { if (selectedValue === 'penilai_dan_surveyor') {
sameSurveyorPenilai.classList.remove('hidden'); sameSurveyorPenilai.classList.remove('hidden');
differentSurveyorPenilai.classList.add('hidden'); differentSurveyorPenilai.classList.add('hidden');
surveyorPenilaiRegion.classList.add('hidden');
} else if (selectedValue === 'berbeda') { } else if (selectedValue === 'berbeda') {
sameSurveyorPenilai.classList.add('hidden'); sameSurveyorPenilai.classList.add('hidden');
differentSurveyorPenilai.classList.remove('hidden'); differentSurveyorPenilai.classList.remove('hidden');
surveyorPenilaiRegion.classList.add('hidden');
} else { } else {
sameSurveyorPenilai.classList.add('hidden'); sameSurveyorPenilai.classList.add('hidden');
differentSurveyorPenilai.classList.add('hidden'); differentSurveyorPenilai.classList.add('hidden');
surveyorPenilaiRegion.classList.add('hidden');
} }
}); });
document.getElementById('penilai_surveyor_id').addEventListener('change', function() {
const selectedValue = this.value;
const surveyorPenilaiRegion = document.getElementById('surveyorPenilaiRegion');
if (selectedValue === 'pilih_dari_region') {
surveyorPenilaiRegion.classList.remove('hidden');
surveyorPenilaiRegion.classList.add('flex');
} else {
surveyorPenilaiRegion.classList.add('hidden');
}
});
document.getElementById('surveyor_id').addEventListener('change', function() { document.getElementById('surveyor_id').addEventListener('change', function() {
const selectedValue = this.value; const selectedValue = this.value;

View File

@@ -7,20 +7,22 @@
// $route = Route::currentRouteName(); // $route = Route::currentRouteName();
// dd($route); registrasi.show // dd($route); registrasi.show
$route = explode('.', Route::currentRouteName()); $route = explode('.', Route::currentRouteName());
@endphp @endphp
@section('content') @section('content')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto"> <div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
@include('lpj::component.detail-jaminan',['backLink' => 'registrasi.index']) @include('lpj::component.detail-jaminan', ['backLink' => 'registrasi.index'])
<div class="card border border-agi-100 pb-2.5"> <div class="card border border-agi-100 pb-2.5">
@if (!$permohonan->status === 'revisi')
<div class="card-header bg-agi-50" id="basic_settings"> <div class="card-header bg-agi-50" id="basic_settings">
<h3 class="card-title"> <h3 class="card-title">
Registrasi Registrasi
</h3> </h3>
</div> </div>
<div class="card-body lg:py-7.5"> <div class="card-body lg:py-7.5">
<form id="{{$route[0]}}_form" name="{{$route[0]}}_form" method="POST"> <form id="{{ $route[0] }}_form" name="{{ $route[0] }}_form" method="POST">
<input type="hidden" id="id" name="id" value="{{ $id }}"> <input type="hidden" id="id" name="id" value="{{ $id }}">
@method('PUT') @method('PUT')
@csrf @csrf
@@ -31,33 +33,39 @@
</label> </label>
<div class="flex gap-12"> <div class="flex gap-12">
<label class="form-label flex items-center gap-2.5 text-nowrap"> <label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="radio" name="{{$route[0]}}_tindakan" type="radio" value="0" id="{{ $route[0] }}_tindakan_yes" /> <input class="radio" name="{{ $route[0] }}_tindakan" type="radio" value="0"
id="{{ $route[0] }}_tindakan_yes" />
Yes Yes
</label>&nbsp;&nbsp; </label>&nbsp;&nbsp;
<label class="form-label flex items-center gap-2.5 text-nowrap"> <label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="radio" name="{{$route[0]}}_tindakan" type="radio" value="1" id="{{ $route[0] }}_tindakan_no" /> <input class="radio" name="{{ $route[0] }}_tindakan" type="radio" value="1"
id="{{ $route[0] }}_tindakan_no" />
No No
</label> </label>
</div> </div>
</div> </div>
<div id="{{$route[0]}}_div_jenis_pilihan" class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mt-5"> <div id="{{ $route[0] }}_div_jenis_pilihan"
class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mt-5">
<label class="form-label max-w-56"> <label class="form-label max-w-56">
Data Jenis Penilaian (Pilihan registrasi) Data Jenis Penilaian (Pilihan registrasi)
</label> </label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<select class="inputku select" id="{{$route[0]}}_jenis_penilaian" name="{{$route[0]}}_jenis_penilaian"> <select class="inputku select" id="{{ $route[0] }}_jenis_penilaian"
name="{{ $route[0] }}_jenis_penilaian">
<option></option> <option></option>
</select> </select>
<em id="{{$route[0]}}_jenis_penilaian_msg" class="alert text-danger text-sm"></em> <em id="{{ $route[0] }}_jenis_penilaian_msg" class="alert text-danger text-sm"></em>
</div> </div>
</div> </div>
<div id="{{ $route[0] }}_div_catatan" class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mt-5"> <div id="{{ $route[0] }}_div_catatan"
class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mt-5">
<label class="form-label max-w-56"> <label class="form-label max-w-56">
Catatan Catatan
</label> </label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<textarea class="inputku textarea" name="{{$route[0]}}_catatan" id="{{$route[0]}}_catatan" placeholder="Catatan..." rows="6"></textarea> <textarea class="inputku textarea" name="{{ $route[0] }}_catatan" id="{{ $route[0] }}_catatan"
<em id="{{$route[0]}}_catatan_msg" class="alert text-danger text-sm"></em> placeholder="Catatan..." rows="6"></textarea>
<em id="{{ $route[0] }}_catatan_msg" class="alert text-danger text-sm"></em>
</div> </div>
</div> </div>
<div id="{{ $route[0] }}_div_sla" class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <div id="{{ $route[0] }}_div_sla" class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
@@ -65,28 +73,33 @@
SLA (dalam satuan hari) SLA (dalam satuan hari)
</label> </label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<input class="inputku input" name="{{$route[0]}}_sla" id="{{$route[0]}}_sla" placeholder="dalam satuan hari" type="text" /> <input class="inputku input" name="{{ $route[0] }}_sla" id="{{ $route[0] }}_sla"
<em id="{{$route[0]}}_sla_msg" class="alert text-danger text-sm"></em> placeholder="dalam satuan hari" type="text" />
<em id="{{ $route[0] }}_sla_msg" class="alert text-danger text-sm"></em>
</div> </div>
</div> </div>
<div id="{{ $route[0] }}_div_region" class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <div id="{{ $route[0] }}_div_region"
class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56"> <label class="form-label max-w-56">
Region Region
</label> </label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<select class="inputku select" id="{{$route[0]}}_region" name="{{$route[0]}}_region"> <select class="inputku select" id="{{ $route[0] }}_region"
name="{{ $route[0] }}_region">
<option></option> <option></option>
</select> </select>
<em id="{{$route[0]}}_region_msg" class="alert text-danger text-sm"></em> <em id="{{ $route[0] }}_region_msg" class="alert text-danger text-sm"></em>
</div> </div>
</div><br /> </div><br />
<div id="{{ $route[0] }}_div_catatan2" class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <div id="{{ $route[0] }}_div_catatan2"
class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56"> <label class="form-label max-w-56">
Catatan Catatan
</label> </label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<textarea class="inputku textarea" name="{{$route[0]}}_catatan2" id="{{$route[0]}}_catatan2" placeholder="Catatan..." rows="6"></textarea> <textarea class="inputku textarea" name="{{ $route[0] }}_catatan2" id="{{ $route[0] }}_catatan2"
<em id="{{$route[0]}}_catatan2_msg" class="alert text-danger text-sm"></em> placeholder="Catatan..." rows="6"></textarea>
<em id="{{ $route[0] }}_catatan2_msg" class="alert text-danger text-sm"></em>
</div> </div>
</div> </div>
<div class="flex justify-end mt-5"> <div class="flex justify-end mt-5">
@@ -96,8 +109,33 @@
</div> </div>
</form> </form>
</div> </div>
@endif
@if ($permohonan->status === 'revisi')
<div class="card-header bg-agi-50" id="basic_settings">
<h3 class="card-title">
Dokument
</h3>
</div> </div>
<div class="card-body">
@include('lpj::debitur.components.jaminan')
</div>
<div class="card-footer">
<div class="flex justify-end mt-5">
<form action="{{ route('storeRevisi', $id) }}" method="post">
@method('PUT')
@csrf
<input type="hidden" id="id" name="id" value="{{ $id }}">
<button class="btn btn-primary" >
Submit Revision
</button>
</form>
</div> </div>
</div>
@endif
</div>
</div>
@endsection @endsection
@include('lpj::registrasi.js.editjs') @include('lpj::registrasi.js.editjs')

View File

@@ -25,9 +25,11 @@ Route::middleware(['auth'])->group(function () {
Route::post('registrasi/setData', 'setData')->name('registrasi.setData'); Route::post('registrasi/setData', 'setData')->name('registrasi.setData');
Route::get('/registrasi/{registrasi}/edit', 'edit')->name('registrasi.edit'); Route::get('/registrasi/{registrasi}/edit', 'edit')->name('registrasi.edit');
Route::put('/registrasi/{registrasi}', 'update')->name('registrasi.update'); Route::put('/registrasi/{registrasi}', 'update')->name('registrasi.update');
}); });
// andy add // andy add
Route::put('/store-revisi/{id}', [RegistrasiController::class, 'storeRevisi'])->name('storeRevisi');
Route::name('tender.')->prefix('tender')->group(function () { Route::name('tender.')->prefix('tender')->group(function () {

View File

@@ -604,7 +604,7 @@ Route::middleware(['auth'])->group(function () {
Route::get('memo', [PenilaiController::class, 'memo'])->name('memo'); Route::get('memo', [PenilaiController::class, 'memo'])->name('memo');
Route::get('paparan', [PenilaiController::class, 'paparan'])->name('paparan'); Route::get('paparan', [PenilaiController::class, 'paparan'])->name('paparan');
Route::get('call-report', [PenilaiController::class, 'call_report'])->name('call-report'); Route::get('call-report', [PenilaiController::class, 'call_report'])->name('call-report');
Route::get('storeCallReport', [PenilaiController::class, 'storeCallReport'])->name('storeCallReport'); Route::post('storeCallReport', [PenilaiController::class, 'storeCallReport'])->name('storeCallReport');
Route::post('storePaparan/{id}', [PenilaiController::class, 'storePaparan'])->name('storePaparan'); Route::post('storePaparan/{id}', [PenilaiController::class, 'storePaparan'])->name('storePaparan');
Route::get('rap', [PenilaiController::class, 'rap'])->name('rap'); Route::get('rap', [PenilaiController::class, 'rap'])->name('rap');
Route::get('/check-status-lpj', [PenilaiController::class, 'checkStatusLpj'])->name('check.status.lpj'); Route::get('/check-status-lpj', [PenilaiController::class, 'checkStatusLpj'])->name('check.status.lpj');