Refactor readFiles method to streamline CSV row processing and ensure unique remaining row is returned

This commit is contained in:
dhanabalan
2025-09-26 11:57:28 +05:30
parent 9774cda2ad
commit b2cf4dc18e

View File

@@ -180,40 +180,71 @@ class SapFileController extends Controller
// Prepare arrays // Prepare arrays
$serialNumbers = []; // $serialNumbers = [];
$remainingRows = []; // $remainingRows = [];
foreach ($lines as $line) // foreach ($lines as $line)
{ // {
// $values = str_getcsv($line);
// // Debug: make sure CSV split is correct
// if (count($values) < 6) {
// return response()->json([
// 'status' => 'ERROR',
// 'message' => 'In text file has fewer than 6 columns',
// 'line' => $line
// ], 400);
// }
// $serialNumbers[] = $values[5] ?? null;
// $remainingRow = $values;
// unset($remainingRow[5]);
// // $remainingRow = array_values($remainingRow); // reindex
// // $remainingRows[] = $remainingRow;
// $remainingRow = array_values($remainingRow); // reindex
// // Only add unique remaining rows
// if (!in_array($remainingRow, $remainingRows, true)) {
// $remainingRows[] = $remainingRow;
// }
// }
// return response()->json([
// 'status' => 'SUCCESS',
// 'serial_numbers' => $serialNumbers,
// 'remaining_rows_sample' => array_slice($remainingRows, 0, 5), // just first 5 for debug
// ]);
$serialNumbers = [];
$remainingRow = null;
foreach ($lines as $line) {
$values = str_getcsv($line); $values = str_getcsv($line);
// Debug: make sure CSV split is correct
if (count($values) < 6) { if (count($values) < 6) {
return response()->json([ return response()->json([
'status' => 'ERROR', 'status' => 'ERROR',
'message' => 'In text file has fewer than 6 columns', 'message' => 'Text file row has fewer than 6 columns',
'line' => $line 'line' => $line
], 400); ], 400);
} }
// Collect serial number
$serialNumbers[] = $values[5] ?? null; $serialNumbers[] = $values[5] ?? null;
$remainingRow = $values; // Store remaining row only once
unset($remainingRow[5]); if ($remainingRow === null) {
// $remainingRow = array_values($remainingRow); // reindex $remainingRow = $values;
// $remainingRows[] = $remainingRow; unset($remainingRow[5]); // remove serial number
$remainingRow = array_values($remainingRow); // reindex $remainingRow = array_values($remainingRow); // reindex
// Only add unique remaining rows
if (!in_array($remainingRow, $remainingRows, true)) {
$remainingRows[] = $remainingRow;
} }
} }
return response()->json([ return response()->json([
'status' => 'SUCCESS', 'status' => 'SUCCESS',
'serial_numbers' => $serialNumbers, 'serial_numbers' => $serialNumbers,
'remaining_rows_sample' => array_slice($remainingRows, 0, 5), // just first 5 for debug 'remaining_row' => $remainingRow, // only one copy
]); ]);
} }