feat(penilai): tambahkan fitur unggah foto dan simpan memo dengan foto

- Menambahkan metode `uploadTempPhoto` untuk mengunggah foto sementara.
- Menambahkan metode `storeMemoWithPhotos` untuk menyimpan memo beserta foto.
- Memperbarui rute untuk mendukung pengunggahan foto dan penyimpanan memo.
- Memperbarui tampilan untuk menampilkan foto yang sudah ada dan mengubah ID dropzone.
This commit is contained in:
Daeng Deni Mardaeni
2025-03-07 09:53:55 +07:00
parent 5d380f1a68
commit f7c85fc24e
3 changed files with 170 additions and 22 deletions

View File

@@ -4,6 +4,7 @@ namespace Modules\Lpj\Http\Controllers;
use Illuminate\Http\Request;
use Barryvdh\DomPDF\Facade\Pdf; // https://github.com/barryvdh/laravel-dompdf
use Illuminate\Support\Facades\Storage;
use Modules\Lpj\Models\Permohonan;
use Modules\Lpj\Models\Inspeksi;
use Modules\Lpj\Models\Penilai;
@@ -756,10 +757,10 @@ class PenilaiController extends Controller
if (!$allComplete) {
$message = $rap
? 'Harap Mengisi laporan terlebih dahulu'
$message = $rap
? 'Harap Mengisi laporan terlebih dahulu'
: 'Harap Mengisi laporan terlebih dahulu atau kertas kerja';
return response()->json([
'success' => false,
'message' => $message,
@@ -801,6 +802,18 @@ class PenilaiController extends Controller
}
}
public function uploadTempPhoto(Request $request)
{
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]);
}
return response()->json(['success' => false], 400);
}
public function storeResume(Request $request)
{
try {
@@ -919,6 +932,59 @@ class PenilaiController extends Controller
}
}
public function storeMemoWithPhotos(Request $request)
{
try {
$validatedData = $request->validate([
'permohonan_id' => 'required|integer',
'document_id' => 'required|integer',
'inspeksi_id' => 'required|integer',
'memo' => 'required',
]);
$memoData = json_decode($validatedData['memo'], true);
$memo = Penilai::updateOrCreate(
[
'permohonan_id' => $validatedData['permohonan_id'],
'dokument_id' => $validatedData['document_id'],
'inspeksi_id' => $validatedData['inspeksi_id'],
],
[
'memo' => json_encode($memoData),
]
);
// 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++;
}
// Tambahkan URL foto ke data memo
$memoData['foto'] = $photoUrls;
$memo->memo = json_encode($memoData);
$memo->save();
}
return response()->json([
'success' => true,
'message' => 'Memo dan foto berhasil disimpan',
]);
} catch (Exception $e) {
return response()->json([
'success' => false,
'message' => 'Terjadi kesalahan: ' . $e->getMessage(),
], 500);
}
}
public function storeLpjSederhanadanStandard(Request $request)
{
DB::beginTransaction();