update form inspeksi menggunakan json

This commit is contained in:
majid76
2024-11-12 07:13:33 +07:00
parent a809828b80
commit d0390d3f9f
5 changed files with 194 additions and 53 deletions

View File

@@ -34,8 +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\Lantai;
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;
@@ -156,48 +157,117 @@ class SurveyorController extends Controller
$data = $request->validated();
if ($data) {
try {
$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,
'merupkan_daerah' => $data['merupkan_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_tempat' => $data['foto_tempat'] ?? 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(['message' => 'Data berhasil disimpan',
'data' => $data], 200);
'data' => $mergeData], 200);
} catch (Exception $e) {
return response()->json(['status' => 500, 'message' => 'Data gagal disimpan: ' . $e->getMessage()], 500);
return response()->json(['message' => 'Data gagal disimpan: ' . $e->getMessage()], 500);
}
}
// $validatedData = $request->validated();
// DB::beginTransaction();
// try {
// $analisa = Analisa::create($validatedData);
// if ($analisa) {
// $validatedData['analisa_id'] = $analisa->id;
// 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);
// }
// 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);
// }
}
private function handleTanahBangunan(array $validatedData, FormSurveyorRequest $request)

View File

@@ -93,6 +93,7 @@ class FormSurveyorRequest extends FormRequest
$assetDescriptionRules = $this->getAssetDescriptionRules();
return array_merge($assetDescriptionRules, [
'luas_tanah' => 'required',
'luas_tanah_tidak_sesuai' => 'nullable',
'hadap_mata_angin' => 'required',
@@ -120,8 +121,8 @@ class FormSurveyorRequest extends FormRequest
'action' => 'required',
'luas_tanah_bagunan' => 'required',
'jenis_bangunan' => 'required',
'kondisi_bangunan' => 'required',
'sifat_bangunan' => 'required',
'kondisi_bangunan' => 'nullable',
'sifat_bangunan' => 'required|array',
'sifat_bangunan_input' => 'nullable|array',
'nama_bagunan' => 'required|array',
'spek_kategori_bangunan' => 'required|array',
@@ -172,7 +173,7 @@ class FormSurveyorRequest extends FormRequest
'sifat_bangunan_sekitar' => 'nullable',
'dekat_makam' => 'nullable',
'jarak_makam' => 'nullable',
'nama_tpu' => 'nullable',
'nama_makam' => 'nullable',
'dekat_tps' => 'nullable',
'jarak_tps' => 'nullable',
'nama_tpu' => 'nullable',
@@ -223,6 +224,8 @@ class FormSurveyorRequest extends FormRequest
private function getAssetDescriptionRules(): array
{
return [
'permohonan_id' => 'required',
'type' => 'required',
'debitur_perwakilan' => 'required|array',
'jenis_asset' => 'required',
'jenis_asset_tidak_sesuai' => 'nullable',

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

@@ -0,0 +1,42 @@
<?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('inspeksi', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->json('data_form')->nullable();
$table->json('foto_form')->nullable();
$table->json('denah_form')->nullable();
$table->unsignedBigInteger('permohonan_id');
$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();
$table->foreign('permohonan_id')->references('id')->on('permohonan')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('inspeksi');
}
};

View File

@@ -161,7 +161,7 @@
}
}
if ($analisaType === 'tanah') {
$analisaType = 'kendaraan';
$analisaType = 'tanah_bangunan';
}
if ($analisaType === 'unit_rumah' || $analisaType === 'unit_gedung') {
@@ -227,8 +227,6 @@
</div>
</div>
</div>
@endsection
@push('scripts')
<script>
@@ -320,8 +318,6 @@
<script type="text/javascript">
function toggleTidakSesuai(field, inputId) {
const selectedValue = $(`[name="${field}"]:checked, [name="${field}"]:checked`).val();
const inputField = $(`#${inputId}`);
@@ -347,18 +343,25 @@
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
success: function(response) {
// Pastikan respons dari server memiliki atribut 'success'
if (response.success) {
window.location.href = '{{ route('surveyor.index') }}';
$('.alert').text('');
window.location.href =
'{{ route('surveyor.show', ['id' => $permohonan->id]) }}?form=inspeksi';
}
console.log(response);
},
error: function(xhr) {
let errors = xhr.responseJSON.errors;
error: function(xhr, status, error) { // Menghapus tanda kurung ganda
let errors = xhr.responseJSON?.errors; // Pastikan xhr.responseJSON ada sebelum akses errors
$('.alert').text('');
$.each(errors, function(key, value) {
$(`#error-${key}`).text(value[0]);
});
if (errors) {
$.each(errors, function(key, value) {
$(`#error-${key}`).text(value[0]);
});
}
console.error('Terjadi error:', error); // Menampilkan pesan error di konsol
console.log('Status:', status);
console.log('Response:', xhr.responseText);
console.log(errors);
}
});