<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class UserNotification extends Model
{
    use HasFactory;
    
    /**
     * Los atributos que se pueden asignar masivamente.
     *
     * @var array
     */
    protected $fillable = [
        'user_id',
        'title',
        'message',
        'link',
        'icon',
        'type',
        'related_id',
        'read_at'
    ];
    
    /**
     * Los atributos que deben convertirse a tipos nativos.
     *
     * @var array
     */
    protected $casts = [
        'read_at' => 'datetime',
    ];
    
    /**
     * Obtener el usuario al que pertenece la notificación.
     */
    public function user()
    {
        return $this->belongsTo(User::class);
    }
    
    /**
     * Alcance para filtrar notificaciones no leídas.
     */
    public function scopeUnread($query)
    {
        return $query->whereNull('read_at');
    }
    
    /**
     * Marcar la notificación como leída.
     */
    public function markAsRead()
    {
        $this->read_at = now();
        return $this->save();
    }
    
    /**
     * Verificar si la notificación ha sido leída.
     */
    public function isRead()
    {
        return $this->read_at !== null;
    }
}
