<?php
require_once __DIR__ . '/../../config/database.php';
require_once __DIR__ . '/../../includes/helpers.php';

require_post();
$data = json_input();
require_fields($data, ['id', 'nombre']);

$pdo = getConnection();

try {
    $id = (int)$data['id'];
    $nombre = trim($data['nombre']);
    $descripcion = isset($data['descripcion']) ? trim($data['descripcion']) : null;
    $activo = isset($data['activo']) ? (int)$data['activo'] : 1;
    $tipo = isset($data['tipo']) && in_array($data['tipo'], ['fija', 'variable']) ? $data['tipo'] : 'variable';
    $dia_pago = null;
    if ($tipo === 'fija') {
        if (!isset($data['dia_pago']) || (int)$data['dia_pago'] < 1 || (int)$data['dia_pago'] > 31) {
            json_error("El día de pago debe ser entre 1 y 31 para gastos fijos.");
        }
        $dia_pago = (int)$data['dia_pago'];
    }

    $stmt = $pdo->prepare("UPDATE categorias_gastos SET nombre = ?, descripcion = ?, tipo = ?, dia_pago = ?, activo = ? WHERE id = ?");
    $stmt->execute([$nombre, $descripcion, $tipo, $dia_pago, $activo, $id]);

    json_success([], 'Categoría actualizada');
} catch (Exception $e) {
    json_error("Error al actualizar: " . $e->getMessage());
}
