individui e gruppi

This commit is contained in:
2026-06-18 19:41:27 +02:00
parent d2084b9d07
commit baea181159
7 changed files with 109 additions and 25 deletions
+10 -2
View File
@@ -11,6 +11,7 @@ use App\Models\Tag;
use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
class GruppoController extends Controller
@@ -385,9 +386,12 @@ class GruppoController extends Controller
'file' => 'required|file|mimes:csv,txt',
]);
set_time_limit(0);
session_write_close();
$file = $request->file('file');
$handle = fopen($file->path(), 'r');
$header = fgetcsv($handle, 1000, ',');
$header = fgetcsv($handle, 0, ',');
if ($header === false) {
fclose($handle);
@@ -400,7 +404,9 @@ class GruppoController extends Controller
$errors = [];
$rowNumber = 1;
while (($row = fgetcsv($handle, 1000, ',')) !== false) {
DB::beginTransaction();
while (($row = fgetcsv($handle, 0, ',')) !== false) {
$rowNumber++;
if (count($row) < count($header)) {
@@ -444,6 +450,8 @@ class GruppoController extends Controller
fclose($handle);
DB::commit();
$message = 'Importati ' . $imported . ' gruppi.';
if ($skipped > 0) {
$message .= ' Saltate ' . $skipped . ' righe (vuote o incomplete).';
+29 -11
View File
@@ -1,19 +1,23 @@
<?php
declare(strict_types=1);
namespace App\Http\Controllers;
use App\Models\Individuo;
use App\Models\Contatto;
use App\Models\Documento;
use App\Models\Gruppo;
use App\Models\Comune;
use App\Models\Diocesi;
use App\Models\Tag;
use App\Models\VistaReport;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Illuminate\Validation\Rule;
use Symfony\Component\HttpFoundation\StreamedResponse;
use App\Models\Gruppo;
use App\Models\Comune;
use App\Models\Diocesi;
use App\Models\Tag;
use App\Models\VistaReport;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Storage;
use Illuminate\Validation\Rule;
use Symfony\Component\HttpFoundation\StreamedResponse;
class IndividuoController extends Controller
{
@@ -497,16 +501,27 @@ public function emailList(Request $request)
'file' => 'required|file|mimes:csv,txt',
]);
set_time_limit(0);
session_write_close();
$file = $request->file('file');
$handle = fopen($file->path(), 'r');
$header = fgetcsv($handle, 1000, ',');
$header = fgetcsv($handle, 0, ',');
if ($header === false) {
fclose($handle);
return back()->with('error', 'Il file CSV non è valido.');
}
$header = array_map('trim', $header);
$imported = 0;
$skipped = 0;
$errors = [];
$rowNumber = 1;
while (($row = fgetcsv($handle, 1000, ',')) !== false) {
DB::beginTransaction();
while (($row = fgetcsv($handle, 0, ',')) !== false) {
$rowNumber++;
if (count($row) < count($header)) {
@@ -565,12 +580,15 @@ public function emailList(Request $request)
$imported++;
} catch (\Exception $e) {
Log::warning('Errore import individuo riga ' . $rowNumber . ': ' . $e->getMessage());
$errors[] = 'Errore riga ' . $rowNumber . ': ' . $e->getMessage();
}
}
fclose($handle);
DB::commit();
$message = 'Importati ' . $imported . ' individui.';
if ($skipped > 0) {
$message .= ' Saltate ' . $skipped . ' righe (vuote o incomplete).';