Implement file reading and database insertion in readFiles method
This commit is contained in:
@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
|
|||||||
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Str;
|
use Str;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
class SapFileController extends Controller
|
class SapFileController extends Controller
|
||||||
{
|
{
|
||||||
@@ -86,7 +87,6 @@ class SapFileController extends Controller
|
|||||||
return response()->json([
|
return response()->json([
|
||||||
'status' => 'error',
|
'status' => 'error',
|
||||||
'status_description' => 'Failed to scan directory',
|
'status_description' => 'Failed to scan directory',
|
||||||
// 'debug' => ['path_checked' => $path]
|
|
||||||
], 500);
|
], 500);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -102,23 +102,57 @@ class SapFileController extends Controller
|
|||||||
], 404);
|
], 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = [];
|
// $data = [];
|
||||||
foreach ($files as $file)
|
// foreach ($files as $file)
|
||||||
{
|
// {
|
||||||
$filePath = $path . '/' . $file;
|
// $filePath = $path . '/' . $file;
|
||||||
|
|
||||||
$content = file_get_contents($filePath);
|
// $content = file_get_contents($filePath);
|
||||||
|
|
||||||
$data[] = [
|
// $data[] = [
|
||||||
'filename' => $file,
|
// 'filename' => $file,
|
||||||
'content' => $content,
|
// 'content' => $content,
|
||||||
];
|
// ];
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return response()->json([
|
||||||
|
// 'status' => 'success',
|
||||||
|
// 'files' => $data,
|
||||||
|
// ]);
|
||||||
|
|
||||||
|
$fileName = 'RMGLAS02-1725800-1.txt';
|
||||||
|
|
||||||
|
$lines = file($fileName, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
||||||
|
if (!$lines) {
|
||||||
|
return response()->json(['status' => 'ERROR', 'message' => 'File is empty'], 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
return response()->json([
|
$table = 'class_characteristics';
|
||||||
'status' => 'success',
|
$columns = Schema::getColumnListing($table); // returns lowercase column names
|
||||||
'files' => $data,
|
|
||||||
]);
|
$rows = [];
|
||||||
|
foreach ($lines as $line) {
|
||||||
|
$values = str_getcsv($line); // split by comma
|
||||||
|
|
||||||
|
$row = [];
|
||||||
|
foreach ($columns as $index => $column) {
|
||||||
|
$value = $values[$index] ?? null; // if missing, set null
|
||||||
|
if ($value === '') $value = null; // empty string -> null
|
||||||
|
$row[$column] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
$rows[] = $row;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Insert into database
|
||||||
|
foreach ($rows as $row) {
|
||||||
|
\App\Models\ClassCharacteristic::create($row);
|
||||||
|
}
|
||||||
|
|
||||||
|
return response()->json([
|
||||||
|
'status' => 'SUCCESS',
|
||||||
|
'rows_imported' => count($rows),
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user