<?php

namespace App\Livewire\Seguimiento;

use App\Models\Proceso;
use App\Models\SeguimientoJudicial;
use Livewire\Component;
use Illuminate\Support\Facades\Auth;

class SeguimientoPanel extends Component
{
    public Proceso $proceso;
    public $seguimientos = [];
    public $showForm = false;
    
    // Form fields
    public $fecha_revision;
    public $fuente = 'manual';
    public $estado_rama;
    public $ultima_actuacion;
    public $fecha_ultima_actuacion;
    public $observaciones;
    
    protected $rules = [
        'fecha_revision' => 'required|date',
        'fuente' => 'required|in:rama_judicial,tyba,juzgado,email,manual',
        'estado_rama' => 'nullable|string|max:100',
        'ultima_actuacion' => 'nullable|string',
        'fecha_ultima_actuacion' => 'nullable|date',
        'observaciones' => 'nullable|string',
    ];
    
    public function mount(Proceso $proceso)
    {
        $this->proceso = $proceso;
        $this->fecha_revision = now()->format('Y-m-d');
        $this->loadSeguimientos();
    }
    
    public function loadSeguimientos()
    {
        $this->seguimientos = $this->proceso->seguimientosJudiciales()
            ->with('user')
            ->orderByDesc('fecha_revision')
            ->get();
    }
    
    public function save()
    {
        $this->validate();
        
        SeguimientoJudicial::create([
            'proceso_id' => $this->proceso->id,
            'user_id' => Auth::id(),
            'fecha_revision' => $this->fecha_revision,
            'fuente' => $this->fuente,
            'estado_rama' => $this->estado_rama,
            'ultima_actuacion' => $this->ultima_actuacion,
            'fecha_ultima_actuacion' => $this->fecha_ultima_actuacion,
            'observaciones' => $this->observaciones,
        ]);
        
        $this->reset(['estado_rama', 'ultima_actuacion', 'fecha_ultima_actuacion', 'observaciones']);
        $this->showForm = false;
        $this->loadSeguimientos();
        
        $this->dispatch('notify', type: 'success', message: 'Seguimiento registrado correctamente');
    }
    
    public function render()
    {
        return view('livewire.seguimiento.seguimiento-panel');
    }
}
