feat: remove obsolete glass configurations, add title import functionality
- Deleted the `vetro.json` file containing glass configurations. - Introduced `ImportaTitoliAction` to facilitate importing model titles from Excel. - Created `TitoliModelliImporter` for handling title import logic and updating existing models. - Updated `SistemaResource` to include the new title import action. - Modified `ConfigurazioneModello` to adjust the model name retrieval logic. - Changed `ListinoImporter` to make the alias constant public. - Added tests for title import functionality, ensuring correct updates and creation of new models.
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\SistemaResource\Actions;
|
||||
|
||||
use App\Models\Sistema;
|
||||
use App\Support\Listini\TitoliModelliImporter;
|
||||
use Filament\Forms;
|
||||
use Filament\Notifications\Notification;
|
||||
use Filament\Tables\Actions\Action;
|
||||
use Livewire\Features\SupportFileUploads\TemporaryUploadedFile;
|
||||
use Throwable;
|
||||
|
||||
/**
|
||||
* Importa da Excel i titoli dei modelli di un sistema (colonne ORDINE = codice e TITOLO):
|
||||
* aggiorna solo il titolo dei modelli esistenti e crea disattivi quelli nuovi.
|
||||
*/
|
||||
class ImportaTitoliAction
|
||||
{
|
||||
public static function make(): Action
|
||||
{
|
||||
return Action::make('importaTitoli')
|
||||
->label('Importa titoli')
|
||||
->icon('heroicon-o-document-text')
|
||||
->color('gray')
|
||||
->modalHeading(fn (Sistema $record) => "Importa titoli dei modelli {$record->nome}")
|
||||
->modalSubmitActionLabel('Importa titoli')
|
||||
->form([
|
||||
Forms\Components\FileUpload::make('file')
|
||||
->label('File Excel')
|
||||
->helperText('File .xls o .xlsx con le colonne ORDINE (codice del modello) e TITOLO. Dei modelli esistenti si aggiorna solo il titolo; i codici nuovi creano un modello disattivo.')
|
||||
->required()
|
||||
->storeFiles(false)
|
||||
->maxSize(10240),
|
||||
])
|
||||
->action(function (array $data, Sistema $record) {
|
||||
$file = is_array($data['file']) ? reset($data['file']) : $data['file'];
|
||||
|
||||
try {
|
||||
$titoli = $file instanceof TemporaryUploadedFile ? TitoliModelliImporter::leggi($file->getRealPath()) : [];
|
||||
} catch (Throwable $e) {
|
||||
report($e);
|
||||
$titoli = [];
|
||||
}
|
||||
|
||||
if (! $titoli) {
|
||||
Notification::make()
|
||||
->title('Nessun titolo trovato')
|
||||
->body('Il file non è un Excel valido o non ha le colonne ORDINE e TITOLO.')
|
||||
->danger()
|
||||
->send();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$esito = TitoliModelliImporter::importa($record, $titoli);
|
||||
|
||||
$righe = [
|
||||
count($esito['aggiornati']).' titoli aggiornati, '.$esito['invariati'].' già corretti.',
|
||||
];
|
||||
if ($esito['creati']) {
|
||||
$righe[] = 'Nuovi modelli (disattivi): '.implode(', ', $esito['creati']).'.';
|
||||
}
|
||||
|
||||
Notification::make()
|
||||
->title('Titoli importati')
|
||||
->body(implode(' ', $righe))
|
||||
->success()
|
||||
->persistent()
|
||||
->send();
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user