diff --git a/app/Http/Controllers/FileController.php b/app/Http/Controllers/FileController.php index b15f114..db4451f 100644 --- a/app/Http/Controllers/FileController.php +++ b/app/Http/Controllers/FileController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers; use App\Http\Requests\FileRequest; use App\Http\Requests\StorefileRequest; use App\Http\Requests\UpdatefileRequest; +use App\Jobs\ImportCSVFileJob; use App\Models\file; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; @@ -14,28 +15,14 @@ class FileController extends Controller { public function uploadFile(FileRequest $request): RedirectResponse { - + //save file in storage/app/public/file_temp $filename = 'new_file.'.$request->file("filetoinsert")->getClientOriginalExtension(); $request->file("filetoinsert")->storeAs('file_temp', $filename); - // Leggi il contenuto del file CSV - $contenutoCSV = Storage::get('file_temp/new_file.csv'); - - // Analizza il contenuto CSV - $righeCSV = str_getcsv($contenutoCSV, "\n"); - - // Converte le righe CSV in un array associativo - $dati = []; - foreach ($righeCSV as $riga) { - $dati[] = str_getcsv($riga); - } - - // Converte l'array in formato JSON - $json = json_encode($dati); - - // Stampa il JSON - echo $json; + //get file path + $filepath = storage_path('app/public/file_temp/new_file.csv'); + dispatch(new ImportCSVFileJob($filepath)); return redirect('/words'); } diff --git a/app/Http/Requests/FileRequest.php b/app/Http/Requests/FileRequest.php index 8fec1d9..d4787b5 100644 --- a/app/Http/Requests/FileRequest.php +++ b/app/Http/Requests/FileRequest.php @@ -18,7 +18,7 @@ class FileRequest extends FormRequest public function rules(): array { return [ - 'filetoinsert' => ['required', 'mimes:txt']//, File::types(['csv'])] + 'filetoinsert' => ['required', 'mimes:csv']//, File::types(['csv'])] ]; } diff --git a/app/Jobs/ImportCSVFileJob.php b/app/Jobs/ImportCSVFileJob.php new file mode 100644 index 0000000..dbb809e --- /dev/null +++ b/app/Jobs/ImportCSVFileJob.php @@ -0,0 +1,52 @@ +filepath = $filepath; + } + + /** + * Execute the job. + */ + public function handle(): void + { + $mapping = [ + 'name' => 0, 'translation' => 1, + ]; + $fileStream = fopen($this->filepath, 'r'); + $skipHeader = true; + while ($row = fgetcsv($fileStream)) { + if ($skipHeader) { + $skipHeader = false; + continue; + } + Word::updateOrCreate( + [ + 'name' => $row[$mapping['name']], + 'translation' => $row[$mapping['translation']], + ] + ); + } + fclose($fileStream); + Storage::delete($this->filepath); + } +} diff --git a/config/queue.php b/config/queue.php index 01c6b05..84eebcd 100644 --- a/config/queue.php +++ b/config/queue.php @@ -38,7 +38,7 @@ return [ 'driver' => 'database', 'table' => 'jobs', 'queue' => 'default', - 'retry_after' => 90, + 'retry_after' => 1250, 'after_commit' => false, ], diff --git a/database/seeders/AdminUserSeeder.php b/database/seeders/AdminUserSeeder.php index 18fc4c0..0a19378 100644 --- a/database/seeders/AdminUserSeeder.php +++ b/database/seeders/AdminUserSeeder.php @@ -15,9 +15,9 @@ class AdminUserSeeder extends Seeder public function run(): void { $superAdmin = User::create([ - 'name' => 'Kagir', - 'email' => 'kagir.dev@gmail.com ', - 'password' => Hash::make('Prova123!') + 'name' => 'paolo', + 'email' => 'paolo.guagnano1986@gmail.com', + 'password' => Hash::make('paolo220186') ]); $superAdmin->assignRole('ADMIN'); } diff --git a/resources/views/components/input-label.blade.php b/resources/views/components/input-label.blade.php index e93b059..50b42c0 100644 --- a/resources/views/components/input-label.blade.php +++ b/resources/views/components/input-label.blade.php @@ -1,5 +1,7 @@ @props(['value']) -