$accessnumber, 'validation' => [], 'sample_collection' => [] ]; $sqlAudit = "SELECT EVENT_TYPE, USERID, EVENT_AT, REASON FROM GDC_CMOD.dbo.AUDIT_EVENTS WHERE ACCESSNUMBER = ? ORDER BY EVENT_AT ASC"; $auditRows = $db->query($sqlAudit, [$accessnumber])->getResultArray(); foreach ($auditRows as $row) { $isUnval = $row['EVENT_TYPE'] === 'UNVAL'; $result['validation'][] = [ 'type' => $row['EVENT_TYPE'], 'user' => trim($row['USERID']), 'datetime' => $row['EVENT_AT'] ? date('Y-m-d H:i:s', strtotime($row['EVENT_AT'])) : null, 'reason' => $isUnval ? trim($row['REASON']) : null ]; } $sqlTube = "SELECT TUBENUMBER, USERID, STATUS, LOGDATE FROM GDC_CMOD.dbo.AUDIT_TUBES WHERE ACCESSNUMBER = ? ORDER BY LOGDATE ASC"; $tubeRows = $db->query($sqlTube, [$accessnumber])->getResultArray(); foreach ($tubeRows as $row) { $action = $row['STATUS'] == 1 ? 'COLLECTED' : 'UNRECEIVED'; $result['sample_collection'][] = [ 'tubenumber' => trim($row['TUBENUMBER']), 'user' => trim($row['USERID']), 'datetime' => $row['LOGDATE'] ? date('Y-m-d H:i:s', strtotime($row['LOGDATE'])) : null, 'action' => $action ]; } return $this->respond(['status' => 'success', 'data' => $result]); } }