Move this over for the import

This commit is contained in:
Lance Pioch 2024-03-26 22:34:42 -04:00
parent 0af0bea90d
commit 090b2e6f1b
2 changed files with 41 additions and 34 deletions

View File

@ -4,16 +4,11 @@ namespace App\Filament\Resources;
use App\Filament\Resources\EggResource\Pages;
use App\Models\Egg;
use App\Services\Eggs\Sharing\EggImporterService;
use Exception;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Notifications\Notification;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
use Livewire\Component;
use Livewire\Features\SupportFileUploads\TemporaryUploadedFile;
class EggResource extends Resource
{
@ -178,35 +173,7 @@ class EggResource extends Resource
Tables\Actions\EditAction::make(),
])
->headerActions([
Tables\Actions\Action::make('Import Egg')
->form([
Forms\Components\FileUpload::make('egg')->storeFiles(false),
])
->action(function (array $data, Component $livewire): void {
/** @var TemporaryUploadedFile $eggFile */
$eggFile = $data['egg'];
/** @var EggImporterService $eggImportService */
$eggImportService = resolve(EggImporterService::class);
try {
$newEgg = $eggImportService->handle($eggFile);
} catch (Exception $exception) {
Notification::make()
->title("Imported egg successfully: {$exception->getMessage()}")
->success()
->send();
return;
}
Notification::make()
->title("Imported egg successfully: $newEgg->name")
->success()
->send();
$livewire->redirect(route('filament.admin.resources.eggs.edit', [$newEgg]));
})
//
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([

View File

@ -3,8 +3,13 @@
namespace App\Filament\Resources\EggResource\Pages;
use App\Filament\Resources\EggResource;
use App\Services\Eggs\Sharing\EggImporterService;
use Exception;
use Filament\Actions;
use Filament\Forms;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\ListRecords;
use Livewire\Features\SupportFileUploads\TemporaryUploadedFile;
class ListEggs extends ListRecords
{
@ -14,6 +19,41 @@ class ListEggs extends ListRecords
{
return [
Actions\CreateAction::make(),
Actions\Action::make('import')
->label('Import Egg')
->form([
Forms\Components\FileUpload::make('egg')
->acceptedFileTypes(['application/json'])
->storeFiles(false),
])
->action(function (array $data): void {
/** @var TemporaryUploadedFile $eggFile */
$eggFile = $data['egg'];
/** @var EggImporterService $eggImportService */
$eggImportService = resolve(EggImporterService::class);
try {
$newEgg = $eggImportService->handle($eggFile);
} catch (Exception $exception) {
Notification::make()
->title("Imported egg successfully: {$exception->getMessage()}")
->success()
->send();
return;
}
Notification::make()
->title("Imported egg successfully: $newEgg->name")
->success()
->send();
redirect()->route('filament.admin.resources.eggs.edit', [$newEgg]);
// $livewire->redirect(route('filament.admin.resources.eggs.edit', [$newEgg]));
})
];
}
}