schema([ Select::make('tenant_id') ->relationship('tenant', 'name') ->required() ->searchable(), Select::make('package_id') ->relationship('package', 'name') ->required() ->searchable(), DateTimePicker::make('purchased_at'), DateTimePicker::make('expires_at'), Toggle::make('active')->default(true), ]); } public static function table(Table $table): Table { return $table ->columns([ TextColumn::make('tenant.name')->searchable()->sortable(), TextColumn::make('package.name')->badge()->color('success'), TextColumn::make('purchased_at')->dateTime()->sortable(), TextColumn::make('expires_at')->dateTime()->sortable(), IconColumn::make('active')->boolean(), ]) ->filters([]) ->actions([ ActionGroup::make([ ViewAction::make(), EditAction::make() ->after(fn (array $data, TenantPackage $record) => app(SuperAdminAuditLogger::class)->recordModelMutation( 'updated', $record, SuperAdminAuditLogger::fieldsMetadata($data), static::class )), DeleteAction::make() ->after(fn (TenantPackage $record) => app(SuperAdminAuditLogger::class)->recordModelMutation( 'deleted', $record, source: static::class )), ]), ]) ->bulkActions([ BulkActionGroup::make([ DeleteBulkAction::make() ->after(function (Collection $records): void { $logger = app(SuperAdminAuditLogger::class); foreach ($records as $record) { $logger->recordModelMutation( 'deleted', $record, source: static::class ); } }), ]), ]); } public static function getRelations(): array { return []; } public static function getPages(): array { return [ 'index' => Pages\ListTenantPackages::route('/'), 'create' => Pages\CreateTenantPackage::route('/create'), 'view' => Pages\ViewTenantPackage::route('/{record}'), 'edit' => Pages\EditTenantPackage::route('/{record}/edit'), ]; } }