Files
fotospiel-app/app/Filament/Resources/EmotionResource/Pages/ImportEmotions.php
Codex Agent fa33e7cbcf Fix Event & EventType resource issues and apply formatting
- Fix EventType deletion error handling (constraint violations)
- Fix Event update error (package_id column missing)
- Fix Event Type dropdown options (JSON display issue)
- Fix EventPackagesRelationManager query error
- Add missing translations for deletion errors
- Apply Pint formatting
2026-01-21 10:34:06 +01:00

60 lines
1.7 KiB
PHP

<?php
namespace App\Filament\Resources\EmotionResource\Pages;
use App\Filament\Resources\EmotionResource;
use App\Services\EmotionImportService;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Form;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\Page;
use Illuminate\Support\Facades\Storage;
class ImportEmotions extends Page
{
protected static string $resource = EmotionResource::class;
protected string $view = 'filament.resources.emotion-resource.pages.import-emotions';
protected ?string $heading = null;
public ?string $file = null;
public function form(Form $form): Form
{
return $form->schema([
FileUpload::make('file')
->label(__('admin.common.csv_file'))
->acceptedFileTypes(['text/csv', 'text/plain'])
->directory('imports')
->required(),
]);
}
public function doImport(): void
{
$this->validate();
$path = $this->form->getState()['file'] ?? null;
if (! $path || ! Storage::disk('public')->exists($path)) {
Notification::make()->danger()->title(__('admin.notifications.file_not_found'))->send();
return;
}
$fullPath = Storage::disk('public')->path($path);
[$ok, $fail] = app(EmotionImportService::class)->import($fullPath);
Notification::make()
->success()
->title(__('admin.notifications.imported_rows', ['count' => $ok]))
->body($fail ? __('admin.notifications.failed_count', ['count' => $fail]) : null)
->send();
}
public function getHeading(): string
{
return __('admin.emotions.import.heading');
}
}