<?php

namespace App\Http\Controllers;

use App\Models\Configuracion;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;

class ConfiguracionController extends Controller
{
    public function index()
    {
        $items = Configuracion::orderBy('grupo')->orderBy('id')->get()->groupBy('grupo');
        return view('configuracion.index', compact('items'));
    }

    public function update(Request $r)
    {
        $valores = $r->input('config', []);
        foreach ($valores as $clave => $valor) {
            $cfg = Configuracion::where('clave', $clave)->first();
            if (!$cfg) continue;
            if ($cfg->tipo === 'archivo' && $r->hasFile("archivo.$clave")) {
                $f = $r->file("archivo.$clave");
                $ruta = $f->store('configuracion', 'public');
                $cfg->valor = 'storage/' . $ruta;
            } else {
                $cfg->valor = is_array($valor) ? json_encode($valor) : (string) $valor;
            }
            $cfg->save();
        }
        // checkboxes (boolean) ausentes => 0
        Configuracion::where('tipo','booleano')->each(function($c) use ($valores) {
            if (!array_key_exists($c->clave, $valores)) {
                $c->valor = '0'; $c->save();
            }
        });
        Configuracion::limpiarCache();
        return back()->with('exito','Configuración guardada.');
    }
}
