<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Caja;
use App\Models\HistorialCaja;

class CajaController extends Controller
{
    /**
     * Mostrar todas las cajas
     */
    public function index()
    {
        $cajas = Caja::all();
        return view('caja.index', compact('cajas'));
    }

    /**
     * Abrir una nueva caja
     */
    public function abrir(Request $request)
{
    $request->validate([
        'nombre' => 'required|string|max:100',
        'saldo_inicial' => 'required|numeric|min:0',
    ]);

    $caja = Caja::create([
        'nombre' => $request->nombre,
        'descripcion' => $request->descripcion,
        'saldo_inicial' => $request->saldo_inicial,
        'saldo_actual' => $request->saldo_inicial,
        'estado' => 'abierta'
    ]);

    return response()->json([
        'success' => true,
        'message' => 'Caja abierta correctamente.',
        'caja' => $caja
    ]);
}

    /**
     * Cerrar caja (bloquearla y dejar saldo final)
     */
    public function cerrar($id)
    {
        $caja = Caja::findOrFail($id);

        if ($caja->estado === 'cerrada') {
            return response()->json(['message' => 'La caja ya está cerrada.'], 400);
        }

        $caja->estado = 'cerrada';
        $caja->fecha_cierre = now(); // si agregaste este campo
        $caja->save();

        return response()->json(['message' => 'Caja cerrada correctamente.']);
    }


    /**
     * Mostrar historial de movimientos de una caja
     */
    public function historial($id)
    {
        $caja = Caja::findOrFail($id);
        $movimientos = HistorialCaja::where('id_caja', $id)->orderBy('fecha', 'desc')->get();

        return view('caja.historial', compact('caja', 'movimientos'));
    }
}
