Refactor readFiles method to streamline CSV row processing and ensure unique remaining row is returned
This commit is contained in:
@@ -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
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user