<?php
require_once __DIR__ . '/../../config/auth.php';

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    exit;
}

$periodo = limpiar($_POST['periodo'] ?? '');
if (!preg_match('/^\d{4}-(0[1-9]|1[0-2])$/', $periodo)) {
    http_response_code(400);
    exit('Periodo inválido.');
}

$estado = $conn->prepare(
    "SELECT COUNT(*) total, SUM(estado='Cerrado') cerradas
     FROM nominas WHERE periodo=?"
);
$estado->bind_param('s', $periodo);
$estado->execute();
$resumen = $estado->get_result()->fetch_assoc();
$estado->close();

if (!(int) $resumen['total']
    || (int) $resumen['cerradas'] !== (int) $resumen['total']) {
    $_SESSION['flash_mensaje'] = 'Sólo se pueden eliminar Planillas de Salarios cerradas.';
    $_SESSION['flash_tipo'] = 'danger';
    header('Location: /HM/modules/nomina/index.php');
    exit;
}

$conn->begin_transaction();
try {
    $eliminar = $conn->prepare(
        "DELETE FROM nominas WHERE periodo=? AND estado='Cerrado'"
    );
    $eliminar->bind_param('s', $periodo);
    $eliminar->execute();
    $eliminadas = $eliminar->affected_rows;
    $eliminar->close();

    registrar_auditoria(
        $conn,
        'DELETE',
        'nominas',
        null,
        'Eliminación de Planilla de Salarios cerrada ' . $periodo
    );
    $conn->commit();
    $_SESSION['flash_mensaje'] = "Planilla de Salarios $periodo eliminada correctamente ($eliminadas registros).";
    $_SESSION['flash_tipo'] = 'success';
} catch (Throwable $e) {
    $conn->rollback();
    $_SESSION['flash_mensaje'] = 'No se pudo eliminar la Planilla de Salarios.';
    $_SESSION['flash_tipo'] = 'danger';
}

header('Location: /HM/modules/nomina/index.php');
exit;
