feat(signature): penambahan tanda tangan di surveyor
This commit is contained in:
@@ -165,17 +165,34 @@ class SurveyorController extends Controller
|
||||
$request
|
||||
);
|
||||
|
||||
// Find or create inspeksi record
|
||||
$inspeksi = Inspeksi::updateOrCreate(
|
||||
[
|
||||
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))
|
||||
->where('dokument_id', $request->input('dokument_id'))
|
||||
->first();
|
||||
|
||||
if ($inspeksi) {
|
||||
// Jika data sudah ada, merge dengan data yang baru
|
||||
$existingData = json_decode($inspeksi->data_form, true) ?: [];
|
||||
|
||||
$mergedData = $this->arrayMergeRecursive($existingData, $processedData);
|
||||
|
||||
// Update record
|
||||
$inspeksi->update([
|
||||
'data_form' => json_encode($mergedData),
|
||||
'name' => $request->input('type')
|
||||
]);
|
||||
|
||||
$responseData = $mergedData;
|
||||
} else {
|
||||
// Jika belum ada data, buat record baru
|
||||
$inspeksi = Inspeksi::create([
|
||||
'permohonan_id' => $request->input('permohonan_id'),
|
||||
'dokument_id' => $request->input('dokument_id')
|
||||
],
|
||||
[
|
||||
'dokument_id' => $request->input('dokument_id'),
|
||||
'data_form' => json_encode($processedData),
|
||||
'name' => $request->input('type')
|
||||
]
|
||||
);
|
||||
]);
|
||||
|
||||
$responseData = $processedData;
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
@@ -192,6 +209,7 @@ class SurveyorController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private function getActionSpecificRules($data, $action, $request): array
|
||||
{
|
||||
$allowedActions = [
|
||||
@@ -3280,13 +3298,9 @@ class SurveyorController extends Controller
|
||||
}
|
||||
|
||||
|
||||
public function signature()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public function signatureStore(Request $request)
|
||||
{
|
||||
|
||||
$validator = Validator::make($request->all(), [
|
||||
'signature' => 'required',
|
||||
'type' => 'required|in:penilai,cabang,debitur,kjjp',
|
||||
@@ -3300,34 +3314,168 @@ class SurveyorController extends Controller
|
||||
], 422);
|
||||
}
|
||||
|
||||
// Hapus prefix data:image/png;base64,
|
||||
$image = explode(',', $request->signature)[1];
|
||||
$imageName = 'signatures/' . $request->type . '_' . time() . '.png';
|
||||
try {
|
||||
|
||||
// Simpan file
|
||||
Storage::disk('public')->put($imageName, base64_decode($image));
|
||||
$existingData = $inspeksi->exists && $inspeksi->foto_form
|
||||
? json_decode($inspeksi->foto_form, true)
|
||||
: [];
|
||||
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))
|
||||
->where('dokument_id', $request->input('document_id'))
|
||||
->first();
|
||||
|
||||
$formatFotojson = $existingData;
|
||||
$inspeksi = Inspeksi::save(
|
||||
[
|
||||
'permohonan_id' => $request->input('permohonan_id'),
|
||||
'dokument_id' => $request->input('dokument_id')
|
||||
],
|
||||
[
|
||||
'data_form' => json_encode($processedData),
|
||||
]
|
||||
);
|
||||
if (!$inspeksi) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Data inspeksi tidak ditemukan'
|
||||
], 404);
|
||||
}
|
||||
|
||||
// Decode data form yang ada
|
||||
$dataForm = json_decode($inspeksi->data_form, true) ?: [];
|
||||
|
||||
// Inisialisasi array signature jika belum ada
|
||||
if (!isset($dataForm['signature'])) {
|
||||
$dataForm['signature'] = [];
|
||||
}
|
||||
|
||||
// Simpan atau update signature berdasarkan type
|
||||
$dataForm['signature'][$request->type] = [
|
||||
'image' => $request->signature,
|
||||
'created_at' => now()->toDateTimeString(),
|
||||
'updated_at' => now()->toDateTimeString()
|
||||
];
|
||||
|
||||
// Update data form di database
|
||||
$inspeksi->data_form = json_encode($dataForm);
|
||||
$inspeksi->save();
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Tanda tangan berhasil disimpan'
|
||||
]);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Terjadi kesalahan: ' . $e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
public function signatureShow()
|
||||
public function signatureShow($type)
|
||||
{
|
||||
try {
|
||||
$inspeksi = Inspeksi::where('permohonan_id', request()->input('permohonan_id'))
|
||||
->where('dokument_id', request()->input('document_id'))
|
||||
->first();
|
||||
|
||||
if (!$inspeksi) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Data inspeksi tidak ditemukan',
|
||||
'error_code' => '404'
|
||||
], 404);
|
||||
}
|
||||
|
||||
$dataForm = json_decode($inspeksi->data_form, true) ?: [];
|
||||
|
||||
if (isset($dataForm['signature'][$type])) {
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'data' => [
|
||||
'signature' => $dataForm['signature'][$type]['image'],
|
||||
'type' => $type,
|
||||
'created_at' => $dataForm['signature'][$type]['created_at'],
|
||||
'updated_at' => $dataForm['signature'][$type]['updated_at']
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Tanda tangan tidak ditemukan',
|
||||
'error_code' => '404'
|
||||
], 404);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Terjadi kesalahan: ' . $e->getMessage(),
|
||||
'error_code' => '500'
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
public function signatureDestroy()
|
||||
|
||||
public function signatureDestroy(Request $request)
|
||||
{
|
||||
try {
|
||||
$validator = Validator::make($request->all(), [
|
||||
'type' => 'required|in:penilai,cabang,debitur,kjjp'
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Validation error',
|
||||
'errors' => $validator->errors()
|
||||
], 422);
|
||||
}
|
||||
|
||||
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))
|
||||
->where('dokument_id', $request->input('document_id'))
|
||||
->first();
|
||||
|
||||
if (!$inspeksi) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Data inspeksi tidak ditemukan',
|
||||
'error_code' => '404'
|
||||
], 404);
|
||||
}
|
||||
|
||||
$dataForm = json_decode($inspeksi->data_form, true) ?: [];
|
||||
|
||||
if (isset($dataForm['signature'][$request->type])) {
|
||||
unset($dataForm['signature'][$request->type]);
|
||||
|
||||
$inspeksi->data_form = json_encode($dataForm);
|
||||
$inspeksi->save();
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Tanda tangan berhasil dihapus',
|
||||
'data' => [
|
||||
'type' => $request->type,
|
||||
'deleted_at' => now()->toDateTimeString()
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Tanda tangan tidak ditemukan',
|
||||
'error_code' => '404'
|
||||
], 404);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Terjadi kesalahan: ' . $e->getMessage(),
|
||||
'error_code' => '500'
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
private function arrayMergeRecursive($arr1, $arr2)
|
||||
{
|
||||
foreach ($arr2 as $key => $value) {
|
||||
if (is_array($value) && isset($arr1[$key]) && is_array($arr1[$key])) {
|
||||
$arr1[$key] = $this->arrayMergeRecursive($arr1[$key], $value);
|
||||
} else {
|
||||
// Jika nilai baru adalah null, pertahankan nilai lama
|
||||
if (!is_null($value)) {
|
||||
$arr1[$key] = $value;
|
||||
} elseif (!isset($arr1[$key])) {
|
||||
$arr1[$key] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $arr1;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user