<?php
// ajax_fechas.php — Calcula fechas del debate sobre días hábiles
// Responde JSON: {debate_desde, debate_hasta, fecha_fallo, fecha_fin_bloqueo}
$authApp = 'agenda';
session_start();
require __DIR__ . '/../../config/auth.php';
require __DIR__ . '/../../../../../config/db2.php';
require __DIR__ . '/../../lib/helpers.php';

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

$desde        = $_POST['desde']        ?? '';
$jorn         = max(1, (int)($_POST['jornadas']  ?? 1));
$extras       = max(0, (int)($_POST['extras']    ?? 0));
$pre          = (int)($_POST['pre']              ?? 0);
$dupl         = (bool)(int)($_POST['duplicidad'] ?? 0);
$hasta_manual = trim($_POST['hasta_manual'] ?? '');
$fallo_manual = trim($_POST['fallo_manual'] ?? '');

function validDate(string $d): bool { return (bool)preg_match('/^\d{4}-\d{2}-\d{2}$/', $d); }

try {
    // Recalculate from fallo_manual: only compute fecha_fin_bloqueo
    if ($fallo_manual && validDate($fallo_manual)) {
        $df_base = (int)get_param($pdo, 'dias_habiles_fundamentos', '5');
        if ($dupl) $df_base *= 2;
        $bloqueo = agregar_dias_habiles($pdo, $fallo_manual, $df_base);
        echo json_encode(['fecha_fin_bloqueo' => $bloqueo]);
        exit;
    }
    // Recalculate from hasta_manual: compute fecha_fallo and fecha_fin_bloqueo
    if ($hasta_manual && validDate($hasta_manual)) {
        $dv_base = (int)get_param($pdo, 'dias_habiles_veredicto',   '2');
        $df_base = (int)get_param($pdo, 'dias_habiles_fundamentos', '5');
        if ($dupl) { $dv_base *= 2; $df_base *= 2; }
        $fallo   = agregar_dias_habiles($pdo, $hasta_manual, $dv_base);
        $bloqueo = agregar_dias_habiles($pdo, $fallo, $df_base);
        echo json_encode(['fecha_fallo' => $fallo, 'fecha_fin_bloqueo' => $bloqueo]);
        exit;
    }
    // Full calculation from desde + jornadas
    if (!$desde || !validDate($desde)) {
        echo json_encode(['error' => 'Fecha inválida']);
        exit;
    }
    $fechas = calcular_fechas_debate($pdo, $desde, $jorn, $extras, $pre, $dupl);
    echo json_encode($fechas);
} catch (Throwable $e) {
    echo json_encode(['error' => $e->getMessage()]);
}
