where('role', 'mechanic'); } public static function form(Schema $schema): Schema { return $schema->components([ Schemas\Components\Section::make(__('Date personale')) ->columns(2) ->schema([ Forms\Components\TextInput::make('name')->label(__('Nume'))->required()->maxLength(120), Forms\Components\TextInput::make('phone')->label(__('Telefon'))->tel()->maxLength(40), Forms\Components\TextInput::make('email')->label(__('Email'))->email()->maxLength(120), Forms\Components\Select::make('status') ->options(['active' => __('Activ'), 'inactive' => __('Inactiv'), 'blocked' => __('Blocat')]) ->default('active') ->required(), ]), Schemas\Components\Section::make(__('Profesie')) ->columns(2) ->schema([ Forms\Components\TextInput::make('specialization') ->label(__('Specializare')) ->placeholder(__('Motor / Frâne / Electrică ...')) ->maxLength(120), Forms\Components\ColorPicker::make('color')->label(__('Culoare în calendar')), Forms\Components\TextInput::make('hourly_rate')->label(__('Tarif/oră'))->numeric(), Forms\Components\Hidden::make('role')->default('mechanic'), ]), Schemas\Components\Section::make(__('Acces în aplicație (opțional)')) ->columns(1) ->collapsed() ->schema([ Forms\Components\TextInput::make('password') ->label(__('Parolă (lasă gol pentru a nu schimba)')) ->password() ->minLength(6) ->dehydrated(fn ($state) => filled($state)) ->dehydrateStateUsing(fn ($state) => Hash::make($state)), ]), ]); } public static function table(Table $table): Table { return $table ->columns([ Tables\Columns\ColorColumn::make('color')->label(''), Tables\Columns\TextColumn::make('name')->searchable()->sortable(), Tables\Columns\TextColumn::make('specialization') ->label(__('Specializare')) ->placeholder('—') ->formatStateUsing(fn ($state) => $state ? implode(' / ', array_map(fn ($p) => __(trim($p)), explode('/', $state))) : null), Tables\Columns\TextColumn::make('phone')->copyable()->placeholder('—'), Tables\Columns\TextColumn::make('hourly_rate')->label(__('Tarif/h'))->money('MDL')->alignRight()->placeholder('—'), Tables\Columns\TextColumn::make('status') ->badge() ->colors([ 'success' => ['active'], 'warning' => ['inactive'], 'danger' => ['blocked'], ]), ]) ->actions([ Actions\EditAction::make(), Actions\DeleteAction::make(), ]) ->defaultSort('name'); } public static function getPages(): array { return [ 'index' => Pages\ListMasters::route('/'), 'create' => Pages\CreateMaster::route('/create'), 'edit' => Pages\EditMaster::route('/{record}/edit'), ]; } }