diff --git a/app/Filament/Resources/Users/RelationManagers/ContractsRelationManager.php b/app/Filament/Resources/Users/RelationManagers/ContractsRelationManager.php new file mode 100644 index 0000000..958170e --- /dev/null +++ b/app/Filament/Resources/Users/RelationManagers/ContractsRelationManager.php @@ -0,0 +1,85 @@ +components([ + TextInput::make('name') + ->required(), + TextInput::make('type') + ->required(), + Select::make('responsible_id') + ->relationship('responsible', 'name') + ->required(), + TextInput::make('contractable_id') + ->numeric(), + TextInput::make('contractable_type'), + ]); + } + + public function table(Table $table): Table + { + return $table + ->recordTitleAttribute('name') + ->columns([ + TextColumn::make('name') + ->searchable(), + TextColumn::make('type') + ->searchable(), + TextColumn::make('responsible.name') + ->searchable(), + TextColumn::make('contractable_id') + ->numeric() + ->sortable(), + TextColumn::make('contractable_type') + ->searchable(), + TextColumn::make('created_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + TextColumn::make('updated_at') + ->dateTime() + ->sortable() + ->toggleable(isToggledHiddenByDefault: true), + ]) + ->filters([ + // + ]) + ->headerActions([ + CreateAction::make(), + AssociateAction::make()->preloadRecordSelect(), + ]) + ->recordActions([ + EditAction::make(), + DissociateAction::make(), + DeleteAction::make(), + ]) + ->toolbarActions([ + BulkActionGroup::make([ + DissociateBulkAction::make(), + DeleteBulkAction::make(), + ]), + ]); + } +} diff --git a/app/Filament/Resources/Users/UserResource.php b/app/Filament/Resources/Users/UserResource.php index 0aa9980..466e090 100644 --- a/app/Filament/Resources/Users/UserResource.php +++ b/app/Filament/Resources/Users/UserResource.php @@ -37,7 +37,7 @@ class UserResource extends Resource public static function getRelations(): array { return [ - // + ContractsRelationManager::class, ]; } diff --git a/app/Models/User.php b/app/Models/User.php index f2ff753..3d341f4 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -17,8 +17,11 @@ class User extends Authenticatable /** @use HasFactory<\Database\Factories\UserFactory> */ use HasFactory, Notifiable; use HasContactgroups; - use HasContracts; + public function contracts(): MorphMany + { + return $this->morphMany(Contract::class, 'contractable'); + } /** * The attributes that are mass assignable. *