<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

include 'conexion.php';

if ($_SERVER["REQUEST_METHOD"] !== "POST") {
    die("Error: La solicitud no es POST.");
}

$nombre = $_POST['nombre'] ?? '';
$artista = $_POST['artista'] ?? '';
$fecha = $_POST['fecha'] ?? '';
$hora = $_POST['hora'] ?? '';
$direccion = $_POST['direccion'] ?? '';
$precio_vip = $_POST['precio_vip'] ?? null;
$precio_general = $_POST['precio_general'] ?? null;

if (empty($nombre) || empty($artista) || empty($fecha) || empty($hora) || empty($direccion) || empty($precio_vip) || empty($precio_general)) {
    die("Error: Todos los campos son obligatorios.");
}

// Manejo de imagen
if (!empty($_FILES["imagen"]["name"])) {
    $extension = pathinfo($_FILES["imagen"]["name"], PATHINFO_EXTENSION);
    $imagenNombre = time() . "_" . uniqid() . "." . $extension;
    $rutaImagen = __DIR__ . "/../img/" . $imagenNombre;

    if (!move_uploaded_file($_FILES["imagen"]["tmp_name"], $rutaImagen)) {
        die("Error: No se pudo mover la imagen.");
    }
} else {
    $imagenNombre = "default.jpg"; 
}

$conn->begin_transaction();

try {
    // Insertar el concierto con hora
    $sql = "INSERT INTO conciertos (nombre, artista, fecha, hora, direccion, imagen) VALUES (?, ?, ?, ?, ?, ?)";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ssssss", $nombre, $artista, $fecha, $hora, $direccion, $imagenNombre);
    $stmt->execute();
    $concierto_id = $stmt->insert_id;

    // Insertar las zonas (VIP y General)
    $sql_zonas = "INSERT INTO zonas (concierto_id, nombre, capacidad, precio) VALUES 
                  (?, 'VIP', 5, ?),
                  (?, 'General', 10, ?)";
    $stmt_zonas = $conn->prepare($sql_zonas);
    $stmt_zonas->bind_param("idid", $concierto_id, $precio_vip, $concierto_id, $precio_general);
    $stmt_zonas->execute();

    // Obtener los IDs de las zonas insertadas
    $zona_vip_id = $conn->insert_id;
    $zona_general_id = $zona_vip_id + 1;

    // Insertar los asientos (VIP y General)
    $sql_asientos = "INSERT INTO asientos (zona_id, numero, estado) VALUES ";
    $values = [];
    $params = [];

    for ($i = 1; $i <= 5; $i++) {
        $values[] = "(?, ?, 'disponible')";
        array_push($params, $zona_vip_id, $i);
    }
    for ($i = 1; $i <= 10; $i++) {
        $values[] = "(?, ?, 'disponible')";
        array_push($params, $zona_general_id, $i);
    }

    $sql_asientos .= implode(", ", $values);
    $stmt_asientos = $conn->prepare($sql_asientos);
    $stmt_asientos->bind_param(str_repeat("ii", count($params) / 2), ...$params);
    $stmt_asientos->execute();

    $conn->commit();
    echo "Concierto agregado con éxito.";
} catch (Exception $e) {
    $conn->rollback();
    die("Error en la transacción: " . $e->getMessage());
}
?>