fix(memo): perbaikkan upload foto di memo, foto existing hilang ketika upload ulang
This commit is contained in:
@@ -834,13 +834,13 @@ class PenilaiController extends Controller
|
||||
}
|
||||
|
||||
|
||||
$cekLpj =$this->checkDataLpj($type, $statusLpj)
|
||||
if ($permohonan->status_bayar === 'sudah_bayar' && $cekLpj) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Harap mengisi LPJ terlebih dahulu',
|
||||
])
|
||||
}
|
||||
// $cekLpj = $this->checkDataLpj($type, $statusLpj);
|
||||
// if ($permohonan->status_bayar === 'sudah_bayar' && $cekLpj) {
|
||||
// return response()->json([
|
||||
// 'success' => false,
|
||||
// 'message' => 'Harap mengisi LPJ terlebih dahulu',
|
||||
// ]);
|
||||
// }
|
||||
|
||||
|
||||
$permohonan->update([
|
||||
@@ -862,14 +862,69 @@ class PenilaiController extends Controller
|
||||
|
||||
public function uploadTempPhoto(Request $request)
|
||||
{
|
||||
$validatedData = $request->validate([
|
||||
'permohonan_id' => 'required|integer',
|
||||
'dokument_id' => 'required|integer',
|
||||
]);
|
||||
|
||||
$memo = Penilai::firstOrNew([
|
||||
'permohonan_id' => $validatedData['permohonan_id'],
|
||||
'dokument_id' => $validatedData['dokument_id'],
|
||||
]);
|
||||
|
||||
$existingData = $memo->exists && $memo->memo ? json_decode($memo->memo, true) : [];
|
||||
$existingData['foto'] = $existingData['foto'] ?? [];
|
||||
|
||||
if ($request->hasFile('file')) {
|
||||
$file = $request->file('file');
|
||||
$filename = time() . '_' . $file->getClientOriginalName();
|
||||
$path = $file->storeAs('temp_photos', $filename, 'public');
|
||||
return response()->json(['success' => true, 'id' => $path]);
|
||||
|
||||
$files = $request->file('file');
|
||||
|
||||
if (!is_array($files)) {
|
||||
$files = [$files];
|
||||
}
|
||||
foreach ($files as $file) {
|
||||
|
||||
$filename = time() . '_' . $file->getClientOriginalName();
|
||||
$path = $file->storeAs('temp_photos', $filename, 'public');
|
||||
$existingData['foto'][] = $path;
|
||||
|
||||
}
|
||||
// Simpan data memo
|
||||
$memo->memo = json_encode($existingData);
|
||||
$memo->save();
|
||||
|
||||
return response()->json(['success' => true, 'data' => $existingData]);
|
||||
}
|
||||
return response()->json(['success' => false], 400);
|
||||
}
|
||||
|
||||
|
||||
public function deleteTempPhoto(Request $request)
|
||||
{
|
||||
$validatedData = $request->validate([
|
||||
'permohonan_id' => 'required|integer',
|
||||
'dokument_id' => 'required|integer',
|
||||
'path' => 'required|string',
|
||||
]);
|
||||
|
||||
$memo = Penilai::firstOrNew([
|
||||
'permohonan_id' => $validatedData['permohonan_id'],
|
||||
'dokument_id' => $validatedData['dokument_id'],
|
||||
]);
|
||||
|
||||
$fotoMemo = json_decode($memo->memo, true);
|
||||
if (isset($fotoMemo['foto']) && is_array($fotoMemo['foto'])) {
|
||||
$fotoMemo['foto'] = array_filter($fotoMemo['foto'], function ($photo) use ($validatedData) {
|
||||
return basename($photo) !== basename($validatedData['path']);
|
||||
});
|
||||
|
||||
$fotoMemo['foto'] = array_values($fotoMemo['foto']);
|
||||
$memo->memo = json_encode($fotoMemo);
|
||||
$memo->save();
|
||||
return response()->json(['success' => true, 'message' => 'Foto berhasil dihapus']);
|
||||
}
|
||||
|
||||
return response()->json(['success' => false], 400);
|
||||
return response()->json(['success' => false, 'message' => 'Foto tidak ditemukan'], 400);
|
||||
}
|
||||
|
||||
public function storeResume(Request $request)
|
||||
@@ -964,42 +1019,20 @@ class PenilaiController extends Controller
|
||||
'memo' => 'required',
|
||||
]);
|
||||
|
||||
$memoData = json_decode($validatedData['memo'], true);
|
||||
$newMemoData = json_decode($validatedData['memo'], true);
|
||||
|
||||
$memo = Penilai::updateOrCreate(
|
||||
$memo = Penilai::firstOrNew(
|
||||
[
|
||||
'permohonan_id' => $validatedData['permohonan_id'],
|
||||
'dokument_id' => $validatedData['document_id'],
|
||||
|
||||
],
|
||||
[
|
||||
'memo' => json_encode($memoData),
|
||||
]
|
||||
);
|
||||
|
||||
// $existingPhotos = isset($memo->memo) ? json_decode($memo->memo) : [];
|
||||
// dd($existingPhotos);
|
||||
// Simpan foto-foto
|
||||
if ($request->hasFile('foto_0')) {
|
||||
$photoUrls = [];
|
||||
$index = 0;
|
||||
while ($request->hasFile("foto_$index")) {
|
||||
$file = $request->file("foto_$index");
|
||||
$fileName = time() . '_' . $file->getClientOriginalName();
|
||||
$filePath = $file->storeAs('public/memo_photos', $fileName);
|
||||
$photoUrls[] = Storage::url($filePath);
|
||||
$index++;
|
||||
}
|
||||
$existingMemoData = isset($memo->memo) ? json_decode($memo->memo, true) : [];
|
||||
$mergedMemoData = array_merge($existingMemoData, $newMemoData);
|
||||
|
||||
// $memoData['foto'] = array_merge($existingPhotos, $photoUrls);
|
||||
|
||||
// }else{
|
||||
// $memoData['foto'] = $existingPhotos;
|
||||
// Tambahkan URL foto ke data memo
|
||||
$memoData['foto'] = $photoUrls;
|
||||
$memo->memo = json_encode($memoData);
|
||||
$memo->memo = json_encode($mergedMemoData);
|
||||
$memo->save();
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
@@ -1077,7 +1110,7 @@ class PenilaiController extends Controller
|
||||
'message' => 'Berhasil menyimpan LPJ',
|
||||
'data' => $result
|
||||
], 200);
|
||||
}catch (\Throwable $e) {
|
||||
} catch (\Throwable $e) {
|
||||
DB::rollBack();
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
|
||||
Reference in New Issue
Block a user