fix: resolve {vars} in endpoint test button using saved params config

Fixed vars use their preset (month_start, current_date, etc.); ask-mode
vars fall back to today's date so the test always sends a valid URL.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-06-30 13:50:17 -05:00
co-authored by Claude Sonnet 4.6
parent ff9ff67445
commit e177919be2
+27
View File
@@ -1960,6 +1960,33 @@ HTML;
if ($url === '') { echo json_encode(['ok' => false, 'error' => 'URL vacía']); exit; }
// Resolve {var} placeholders using params config
$stmt = db()->prepare("SELECT params FROM company_endpoints WHERE company_id=? AND endpoint_key=?");
$stmt->execute([$companyId, $key]);
$paramsJson = $stmt->fetchColumn();
$varConfigs = is_string($paramsJson) ? (json_decode($paramsJson, true) ?? []) : [];
$presets = [
'current_date' => date('Y-m-d'),
'month_start' => date('Y-m-01'),
'month_end' => date('Y-m-t'),
'last_7_start' => date('Y-m-d', strtotime('-7 days')),
'last_30_start' => date('Y-m-d', strtotime('-30 days')),
'year_start' => date('Y-01-01'),
];
foreach ($varConfigs as $cfg) {
$k = $cfg['key'] ?? '';
if (!$k) continue;
if (($cfg['mode'] ?? '') === 'fixed') {
$val = $cfg['value'] ?? 'current_date';
$url = str_replace('{' . $k . '}', $presets[$val] ?? $val, $url);
} else {
// ponytail: ask-mode vars get today as test default
$url = str_replace('{' . $k . '}', date('Y-m-d'), $url);
}
}
// Replace any remaining unresolved {vars} with today
$url = preg_replace('/\{[^}]+\}/', date('Y-m-d'), $url);
$company = CompanyRepository::findById($companyId);
$apiKey = $company['api_key'] ?? '';