<?php
require_once "../../functions.php";
$pag = basename($_SERVER['PHP_SELF']);
if (comprobar_override(str_replace($_SERVER['DOCUMENT_ROOT'], '', __FILE__))) exit;
comprobar_postget('post', ['conf', 'valor'], $pag, false, '');
gen_plantilla(false, $pag, false, false, '', false, false);

if (session_status() !== PHP_SESSION_ACTIVE) session_start();
$meta = filter_input(INPUT_POST, 'conf', FILTER_SANITIZE_SPECIAL_CHARS);
$valor = filter_input(INPUT_POST, 'valor', FILTER_SANITIZE_SPECIAL_CHARS);

if (!isset($_SESSION['tipo_usuario']) || $_SESSION['tipo_usuario'] !== 'admin') {
    if ($meta !== 'iniciar_sesion_tema' && $meta !== 'fichador_tema') {
        crear_notificacion("error", "No tienes permisos para realizar esta acción");
        exit;
    }
}

// Guardar valor anterior para detectar cambios reales
$valor_anterior = ($meta === 'minutos_sin_conversion') ? get_config('minutos_sin_conversion') : null;

//Comprobar si existe la configuración
if (empty(consulta('SELECT * FROM configuraciones WHERE meta=?;', [$meta], true))) {
    if (!consulta('INSERT INTO `configuraciones`(`meta`, `valor`) VALUES (?, ?);', [$meta, $valor], false)) {
        crear_log(
            'error',
            'Error al crear configuración',
            $pag,
            'Ha dado error al crear el meta ' . $meta . ' con valor ' . $valor
        );
        crear_notificacion('error', 'Error al actualizar la configuración.');
        exit;
    } else {
        crear_log(
            'info',
            'Configuración creada',
            $pag,
            'Se ha creado el meta ' . $meta . ' con valor ' . $valor
        );
        crear_notificacion('correcto', 'Configuración actualizada');
        exit;
    }
}

//Si existe, actualizar
if (!set_config($meta, $valor)) {
    crear_log(
        'error',
        'Error al actualizar configuración',
        $pag,
        'Ha fallado actualizar el meta ' . $meta . ' con valor ' . $valor
    );
    crear_notificacion('error', 'Error al actualizar la configuración.');
} else {
    crear_log(
        'info',
        'Configuración actualizada',
        $pag,
        'Se ha actualizado el meta ' . $meta . ' con valor ' . $valor
    );
    crear_notificacion('correcto', 'Configuración actualizada');
    // Auto-convertir horas_acu solo si el valor realmente cambió
    if ($meta === 'minutos_sin_conversion' && $valor !== $valor_anterior) {
        if ($valor == '1') {
            // Activando (pasar a decimal): H.MM → decimal (ej: 5.45 → 5.75)
            consulta("UPDATE empleados SET horas_acu = SIGN(horas_acu) * (FLOOR(ABS(horas_acu)) + ROUND((ABS(horas_acu) - FLOOR(ABS(horas_acu))) * 100) / 60);", [], false);
        } else {
            // Desactivando (pasar a H.MM): decimal → H.MM (ej: 5.75 → 5.45)
            consulta("UPDATE empleados SET horas_acu = SIGN(horas_acu) * (FLOOR(ABS(horas_acu)) + ROUND((ABS(horas_acu) - FLOOR(ABS(horas_acu))) * 60) / 100);", [], false);
        }
    }
}
