schema([ Forms\Components\Section::make('اطلاعات قالب')->schema([ Forms\Components\TextInput::make('item_title') ->label('عنوان آیتم/مرحله') ->required() ->maxLength(255) ->placeholder('مثلاً: تماس با گیرنده، آماده‌سازی بار، ارسال به انبار'), Forms\Components\Toggle::make('is_required') ->label('الزامی') ->default(true) ->helperText('اگر الزامی باشد، ناقص ماندنش در گزارش «سفارش‌های مشکل‌دار» ظاهر می‌شود.'), Forms\Components\TextInput::make('sort_order') ->label('ترتیب نمایش') ->numeric() ->default(0) ->minValue(0), Forms\Components\Select::make('direction') ->label('اعمال به جهت') ->options([ 'both' => 'هر دو (صادرات و واردات)', 'export' => 'فقط صادرات', 'import' => 'فقط واردات', ]) ->default('both') ->required(), Forms\Components\Toggle::make('is_active') ->label('فعال') ->default(true), ])->columns(2), ]); } public static function table(Table $table): Table { return $table ->columns([ Tables\Columns\TextColumn::make('item_title') ->label('عنوان') ->searchable() ->weight('bold'), Tables\Columns\IconColumn::make('is_required') ->label('الزامی') ->boolean() ->trueIcon('heroicon-o-exclamation-circle') ->falseIcon('heroicon-o-minus-circle') ->trueColor('danger') ->falseColor('gray'), Tables\Columns\TextColumn::make('sort_order') ->label('ترتیب') ->sortable(), Tables\Columns\TextColumn::make('direction') ->label('جهت') ->badge() ->formatStateUsing(fn (string $state) => match ($state) { 'both' => 'هر دو', 'export' => 'صادرات', 'import' => 'واردات', default => $state, }) ->color(fn (string $state) => match ($state) { 'both' => 'info', 'export' => 'warning', 'import' => 'success', default => 'gray', }), Tables\Columns\IconColumn::make('is_active') ->label('فعال') ->boolean(), ]) ->defaultSort('sort_order', 'asc') ->filters([ Tables\Filters\SelectFilter::make('direction') ->options([ 'both' => 'هر دو', 'export' => 'صادرات', 'import' => 'واردات', ]), Tables\Filters\TernaryFilter::make('is_active')->label('فعال'), ]) ->actions([ Tables\Actions\EditAction::make(), Tables\Actions\DeleteAction::make(), ]) ->bulkActions([ Tables\Actions\BulkActionGroup::make([ Tables\Actions\DeleteBulkAction::make(), ]), ]); } public static function getRelations(): array { return []; } public static function getPages(): array { return [ 'index' => Pages\ListShipmentChecklistTemplates::route('/'), 'create' => Pages\CreateShipmentChecklistTemplate::route('/create'), 'edit' => Pages\EditShipmentChecklistTemplate::route('/{record}/edit'), ]; } public static function canViewAny(): bool { return auth()->user()?->hasAnyRole(['super_admin', 'admin', 'staff']) ?? false; } public static function canCreate(): bool { return auth()->user()?->hasRole('super_admin') ?? false; } public static function canEdit($record): bool { return auth()->user()?->hasRole('super_admin') ?? false; } public static function canDelete($record): bool { return auth()->user()?->hasRole('super_admin') ?? false; } }