class BusinessStageResource extends Resource { use HasModeFieldTrait, HasAdminSettingField; protected static ?string $model = BusinessStage::class; protected static ?string $modelLabel = 'Business Stage'; protected static ?string $pluralModelLabel = 'Business Stages'; protected static ?string $navigationGroup = 'Core Tables'; protected static ?string $navigationLabel = 'Business Stages'; protected static ?int $navigationSort = 1; public static function getEloquentQuery(): Builder { $settings = app('settings'); $query = parent::getEloquentQuery() ->whereHas('adminSetting', function (Builder $q) { $q->activeAppointedRepresentatives(); }); return $query->orderBy('admin_setting_id')->orderBy('id', 'desc'); } public static function form(Form $form): Form { $settings = app('settings'); return $form ->schema([ Section::make() ->schema([ Grid::make(1) ->schema([ (new self())->adminSettingSelect($settings), TextInput::make('business_stage') ->label('Business Stage') ->placeholder('Business Stage') ->validationAttribute('business stage') ->required() ->maxLength(191) ->unique( ignoreRecord: true, modifyRuleUsing: HasAdminSettingField::adminSettingUniqueRule($settings) ), (new self())->modeField(), ]), ]), ]); } public static function table(Table $table): Table { $settings = app('settings'); return $table ->defaultPaginationPageOption(25) ->columns([ TextColumn::make('id') ->toggleable() ->label('ID') ->sortable(), (new self())->adminSettingTextColumn('adminSetting.title', $settings), TextColumn::make('business_stage') ->label('Business Stage') ->sortable() ->searchable(), (new self())->modeColumn(), TextColumn::make('created_at') ->dateTime() ->sortable() ->toggleable(isToggledHiddenByDefault: true), TextColumn::make('updated_at') ->dateTime() ->sortable() ->toggleable(isToggledHiddenByDefault: true), ]) ->modifyQueryUsing(function (Builder $query) use ($settings) { if ($settings->is_master === 'no') { return $query->where('admin_setting_id', $settings->id); } }) ->filters([ (new self())->adminSettingSelectFilter('adminSetting', $settings), (new self())->modeFilter(), ]) ->actions([ Tables\Actions\EditAction::make() ->modalWidth(MaxWidth::Large) ->slideOver(), Tables\Actions\DeleteAction::make(), ]) ->bulkActions([ Tables\Actions\BulkActionGroup::make([ Tables\Actions\DeleteBulkAction::make(), ]), ]); } public static function getPages(): array { return [ 'index' => Pages\ListBusinessStages::route('/'), // 'create' => Pages\CreateBusinessStage::route('/create'), // 'edit' => Pages\EditBusinessStage::route('/{record}/edit'), ]; } } ?>