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:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user