components([ Schemas\Components\Section::make('Profil') ->columns(2) ->schema([ Forms\Components\Select::make('user_id') ->label('Utilizator') ->options(fn () => User::orderBy('name')->pluck('name', 'id')) ->searchable() ->required() ->unique(ignoreRecord: true), Forms\Components\TextInput::make('position')->label('Funcție')->maxLength(120), Forms\Components\DatePicker::make('hire_date')->label('Angajat din'), ]), Schemas\Components\Section::make('Salariu & comisioane') ->columns(3) ->schema([ Forms\Components\TextInput::make('base_salary')->label('Salariu bază')->numeric()->default(0), Forms\Components\TextInput::make('works_pct') ->label('% manopere') ->numeric()->default(0) ->suffix('%') ->helperText('% din venitul manoperelor finalizate.'), Forms\Components\TextInput::make('parts_pct') ->label('% marja piese') ->numeric()->default(0) ->suffix('%') ->helperText('% din marja (sell-buy) pieselor montate.'), ]), Forms\Components\Textarea::make('notes')->label('Notițe')->columnSpanFull()->rows(2), ]); } public static function table(Table $table): Table { return $table ->columns([ Tables\Columns\TextColumn::make('user.name')->label('Nume')->searchable()->sortable(), Tables\Columns\TextColumn::make('position')->label('Funcție')->placeholder('—'), Tables\Columns\TextColumn::make('base_salary')->money('MDL')->alignRight(), Tables\Columns\TextColumn::make('works_pct')->label('% Manopere') ->formatStateUsing(fn ($s) => $s . '%')->alignRight(), Tables\Columns\TextColumn::make('parts_pct')->label('% Piese') ->formatStateUsing(fn ($s) => $s . '%')->alignRight(), Tables\Columns\TextColumn::make('hire_date')->date('d.m.Y')->placeholder('—'), ]) ->actions([ Actions\EditAction::make(), Actions\DeleteAction::make(), ]) ->defaultSort('user_id'); } public static function getPages(): array { return [ 'index' => Pages\ListEmployeeProfiles::route('/'), 'create' => Pages\CreateEmployeeProfile::route('/create'), 'edit' => Pages\EditEmployeeProfile::route('/{record}/edit'), ]; } }