Enhance audit trail system for approval workflows

- Add conditional audit data enrichment for specific approval actions
- Implement namapelulus and norujukan tracking for pampasan approvals
- Improve audit data structure handling for scalar and array values
- Add user field validation with fallback defaults for audit records
- Optimize approval controller with better request parameter handling
This commit is contained in:
Afiq Hamzah
2025-09-25 10:58:58 +08:00
parent 632c2b5190
commit 0a9140c85d
2 changed files with 30 additions and 3 deletions
+29 -2
View File
@@ -96,6 +96,7 @@ class KelulusanController extends Controller
{
$harini = Carbon::now();
$harini = new Carbon;
$kelulusan = null;
$cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first();
$pengesahan = $request->pengesahan;
@@ -193,7 +194,33 @@ class KelulusanController extends Controller
$audit = new Audit();
$audit->users = (isset($request->namakhazanah) ? $request->namakhazanah : '');
$audit->actions = "Pengesahan Kelulusan 75%";
$audit->actions = $request->actions ?? "pengesahan kelulusan 75%";
// Only prepare detailed audit data for Pampasan approval
if($request->actions == 'Pengesahan Pembayaran Pampasan') {
// Prepare data for audit - ensure it's an array
$auditData = [];
// If kelulusan is a scalar (update result), create array structure
if (is_scalar($kelulusan) || is_null($kelulusan)) {
$auditData = ['update_result' => $kelulusan];
} else {
$auditData = $kelulusan;
}
// Add namapelulus and norujukanasal to the audit data
if(isset($request->namaoperasi)) {
$auditData['namapelulus'] = !empty($request->namaoperasi) ? $request->namaoperasi : null;
}
if(isset($request->norujukan)) {
$auditData['norujukan'] = !empty($request->norujukan) ? $request->norujukan : null;
}
} else {
// For other actions, use simple kelulusan data
$auditData = $kelulusan;
}
$audit->new_data = json_encode($auditData);
$audit->kodcaw = $kodcaw;
$audit->created_at = $harini;
$audit->updated_at = $harini;
@@ -275,7 +302,7 @@ public function create(REQUEST $request,$kodcaw,$norujukan,$roles)
$audit = new Audit();
$audit->users = (isset($request->teller) ? $request->teller : '');
$audit->actions = "Minta Pengesahan kelulusan 75%";
$audit->actions = $request->actions ?? "Minta Pengesahan kelulusan 75%";
$audit->new_data = json_encode($kelulusan);
$audit->kodcaw = $kodcaw;
$audit->created_at = $harini;
+1 -1
View File
@@ -1244,7 +1244,7 @@ $date = new Carbon($request->tarikh);
array_push($atarray,[
'tarikh' => $tarikh,
'masa' => $masa,
'users' => $at['users'],
'users' => isset($at['users']) && $at['users'] !== '' ? $at['users'] : '-',
'pelulus' => isset($atnewdata['namapelulus']) ? $atnewdata['namapelulus'] : '-',
'actions' => $at['actions'],
'norujukan' => $at['norujukan'],