<?php
require 'db1.php'; // Incluye el archivo de conexión a la base de datos


date_default_timezone_set('America/Guayaquil');
// Agregar los encabezados para desactivar la caché
header("Cache-Control: no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: 0");

// Endpoint para obtener datos de la tabla conario
if ($_SERVER['REQUEST_METHOD'] === 'GET') {

    if (isset($_GET['mul_id'])) {
        $multimediaId = $_GET['mul_id'];

        $query = "SELECT * FROM multimedia WHERE mul_id = ?";
        $stmt = $conn->prepare($query);
        $stmt->execute([$multimediaId]);

        $data = $stmt->fetch(PDO::FETCH_ASSOC);

        if ($data) {
            echo json_encode($data);
        } else {
            echo json_encode(array("message" => "No se encontró ningún Multimedia"));
        }
    }  else if (isset($_GET['mul_nombre_tabla']) && isset($_GET['mul_id_pk_tabla'])) {
        $mul_nombre_tabla = $_GET['mul_nombre_tabla'];
        $mul_id_pk_tabla = $_GET['mul_id_pk_tabla'];

        $query = "SELECT * FROM multimedia WHERE mul_nombre_tabla = ? and mul_id_pk_tabla = ?";
        $stmt = $conn->prepare($query);
        $stmt->execute([$mul_nombre_tabla,$mul_id_pk_tabla ]);

        $data = $stmt->fetchAll(PDO::FETCH_ASSOC);

        if ($data) {
            echo json_encode($data);
        } else {
            echo json_encode(array("message" => "No se encontró ningún Multimedia"));
        }
    } else {
        $query = "SELECT * FROM multimedia";
        $stmt = $conn->prepare($query);
        $stmt->execute();
        
        $data = $stmt->fetchAll(PDO::FETCH_ASSOC);
        
        echo json_encode($data);
    }
}

// Endpoint para insertar datos en la tabla conario
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    try {
        $data = json_decode(file_get_contents('php://input'), true);

        $mul_tipo = $data['mul_tipo'];
        $mul_fecha_creacion = date('Y-m-d H:i:s');
        $mul_fecha_modificacion = date('Y-m-d H:i:s');
        $mul_estado = $data['mul_estado'];
        $mul_latitud = $data['mul_latitud'];
        $mul_longitud = $data['mul_longitud'];
        $mul_nombre_tabla = $data['mul_nombre_tabla'];
        $mul_id_pk_tabla = $data['mul_id_pk_tabla'];
        $mul_ruta_archivo = $data['mul_ruta_archivo'];
        $mul_formato_archivo = $data['mul_formato_archivo'];
        $mul_ruta_archivo_local = $data['mul_ruta_archivo_local'];

        $query = "INSERT INTO multimedia (
            mul_tipo,
            mul_fecha_creacion,
            mul_fecha_modificacion,
            mul_estado,
            mul_latitud,
            mul_longitud,
            mul_nombre_tabla,
            mul_id_pk_tabla,
            mul_ruta_archivo,
            mul_formato_archivo,
            mul_ruta_archivo_local
        ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

        $stmt = $conn->prepare($query);
        $stmt->execute([
            $mul_tipo,
            $mul_fecha_creacion,
            $mul_fecha_modificacion,
            $mul_estado,
            $mul_latitud,
            $mul_longitud,
            $mul_nombre_tabla,
            $mul_id_pk_tabla,
            $mul_ruta_archivo,
            $mul_formato_archivo,
            $mul_ruta_archivo_local
        ]);

        $insertedId = $conn->lastInsertId();
        if ($stmt){
        echo json_encode(array("message" => "0", "inserted_id" => intval($insertedId)));
    } else {
        echo json_encode(array("inserted_id" => -2));
    }
    
} catch (PDOException $e) {
    if ($e->getCode() == 23000) {
        // Código 23000 indica una violación de integridad (clave duplicada)
        echo json_encode(array("message" => "Error: Se intentó ingresar una clave primaria ya existente", "inserted_id" => -3));
    } else {
        // Otro error, imprime el mensaje de la excepción
        echo json_encode(array("message" => "Error: " . $e->getMessage(), "inserted_id" => -2));
    }
}
}

if ($_SERVER['REQUEST_METHOD'] === 'PUT') {
try {    
    $data = json_decode(file_get_contents('php://input'), true);

    $mul_id = $data['mul_id']; // ID del multimedia a actualizar

    $mul_tipo = $data['mul_tipo'];
    $mul_fecha_modificacion = date('Y-m-d H:i:s');
    $mul_estado = $data['mul_estado'];
    $mul_latitud = $data['mul_latitud'];
    $mul_longitud = $data['mul_longitud'];
    $mul_nombre_tabla = $data['mul_nombre_tabla'];
    $mul_id_pk_tabla = $data['mul_id_pk_tabla'];
    $mul_ruta_archivo = $data['mul_ruta_archivo'];
    $mul_formato_archivo = $data['mul_formato_archivo'];
    $mul_ruta_archivo_local = $data['mul_ruta_archivo_local'];

    $query = "UPDATE multimedia SET
        mul_tipo = ?,
        mul_fecha_modificacion = ?,
        mul_estado = ?,
        mul_latitud = ?,
        mul_longitud = ?,
        mul_nombre_tabla = ?,
        mul_id_pk_tabla = ?,
        mul_ruta_archivo = ?,
        mul_formato_archivo = ?,
        mul_ruta_archivo_local = ?
    WHERE mul_id = ?";

    $stmt = $conn->prepare($query);
    $stmt->execute([
        $mul_tipo,
        $mul_fecha_modificacion,
        $mul_estado,
        $mul_latitud,
        $mul_longitud,
        $mul_nombre_tabla,
        $mul_id_pk_tabla,
        $mul_ruta_archivo,
        $mul_formato_archivo,
        $mul_ruta_archivo_local,
        $mul_id
    ]);

    if ($stmt) {
        echo json_encode(array("inserted_id" => 1));
    } else {
        echo json_encode(array("inserted_id" => -2));
    }
    
} catch (PDOException $e) {
     echo json_encode(array("message" => "Error: " . $e->getMessage(), "inserted_id" => -2));
    }
}


// Endpoint para eliminar un registro de la tabla persona
if ($_SERVER['REQUEST_METHOD'] === 'DELETE') {
try {    
    $data = json_decode(file_get_contents('php://input'), true);

    $mul_id = $data['mul_id']; // ID del multimedia a eliminar

    $query = "DELETE FROM multimedia WHERE mul_id = ?";

    $stmt = $conn->prepare($query);
    if ($stmt->execute([$mul_id])) {
               echo json_encode(array("inserted_id" => 1));
    } else {
        echo json_encode(array("inserted_id" => -2));
    }
} catch (PDOException $e) {
     echo json_encode(array("message" => "Error: " . $e->getMessage(), "inserted_id" => -2));
    }
}
$conn = null;
?>