merge supplier portal

This commit is contained in:
E98Developer 2026-04-26 05:41:20 +02:00
parent b107cbc0a9
commit 55d4d34930
5 changed files with 154 additions and 0 deletions

View File

@ -0,0 +1,27 @@
<?php
namespace App\Filament\Supplier\Resources\ProductStocks\Pages;
use App\Filament\Supplier\Resources\ProductStocks\ProductStockResource;
use Filament\Actions\Action;
use Filament\Resources\Pages\EditRecord;
class EditProductStock extends EditRecord
{
protected static string $resource = ProductStockResource::class;
protected function getHeaderActions(): array
{
return [
Action::make('back')
->label('Vissza a listához')
->url(fn () => ProductStockResource::getUrl('index'))
->color('gray'),
];
}
protected function getRedirectUrl(): string
{
return ProductStockResource::getUrl('index');
}
}

View File

@ -0,0 +1,11 @@
<?php
namespace App\Filament\Supplier\Resources\ProductStocks\Pages;
use App\Filament\Supplier\Resources\ProductStocks\ProductStockResource;
use Filament\Resources\Pages\ListRecords;
class ListProductStocks extends ListRecords
{
protected static string $resource = ProductStockResource::class;
}

View File

@ -0,0 +1,57 @@
<?php
namespace App\Filament\Supplier\Resources\ProductStocks;
use App\Filament\Supplier\Resources\ProductStocks\Pages\EditProductStock;
use App\Filament\Supplier\Resources\ProductStocks\Pages\ListProductStocks;
use App\Filament\Supplier\Resources\ProductStocks\Schemas\ProductStockForm;
use App\Filament\Supplier\Resources\ProductStocks\Tables\ProductStocksTable;
use App\Models\Product;
use BackedEnum;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Support\Icons\Heroicon;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
class ProductStockResource extends Resource
{
protected static ?string $model = Product::class;
protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedCube;
protected static ?string $navigationLabel = 'Termékeim';
protected static ?string $breadcrumb = 'Termékeim';
protected static ?string $modelLabel = 'Termék';
protected static ?string $pluralLabel = 'Termékeim';
/**
* Csak a bejelentkezett supplier saját termékei jelennek meg.
*/
public static function getEloquentQuery(): Builder
{
return parent::getEloquentQuery()
->where('supplier_id', auth()->user()->supplier_id);
}
public static function form(Schema $schema): Schema
{
return ProductStockForm::configure($schema);
}
public static function table(Table $table): Table
{
return ProductStocksTable::configure($table);
}
public static function getPages(): array
{
return [
'index' => ListProductStocks::route('/'),
'edit' => EditProductStock::route('/{record}/edit'),
];
}
}

View File

@ -0,0 +1,23 @@
<?php
namespace App\Filament\Supplier\Resources\ProductStocks\Schemas;
use App\Enums\StockStatusEnum;
use Filament\Forms\Components\Select;
use Filament\Schemas\Schema;
class ProductStockForm
{
public static function configure(Schema $schema): Schema
{
return $schema->components([
Select::make('stock_status')
->label('Készlet státusz')
->options(
collect(StockStatusEnum::cases())
->mapWithKeys(fn (StockStatusEnum $case) => [$case->value => $case->label()])
)
->required(),
]);
}
}

View File

@ -0,0 +1,36 @@
<?php
namespace App\Filament\Supplier\Resources\ProductStocks\Tables;
use App\Enums\StockStatusEnum;
use Filament\Actions\EditAction;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
class ProductStocksTable
{
public static function configure(Table $table): Table
{
return $table
->columns([
TextColumn::make('name')
->label('Termék neve')
->searchable()
->sortable(),
TextColumn::make('sku')
->label('Cikkszám')
->searchable(),
TextColumn::make('stock_status')
->label('Készlet státusz')
->badge()
->formatStateUsing(fn (StockStatusEnum $state) => $state->label())
->color(fn (StockStatusEnum $state) => $state->color()),
])
->recordAction('edit')
->actions([
EditAction::make()->label('Státusz módosítása'),
]);
}
}