Implement file reading and database insertion in readFiles method

This commit is contained in:
dhanabalan
2025-09-26 11:13:38 +05:30
parent 92a3b5a448
commit 086910122e

View File

@@ -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,22 +102,56 @@ 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);
}
$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([ return response()->json([
'status' => 'success', 'status' => 'SUCCESS',
'files' => $data, 'rows_imported' => count($rows),
]); ]);
} }