<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Spatie\Activitylog\Traits\LogsActivity;
use Spatie\Activitylog\LogOptions;

class Asignacion extends Model
{
    use HasFactory, LogsActivity;

    protected $table = 'asignaciones';

    protected $fillable = [
        'proceso_id',
        'user_id',
        'rol_asignado',
        'fecha_inicio',
        'fecha_fin',
        'activo',
        'notas',
    ];

    protected $casts = [
        'fecha_inicio' => 'datetime',
        'fecha_fin' => 'datetime',
        'activo' => 'boolean',
    ];

    const ROLES = [
        'sustanciador' => 'Sustanciador',
        'dependiente' => 'Dependiente',
        'gerente' => 'Gerente',
        'asistente' => 'Asistente',
        'negociador' => 'Negociador',
    ];

    public function proceso()
    {
        return $this->belongsTo(Proceso::class);
    }

    public function usuario()
    {
        return $this->belongsTo(User::class, 'user_id');
    }

    public function getActivitylogOptions(): LogOptions
    {
        return LogOptions::defaults()
            ->logOnly(['user_id', 'rol_asignado', 'activo'])
            ->logOnlyDirty()
            ->setDescriptionForEvent(fn(string $eventName) => "Asignación proceso #{$this->proceso_id}: {$eventName}");
    }
}
