diff --git a/app/Http/Controllers/SapFileController.php b/app/Http/Controllers/SapFileController.php index a22e8c8..f4b5e57 100644 --- a/app/Http/Controllers/SapFileController.php +++ b/app/Http/Controllers/SapFileController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; use Str; +use Illuminate\Support\Facades\Schema; class SapFileController extends Controller { @@ -86,7 +87,6 @@ class SapFileController extends Controller return response()->json([ 'status' => 'error', 'status_description' => 'Failed to scan directory', - // 'debug' => ['path_checked' => $path] ], 500); } @@ -102,23 +102,57 @@ class SapFileController extends Controller ], 404); } - $data = []; - foreach ($files as $file) - { - $filePath = $path . '/' . $file; + // $data = []; + // foreach ($files as $file) + // { + // $filePath = $path . '/' . $file; - $content = file_get_contents($filePath); + // $content = file_get_contents($filePath); - $data[] = [ - 'filename' => $file, - 'content' => $content, - ]; + // $data[] = [ + // 'filename' => $file, + // '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([ - 'status' => 'success', - 'files' => $data, - ]); + $table = 'class_characteristics'; + $columns = Schema::getColumnListing($table); // returns lowercase column names + + $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), + ]); }