<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use OwenIt\Auditing\Contracts\Auditable;
use Mattiverse\Userstamps\Traits\Userstamps;
use Illuminate\Database\Eloquent\SoftDeletes;

class Audiencia extends Model implements Auditable
{
    use \OwenIt\Auditing\Auditable;
    use SoftDeletes, Userstamps;

    protected $fillable = [
        'proceso_id',
        'departamento',
        'tipo_audiencia_id',
        'fecha_audiencia',
        'hora_audiencia',
        'lugar',
        'juzgado',
        'sala',
        'delito','estado_id',
        'representantes',
        'observaciones'
    ];

    protected $dates = ['fecha_audiencia'];

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

    public function tipo_audiencia()
    {
        return $this->belongsTo(Parametro::class, 'tipo_audiencia_id', 'id');
    }

    /* Semaforización */
    public function getColorAttribute()
    {
        // if ($audiencia->estado->name === 'CONCLUIDA') {
        //                 $aviso = 'CONCLUIDA';
        //             } elseif ($dias <= 0) {
        //                 $color = '#FFC7CE'; // rojo
        //             } elseif ($dias <= 3) {
        //                 $color = '#FFD966'; // naranja
        //             } elseif ($dias <= 7) {
        //                 $color = '#FFF2CC'; // amarillo
        //             } else {
        //                 $color = '#FFFFFf'; // azul
                    // }
        if ($this->estado === 'CONCLUIDA') return '';

        $dias = now()->startOfDay()
            ->diffInDays($this->fecha_audiencia, false);

        if ($dias < 0 || $dias === 0) return '#FFC7CE';
        if ($dias <= 3) return '#FFD966';
        if ($dias <= 7) return '#FFF2CC';

        return '';
    }

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

    public function estado()
    {
        return $this->belongsTo(Parametro::class, 'estado_id', 'id');
    }

    public function getAbogadosAttribute()
    {
        return User::whereIn('id',explode(';', $this->representantes))->get();
    }
    
    public function representantes()
    {
        if (!$this->representantes) {
            return collect();
        }

        $ids = array_filter(explode(';', $this->representantes));

        return User::whereIn('id', $ids)->get();
    }

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