<?php
namespace App\Http\Livewire;

use Livewire\Component;
use App\Models\Equipo;
use App\Models\ControlDiario;
use Carbon\Carbon;

class ControlDiario extends Component
{
    public $fecha;
    public $registros = [];

    public function mount()
    {
        $this->fecha = now()->format('Y-m-d');
        $this->cargarControles();
    }

    public function updatedFecha()
    {
        $this->cargarControles();
    }

    public function cargarControles()
    {
        $equipos = Equipo::orderBy('descripcion')->get();
        $this->registros = [];

        foreach ($equipos as $equipo) {
            $control = ControlDiario::where('equipo_id', $equipo->id)
                        ->whereDate('fecha', $this->fecha)
                        ->first();

            $this->registros[] = [
                'equipo_id' => $equipo->id,
                'descripcion' => $equipo->descripcion,
                'salio' => $control->salio ?? false,
                'hora_salida' => $control->hora_salida,
                'hora_regreso' => $control->hora_regreso,
                'zona_servicio' => $control->zona_servicio,
                'observaciones' => $control->observaciones,
            ];
        }
    }

    public function guardar()
    {
        foreach ($this->registros as $registro) {
            ControlDiario::updateOrCreate(
                ['equipo_id' => $registro['equipo_id'], 'fecha' => $this->fecha],
                [
                    'salio' => $registro['salio'],
                    'hora_salida' => $registro['hora_salida'],
                    'hora_regreso' => $registro['hora_regreso'],
                    'zona_servicio' => $registro['zona_servicio'],
                    'observaciones' => $registro['observaciones'],
                ]
            );
        }

        session()->flash('mensaje', 'Controles guardados correctamente.');
    }

    public function render()
    {
        return view('livewire.control-diario');
    }
}
