96 lines
3.2 KiB
PHP
96 lines
3.2 KiB
PHP
<?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();
|
|
?>
|