perbaikan denah bisa banyak

This commit is contained in:
majid
2024-12-31 11:30:35 +07:00
parent 81be786844
commit 345fe30710
3 changed files with 280 additions and 171 deletions

View File

@@ -226,61 +226,73 @@ class SurveyorController extends Controller
public function storeDenah(Request $request)
{
try {
$maxSize = getMaxFileSize('Foto');
$validationRules = [
'luas' => 'required|numeric',
'permohonan_id' => 'required',
'dokument_id' => 'required'
];
$validator = $request->validate([
'foto_denah.*' => 'nullable|file|mimes:jpg,jpeg,png,bmp,gif,webp,pdf',
'nama_denah.*' => 'nullable|string|max:255',
'luas_denah.*' => 'nullable|numeric',
'permohonan_id' => 'required|exists:permohonan,id',
'dokument_id' => 'required'
]);
if ($validator) {
try {
if ($request->hasFile('foto_denah')) {
$maxSize = getMaxFileSize('Foto');
$validationRules['foto_denah'] = 'file|mimes:jpeg,jpg,png,pdf,svg|max:'. $maxSize;
}
$denahs = [];
$validatedData = $request->validate($validationRules);
$inspeksi = Inspeksi::where('permohonan_id', $request->permohonan_id)
->where('dokument_id', $request->dokument_id)
->first();
$formatJsonDenah = [
'luas' => $validatedData['luas'],
];
$existingDenah = $inspeksi ? json_decode($inspeksi->denah_form ?? '[]', true) : [];
$existingDenahs = $existingDenah['denahs'] ?? [];
if ($request->hasFile('foto_denah')) {
$formatJsonDenah['foto_denah'] = $this->uploadFile($request->file('foto_denah'), 'foto_denah');
}
if ($request->has('nama_denah')) {
foreach ($request->nama_denah as $index => $namaDenah) {
$denahItem = [
'nama_denah' => $namaDenah,
'luas_denah' => $request->luas_denah[$index] ?? null
];
if ($request->hasFile('foto_denah') && isset($request->file('foto_denah')[$index])) {
$file = $request->file('foto_denah')[$index];
$denahItem['foto_denah'] = $this->uploadFile($file, 'foto_denah');
} elseif (isset($existingDenahs[$index]['foto_denah'])) {
$denahItem['foto_denah'] = $existingDenahs[$index]['foto_denah'];
}
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))
->where('dokument_id', $request->input('dokument_id'))
->first();
$denahs[] = $denahItem;
}
}
if ($inspeksi) {
$existingDenah = json_decode($inspeksi->denah_form, true) ?? [];
if (empty($denahs) && !empty($existingDenahs)) {
$denahs = $existingDenahs;
}
$updatedDenah = array_merge($existingDenah, $formatJsonDenah);
$inspeksi->update([
'denah_form' => json_encode($updatedDenah)
$inspeksi = Inspeksi::firstOrNew([
'permohonan_id' => $request->permohonan_id,
'dokument_id' => $request->dokument_id
]);
} else {
Inspeksi::create([
'permohonan_id' => $request->input('permohonan_id'),
'dokument_id' => $request->input('dokument_id'),
'denah_form' => json_encode($formatJsonDenah)
]);
}
return response()->json([
'success' => true,
'message' => 'Data berhasil disimpan',
'data' => $formatJsonDenah
], 200);
} catch (Exception $e) {
return response()->json(['success' => false, 'message' => 'Data gagal disimpan: ' . $e->getMessage()], 500);
// Update denah_form
$updatedDenah = ['denahs' => $denahs];
$inspeksi->denah_form = json_encode($updatedDenah);
$inspeksi->save();
return response()->json([
'success' => true,
'message' => 'Data berhasil disimpan',
'data' => $updatedDenah
], 200);
} catch (\Exception $e) {
\Log::error('Denah Store Error: ' . $e->getMessage());
return response()->json([
'success' => false,
'message' => 'Gagal menyimpan data: ' . $e->getMessage()
], 500);
}
}
}
public function storeFoto(Request $request)
{
$validatedData = $this->validateFotoRequest($request);
@@ -291,7 +303,7 @@ class SurveyorController extends Controller
'foto_lingkungan',
];
$lainnya =[
$lainnya = [
'foto_rute_lainnya' => ['foto_rute_lainnya', 'name_rute_lainnya'],
'foto_lantai_lainnya' => ['foto_lantai_lainnya', 'name_lantai_lainnya']
];