<?php
$ruta = "../";
require_once "../class/c_login.php";

if (!isset($_SESSION['user']))
    die(json_encode(['error' => 'No se ha iniciado sesión']));

$user = unserialize($_SESSION['user']);
$ruta = "../";
require_once "../include/bd_pdo.php";

// if method is get
header("Content-Type: application/json");
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    $user->print_to_log("Acceso a reposiciones");
    $reposiciones = $db
        ->where('periodo_id', $_GET['periodo_id'] ?? null)
        ->where('profesor_id', $_GET['profesor_id'] ?? [])
        ->get("reposicion");
    echo json_encode([
        'status' => 'success',
        'reposiciones' => $reposiciones
    ]);
} elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $user->print_to_log("Creación de reposición", new: $params);
    try {
        $requiredParams = ['horario_id', 'fecha', 'hora', 'duracion_id', 'descripcion', 'profesor_id', 'salon', 'unidad', 'periodo_id', 'fecha_clase'];

        // Filter params based on requiredParams
        $params = array_filter($_POST, function ($key) use ($requiredParams) {
            return in_array($key, $requiredParams);
        }, ARRAY_FILTER_USE_KEY);

        // Check if all required params are present
        if (count($params) !== count($requiredParams)) {
            throw new Exception('Falta uno o más parámetros requeridos');
        }

        $db->insert("reposicion", $params);

        // Return success response
        echo json_encode([
            "status" => "success",
            "message" => "Reposición creada correctamente",
        ]);
    } catch (Exception $e) {
        // Return error response
        echo json_encode([
            "status" => "error",
            "message" => "No se pudo crear la reposición",
            "error" => $e->getMessage(),
        ]);
    }
}
