FIX_AuditHistory ID into Name Convertions
This commit is contained in:
parent
c517674856
commit
b5b2dd6be3
@ -595,7 +595,7 @@ class MasterController extends ResourceController
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
public function getHistory()
|
||||
public function getHistoryOld()
|
||||
{
|
||||
$db = \Config\Database::connect();
|
||||
|
||||
@ -663,6 +663,193 @@ class MasterController extends ResourceController
|
||||
]);
|
||||
}
|
||||
|
||||
public function getHistory()
|
||||
{
|
||||
$db = \Config\Database::connect();
|
||||
|
||||
$tableName = $this->request->getGet('table_name');
|
||||
$pk = $this->request->getGet('pk');
|
||||
|
||||
if (!$tableName || !$pk) {
|
||||
return $this->response->setJSON(['status' => 'failed', 'message' => 'table_name and pk are required']);
|
||||
}
|
||||
|
||||
$history = $db->table('partner_audit_history pah')
|
||||
->select("pah.column_name, pah.old_val, pah.new_val, pah.changed_on, ps.name AS changed_by")
|
||||
->join('partner_staff ps', 'ps.id = pah.user_id', 'left')
|
||||
->where(['pah.table_name' => $tableName, 'pah.pk' => $pk])
|
||||
->orderBy('pah.changed_on', 'DESC')
|
||||
->get()->getResultArray();
|
||||
|
||||
if (empty($history)) {
|
||||
return $this->response->setJSON(['status' => 'success', 'data' => [], 'message' => 'No audit history found']);
|
||||
}
|
||||
|
||||
$result = [];
|
||||
|
||||
$ignoreColumns = [
|
||||
'updated_on',
|
||||
'created_on',
|
||||
'updated_by',
|
||||
'created_by',
|
||||
'id' // Usually PKs are ignored too
|
||||
];
|
||||
|
||||
foreach ($history as $row) {
|
||||
$column = $row['column_name'];
|
||||
|
||||
// SKIP the iteration if the column is in our ignore list
|
||||
if (in_array($column, $ignoreColumns)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$formatted = $this->formatAuditRow($row);
|
||||
$label = $formatted['label'];
|
||||
$old = $formatted['old'];
|
||||
$new = $formatted['new'];
|
||||
$by = $row['changed_by'] ?? 'System';
|
||||
|
||||
// Professional Message logic
|
||||
if ($old === '-' || $old === '') {
|
||||
$message = "{$label} was set to **{$new}** by {$by}";
|
||||
} else {
|
||||
$message = "{$label} updated from '{$old}' to '{$new}' by {$by}";
|
||||
}
|
||||
|
||||
$result[] = [
|
||||
// 'column_name' => $label,
|
||||
'column_name' => $column,
|
||||
'message' => $message,
|
||||
'changed_on' => $row['changed_on'] ? date("d-m-Y", strtotime($row['changed_on'])) : '',
|
||||
'changed_by' => $by
|
||||
];
|
||||
}
|
||||
|
||||
return $this->response->setJSON(['status' => 'success', 'data' => $result]);
|
||||
}
|
||||
|
||||
private function formatAuditRow($row)
|
||||
{
|
||||
$col = $row['column_name'];
|
||||
$old = $row['old_val'];
|
||||
$new = $row['new_val'];
|
||||
|
||||
// Default formatting
|
||||
$label = ucwords(str_replace('_', ' ', $col));
|
||||
$fOld = $old ?? '-';
|
||||
$fNew = $new ?? '-';
|
||||
|
||||
switch ($col) {
|
||||
// --- ID to Name Lookups ---
|
||||
case 'enquiry_id':
|
||||
$label = "Enquiry";
|
||||
$fOld = $this->fetchName('partner_enquiry', 'name', $old);
|
||||
$fNew = $this->fetchName('partner_enquiry', 'name', $new);
|
||||
break;
|
||||
|
||||
case 'insurance_plan_type_id':
|
||||
$label = "Insurance Plan Type";
|
||||
$fOld = $this->fetchName('partner_insurance_plan_type_master', 'insurance_plan_type', $old);
|
||||
$fNew = $this->fetchName('partner_insurance_plan_type_master', 'insurance_plan_type', $new);
|
||||
break;
|
||||
|
||||
case 'manager_id':
|
||||
$label = "Manager";
|
||||
$fOld = $this->fetchName('partner_staff', 'name', $old, ['role_id' => 1]);
|
||||
$fNew = $this->fetchName('partner_staff', 'name', $new, ['role_id' => 1]);
|
||||
break;
|
||||
|
||||
case 'updated_by':
|
||||
case 'created_by':
|
||||
case 'assigned_to':
|
||||
$fOld = $this->fetchName('partner_staff', 'name', $old);
|
||||
$fNew = $this->fetchName('partner_staff', 'name', $new);
|
||||
break;
|
||||
|
||||
case 'pos_id':
|
||||
$label = "POS";
|
||||
$fOld = $this->fetchName('partner_pos', 'name', $old);
|
||||
$fNew = $this->fetchName('partner_pos', 'name', $new);
|
||||
break;
|
||||
|
||||
// --- Date Formatting ---
|
||||
case 'created_on':
|
||||
case 'updated_on':
|
||||
case 'issued_date':
|
||||
case 'start_date':
|
||||
case 'end_date':
|
||||
case 'date_of_registration':
|
||||
case 'enquiry_created_on':
|
||||
if($col == 'enquiry_created_on') $label = "Received Date";
|
||||
$fOld = ($old && $old != '0000-00-00') ? date("d-m-Y", strtotime($old)) : '-';
|
||||
$fNew = ($new && $new != '0000-00-00') ? date("d-m-Y", strtotime($new)) : '-';
|
||||
break;
|
||||
|
||||
// --- Status / Boolean Mapping ---
|
||||
case 'is_active':
|
||||
$label = "Data Status";
|
||||
$fOld = ($old == 1) ? "ACTIVE" : "INACTIVE";
|
||||
$fNew = ($new == 1) ? "ACTIVE" : "INACTIVE";
|
||||
break;
|
||||
|
||||
case 'is_invoice_generated':
|
||||
case 'is_data_accuracy_checked':
|
||||
$label = ($col == 'is_invoice_generated') ? "Invoice Generated" : "Data Accuracy Checked";
|
||||
$fOld = ($old == 1) ? "YES" : "NO";
|
||||
$fNew = ($new == 1) ? "YES" : "NO";
|
||||
break;
|
||||
|
||||
case 'is_data_created_by_handler':
|
||||
case 'is_data_created_by_staff':
|
||||
$label = str_replace('Is ', '', $label);
|
||||
$map = [null => "-", 1 => "Yes", 0 => "No"];
|
||||
$fOld = $map[$old] ?? "-";
|
||||
$fNew = $map[$new] ?? "-";
|
||||
break;
|
||||
case 'broker_id':
|
||||
$label = "Broker";
|
||||
$fOld = $this->fetchName('partner_brokers', 'name', $old);
|
||||
$fNew = $this->fetchName('partner_brokers', 'name', $new);
|
||||
break;
|
||||
case 'insurer_id':
|
||||
$label = "Insurer";
|
||||
$fOld = $this->fetchName('insurers', 'name', $old);
|
||||
$fNew = $this->fetchName('insurers', 'name', $new);
|
||||
break;
|
||||
case 'payment_mode_id':
|
||||
$label = "Payment Mode";
|
||||
$fOld = $this->fetchName('partner_payment_mode_master', 'value', $old);
|
||||
$fNew = $this->fetchName('partner_payment_mode_master', 'value', $new);
|
||||
|
||||
case 'insurer_branch_id':
|
||||
$label = "Insurer Branch";
|
||||
$fOld = $this->fetchName('insurer_branch', 'branch_name', $old);
|
||||
$fNew = $this->fetchName('insurer_branch', 'branch_name', $new);
|
||||
case 'vehicle_type_id':
|
||||
$label = "Vehicle Type";
|
||||
$fOld = $this->fetchName('vehicle_type', 'vehicle_type', $old);
|
||||
$fNew = $this->fetchName('vehicle_type', 'vehicle_type', $new);
|
||||
case 'agent_id':
|
||||
$label = "Partner";
|
||||
$fOld = $this->fetchName('partner_agent', 'name', $old);
|
||||
$fNew = $this->fetchName('partner_agent', 'name', $new);
|
||||
}
|
||||
|
||||
return ['label' => $label, 'old' => $fOld, 'new' => $fNew];
|
||||
}
|
||||
|
||||
private function fetchName($table, $nameCol, $id, $additionalWhere = [])
|
||||
{
|
||||
if (!$id) return '-';
|
||||
$db = \Config\Database::connect();
|
||||
$builder = $db->table($table);
|
||||
$builder->select($nameCol)->where('id', $id);
|
||||
foreach ($additionalWhere as $col => $val) {
|
||||
$builder->where($col, $val);
|
||||
}
|
||||
$result = $builder->get()->getRowArray();
|
||||
return $result[$nameCol] ?? '-';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user