<?php header("Content-Type: application/json"); require_once "conexion-bd.php"; if ($_SERVER['REQUEST_METHOD'] !== 'POST') { echo json_encode(["mensaje" => "Método no permitido."]); exit(); } $artista = $conn->real_escape_string($_POST['artista']); $fecha = $conn->real_escape_string($_POST['fecha']); $lugar_id = intval($_POST['lugar_id']); $precio = isset($_POST['precio']) ? floatval($_POST['precio']) : 0; $descripcion = isset($_POST['descripcion']) ? $conn->real_escape_string($_POST['descripcion']) : ""; // Validar precio if ($precio <= 0) { echo json_encode(["mensaje" => "Error: El precio debe ser un número mayor a 0."]); exit(); } // Obtener capacidad del lugar $sql_capacidad = "SELECT capacidad FROM lugares WHERE id = ?"; $stmt = $conn->prepare($sql_capacidad); $stmt->bind_param("i", $lugar_id); $stmt->execute(); $result = $stmt->get_result(); $lugar = $result->fetch_assoc(); if (!$lugar) { echo json_encode(["mensaje" => "Error: El lugar seleccionado no existe."]); exit(); } $capacidad = $lugar['capacidad']; // 🔹 Manejar subida del archivo (imagen) $imagen_path = ""; if (isset($_FILES['imagen']) && $_FILES['imagen']['error'] === UPLOAD_ERR_OK) { $imagen_nombre = basename($_FILES['imagen']['name']); $imagen_extension = strtolower(pathinfo($imagen_nombre, PATHINFO_EXTENSION)); // Validar extensión permitida $extensiones_permitidas = ['jpg', 'jpeg', 'png', 'gif']; if (!in_array($imagen_extension, $extensiones_permitidas)) { echo json_encode(["mensaje" => "Error: Formato de imagen no permitido."]); exit(); } // Carpeta destino para las imágenes subidas $carpeta_destino = "../img/eventos/"; if (!is_dir($carpeta_destino)) { mkdir($carpeta_destino, 0777, true); } // Crear nombre único para evitar conflictos $nuevo_nombre = uniqid('evento_', true) . '.' . $imagen_extension; $imagen_path = $carpeta_destino . $nuevo_nombre; // Guardar archivo en servidor if (!move_uploaded_file($_FILES['imagen']['tmp_name'], $imagen_path)) { echo json_encode(["mensaje" => "Error al guardar la imagen."]); exit(); } // Guardar ruta relativa para acceder desde HTML $imagen_path = "img/eventos/" . $nuevo_nombre; } // Insertar el evento incluyendo la imagen $sql = "INSERT INTO conciertos (artista, fecha, lugar_id, precio, descripcion, imagen) VALUES (?, ?, ?, ?, ?, ?)"; $stmt = $conn->prepare($sql); $stmt->bind_param("ssidss", $artista, $fecha, $lugar_id, $precio, $descripcion, $imagen_path); if ($stmt->execute()) { $evento_id = $conn->insert_id; // Generar asientos según capacidad $asientos_insert = $conn->prepare("INSERT INTO asientos (lugar_id, numero_asiento) VALUES (?, ?)"); for ($i = 1; $i <= $capacidad; $i++) { $fila = chr(65 + floor(($i - 1) / 10)); $numero_asiento = $fila . (($i % 10 == 0) ? 10 : $i % 10); $asientos_insert->bind_param("is", $lugar_id, $numero_asiento); $asientos_insert->execute(); } echo json_encode(["mensaje" => "Evento creado exitosamente."]); } else { echo json_encode(["mensaje" => "Error al crear el evento: " . $conn->error]); } $stmt->close(); $conn->close(); ?>