<?php

namespace App\Http\Controllers;

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

class ConfiguracionController extends Controller
{
    public function __construct()
    {
        $this->middleware(function ($request, $next) {
            // Solo admin/supervisor gestionan parámetros
            if (!Auth::user()->puedeConfigurar()) abort(403);
            return $next($request);
        });
    }

    public function index()
    {
        $config = [
            'horas_base'           => Configuracion::getInt('horas_base', 230),
            'modulo_incapacidades' => Configuracion::getBool('modulo_incapacidades', true),
            'validar_sabados'      => Configuracion::getBool('validar_sabados', true),
            'max_horas_dia'        => Configuracion::getInt('max_horas_dia', 8),
            'max_horas_sabado'     => Configuracion::getInt('max_horas_sabado', 2),
            'periodo_dia_corte'    => Configuracion::getInt('periodo_dia_corte', 25),
        ];

        return view('configuracion.index', compact('config'));
    }

    public function update(Request $request)
    {
        $data = $request->validate([
            'horas_base'        => 'required|integer|min:1|max:400',
            'max_horas_dia'     => 'required|integer|min:1|max:24',
            'max_horas_sabado'  => 'required|integer|min:0|max:24',
            'periodo_dia_corte' => 'required|integer|min:1|max:28',
        ]);

        Configuracion::set('horas_base',        (string) $data['horas_base']);
        Configuracion::set('max_horas_dia',     (string) $data['max_horas_dia']);
        Configuracion::set('max_horas_sabado',  (string) $data['max_horas_sabado']);
        Configuracion::set('periodo_dia_corte', (string) $data['periodo_dia_corte']);

        // Toggles (checkbox: presente = 1)
        Configuracion::set('modulo_incapacidades', $request->boolean('modulo_incapacidades') ? '1' : '0');
        Configuracion::set('validar_sabados',      $request->boolean('validar_sabados') ? '1' : '0');

        Configuracion::flushCache();

        return redirect()->route('configuracion.index')
            ->with('success', 'Parámetros actualizados correctamente.');
    }
}
