<?php
header('Content-Type: application/json; charset=utf-8');
require_once __DIR__ . '/../config/database.php';
require_once __DIR__ . '/../includes/helpers.php';

$pdo = getConnection();
$method = $_SERVER['REQUEST_METHOD'];
$action = $_GET['action'] ?? '';

try {
    switch ($action) {
        case 'listar':
            $q = $pdo->query("SELECT * FROM plan_cuentas ORDER BY codigo");
            json_success($q->fetchAll());
            break;

        case 'arbol':
            $q = $pdo->query("SELECT * FROM plan_cuentas WHERE activo=1 ORDER BY codigo");
            json_success($q->fetchAll());
            break;

        case 'crear':
            $d = json_input();
            $s = $pdo->prepare("INSERT INTO plan_cuentas (codigo,nombre,tipo,nivel,padre_id,naturaleza,acepta_movimiento) VALUES (?,?,?,?,?,?,?)");
            $s->execute([$d['codigo'],$d['nombre'],$d['tipo'],$d['nivel'],$d['padre_id']?:null,$d['naturaleza'],$d['acepta_movimiento']??1]);
            json_success(['id'=>intval($pdo->lastInsertId())], 'Cuenta creada');
            break;

        case 'actualizar':
            $d = json_input();
            $s = $pdo->prepare("UPDATE plan_cuentas SET codigo=?, nombre=?, tipo=?, nivel=?, padre_id=?, naturaleza=?, acepta_movimiento=?, activo=? WHERE id=?");
            $s->execute([$d['codigo'],$d['nombre'],$d['tipo'],$d['nivel'],$d['padre_id']?:null,$d['naturaleza'],$d['acepta_movimiento']??1,$d['activo']??1,$d['id']]);
            json_success([], 'Cuenta actualizada');
            break;

        case 'eliminar':
            $id = intval($_GET['id']??0);
            $pdo->prepare("UPDATE plan_cuentas SET activo=0 WHERE id=?")->execute([$id]);
            json_success([], 'Cuenta desactivada');
            break;

        default:
            json_error('Accion no valida');
    }
} catch (Exception $e) {
    json_error('Error: '.$e->getMessage());
}
