<?php
header('Content-Type: application/json');
require_once dirname(__DIR__) . '/auth.php';
require_once dirname(__DIR__) . '/credentials.php';
dm_require_admin();
dm_csrf_verify();

$input = json_decode(file_get_contents('php://input'), true);
if(!$input || !isset($input['service'])) {
    echo json_encode(['ok' => false, 'error' => 'Datos inválidos']);
    exit;
}

$config_file = dirname(__DIR__) . '/config.php';

// Leer config existente
$existing = [];
if(file_exists($config_file)) {
    $content = file_get_contents($config_file);
    preg_match_all("/define\('([^']+)',\s*'([^']*)'\)/", $content, $matches, PREG_SET_ORDER);
    foreach($matches as $m) $existing[$m[1]] = $m[2];
}

$service = $input['service'];

// Mapear campos según servicio
switch($service) {
    case 'meta':
        if(!empty($input['app_id']))  $existing['META_APP_ID']    = $input['app_id'];
        if(!empty($input['token']))   $existing['META_SYSTEM_TOKEN'] = $input['token'];
        if(!empty($input['account'])) $existing['META_ACCOUNT_ID'] = $input['account'];
        break;
    case 'google':
        if(!empty($input['token']))     $existing['GOOGLE_DEV_TOKEN']     = $input['token'];
        if(!empty($input['oauth_cid'])) $existing['GOOGLE_CLIENT_ID']     = $input['oauth_cid'];
        if(!empty($input['oauth_cs']))  $existing['GOOGLE_CLIENT_SECRET'] = $input['oauth_cs'];
        if(!empty($input['mcc_id']))    $existing['GOOGLE_MCC_ID']        = preg_replace('/[^0-9]/', '', $input['mcc_id']);
        break;
    case 'gsc':
        if(!empty($input['json']))   $existing['GSC_JSON_PATH'] = $input['json'];
        if(!empty($input['domain'])) $existing['GSC_DOMAIN']    = $input['domain'];
        break;
    case 'claude':
        if(!empty($input['key'])) $existing['CLAUDE_API_KEY'] = $input['key'];
        break;
    default:
        echo json_encode(['ok' => false, 'error' => 'Servicio desconocido']);
        exit;
}

// 1. Guardar en BD cifrada (dm_settings) — método preferido
$saved_to_db = 0;
foreach($existing as $key => $val) {
    if (!empty($val) && dm_set_global_secret($key, $val)) $saved_to_db++;
}

// 2. También regenerar config.php como fallback (mantiene compatibilidad)
// Leer todos los secrets guardados para reconstruir el archivo completo
$php = "<?php\n// DIMARK Brain - Configuración de APIs\n// Generado automáticamente\n\n";
foreach($existing as $key => $val) {
    $safe = addslashes($val);
    $php .= "define('{$key}', '{$safe}');\n";
}
$php .= "\n// Fin de configuración\n";
file_put_contents($config_file, $php);

echo json_encode(['ok' => true, 'message' => 'Configuración guardada.', 'db_saved' => $saved_to_db]);
