Ender343 / SegIndicadores

0 stars 4 forks source link

Implementación de registros en productos #37

Open j2deme opened 1 year ago

j2deme commented 1 year ago

Para integrar los campos de los registros en el resto de productos académicos, se requiere realizar una secuencia de cambios de cada uno de los productos, los cambios a realizar son:

  1. Agregar una llave foránea al usuario en la migración del modelo a modificar.
    $table->foreignId('user_id')->constrained();
  2. Modificar el modelo correspondiente para incluir el campo user_id en su $fillable.
  3. Implementar las relaciones user() y registro(), siendo la primera una relación 1-1 clásica y la segunda una relación 1-1 polimórfica.
    
    public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo
    {
    return $this->belongsTo(User::class);
    }

public function registro(): \Illuminate\Database\Eloquent\Relations\MorphOne { return $this->morphOne(Registro::class, 'registrable'); }

4. Agregar un campo de tipo `Hidden` al inicio del _schema_ del formulario del recurso, para almacenar el propietario del producto académico.
```php
return $form
  ->schema([
      Forms\Components\Hidden::make('user_id')
          ->default(auth()->user()->id),
  1. Importar RegistroResource y el modelo User en el recurso correspondiente.
    use App\Filament\Resources\RegistroResource;
    use App\Models\User;
  2. Agregar una Section al final del schema del formulario del recurso, importando los campos del formulario de RegistroResource.
    Forms\Components\Section::make('Información de Registro')
      ->relationship('registro')
      ->schema(RegistroResource::form($form)->getComponents())
      ->columns(2),
    ]);
  3. Agregar la función getEloquentQuery(), antes de la función shouldRegisterNavigation(); esta nueva función sirve para que el usuario activo, solo visualice sus registros y no registros de otros usuarios.
    public static function getEloquentQuery(): Builder
    {
    return parent::getEloquentQuery()->where('user_id', auth()->user()->id);
    }

Se deben repetir todos los cambios anteriores en cada uno de los productos académicos, para que puedan guardar su información en conjunto con el registro.

j2deme commented 1 year ago

Una vez integrado el pull #38 podrán observar los cambios realizados para los artículos.