<?php

namespace App\Models;

use App\Traits\Auditable;
use Illuminate\Database\Eloquent\Model;

class ItemRevisionMantenimiento extends Model
{
    use Auditable;

    /**
     * Tabla asociada
     */
    protected $table = 'items_revision_mantenimiento';

    /**
     * Clave primaria
     */
    protected $primaryKey = 'id_item';

    /**
     * Sin timestamps automáticos
     */
    public $timestamps = false;

    /**
     * Campos asignables
     */
    protected $fillable = [
        'detalle',
        'orden',
        'obligatorio',
        'estado',
    ];

    /**
     * Casting de atributos
     */
    protected function casts(): array
    {
        return [
            'orden' => 'integer',
            'obligatorio' => 'integer',
            'estado' => 'integer',
            'fecha_crea' => 'datetime',
            'fecha_modifica' => 'datetime',
        ];
    }

    /**
     * Accessor para obtener nombre (alias de detalle)
     */
    public function getNombreAttribute(): ?string
    {
        return $this->detalle;
    }

    /**
     * Accessor para verificar si es obligatorio
     */
    public function getEsObligatorioAttribute(): bool
    {
        return $this->obligatorio == 1;
    }

    /**
     * Relación con Respuestas de Checklist
     */
    public function respuestas()
    {
        return $this->hasMany(MantChecklistRespuesta::class, 'id_item', 'id_item');
    }

    /**
     * Scope activos
     */
    public function scopeActivos($query)
    {
        return $query->where('estado', 1);
    }

    /**
     * Scope obligatorios
     */
    public function scopeObligatorios($query)
    {
        return $query->where('obligatorio', 1);
    }

    /**
     * Scope ordenados
     */
    public function scopeOrdenados($query)
    {
        return $query->orderBy('id_item', 'asc');
    }

    /**
     * Verificar si es obligatorio
     */
    public function esObligatorio(): bool
    {
        return $this->obligatorio == 1;
    }
}
