<?php
header('Content-Type: application/json');

require_once __DIR__ . '/../../engine/api-handling/api_helpers.php';
require_once __DIR__ . '/../../engine/api-handling/fred_fetch.php';

$series = [
	'M2SL', 'WALCL', 'TOTBKCR', 'ECBASSETS', 'JPTOAS', 'SOFR30DAYAVG', 'DTWEXBGS'
];
$targetDate = '2025-06-01'; // YYYY-MM-DD

/**
 * Prüft Verfügbarkeit für den Monat von $targetDate (entspricht frequency=m).
 * Nutzt fetch_fred_series() und aggregiert auf Monatswerte (letzter Wert im Monat gewinnt).
 */
function isDateAvailableMonthly(string $series_id, string $targetDate): bool {
	$obs = [];
	try {
		// Laden ab einem Jahr vor Zielmonat – reduziert Transfer, reicht für Monatsprüfung
		$start = date('Y-m-01', strtotime($targetDate . ' -18 months'));
		$obs = fetch_fred_series($series_id, $start); // ['date'=>'YYYY-MM-DD','value'=>float|null]
	} catch (Throwable $e) {
		return false;
	}
	if (!$obs) return false;

	// Monats-Mapping: 'YYYY-MM' => float
	$monthMap = [];
	foreach ($obs as $row) {
		$val = $row['value'] ?? null;
		if ($val === null || !is_numeric($val)) continue;
		$ym = substr($row['date'], 0, 7);
		$monthMap[$ym] = (float)$val; // letzter Wert im Monat
	}

	$targetYm = substr($targetDate, 0, 7);
	return array_key_exists($targetYm, $monthMap);
}

$available = [];
$missing = [];

foreach ($series as $id) {
	if (isDateAvailableMonthly($id, $targetDate)) {
		$available[] = $id;
	} else {
		$missing[] = $id;
	}
}

echo json_encode([
	'date_checked'    => $targetDate,
	'available_series'=> $available,
	'missing_series'  => $missing,
	'all_available'   => count($missing) === 0
], JSON_PRETTY_PRINT);
?>
