<?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 usuario
if ($_SERVER['REQUEST_METHOD'] === 'GET') {

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

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

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

        if ($data) {
            echo json_encode($data);
        } else {
            echo json_encode(array("message" => "No se encontró ningun usuario"));
        }
    } else if (isset($_GET['per_id'])) {
        $per_id = $_GET['per_id'];

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

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

        if ($data) {
            echo json_encode($data);
        } else {
            echo json_encode(array("message" => "No se encontró ningun usuario"));
        }

    } else if (isset($_GET['rol'])) {
        $rol = $_GET['rol'];

        $query = "SELECT * FROM `V_USUARIO_X_ROL` WHERE rol_id = ?";
        $stmt = $conn->prepare($query);
        $stmt->execute([$rol]);

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

        if ($data) {
            echo json_encode($data);
        } else {
            echo json_encode(array("message" => "No se encontró ningun usuario"));
        }
    }
    else if (isset($_GET['per_id_app'])) {
         try {
        $per_id_app = $_GET['per_id_app'];

        $query = "SELECT * FROM `V_USUARIO_ADMIN_X_PERSONA` WHERE per_id_app = ?";
        $stmt = $conn->prepare($query);
        $stmt->execute([$per_id_app]);

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

        if ($data) {
            echo json_encode($data);
        } else {
            echo json_encode(array("message" => "No se encontró ninguna Visita de Vivienda"));
        }
         } catch (PDOException $e) {
    
        // Otro error, imprime el mensaje de la excepción
        echo json_encode(array("message" => "Error: " . $e->getMessage(), "inserted_id" => -2));
        }
    }
    else {

    $query = "SELECT * FROM usuario";
    $stmt = $conn->prepare($query);
    $stmt->execute();
    
    $data = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    echo json_encode($data);
}
}

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

    $per_id= $data['per_id'];
    $usu_fecha_creacion = date('Y-m-d H:i:s'); 
    $usu_fecha_modificacion = date('Y-m-d H:i:s'); 
    $usu_estado = 1; 
    $usu_ip = $data['usu_ip']; //$_SERVER['REMOTE_ADDR']; 
    $usu_foto_model_data = $data['usu_foto_model_data'];
    $usu_foto= $data['usu_foto'];

    $query = "INSERT INTO usuario (
      per_id,
        usu_fecha_creacion,
        usu_fecha_modificacion,
        usu_estado,
        usu_ip,
         usu_foto_model_data,
        usu_foto
    ) VALUES (?,?, ?, ?, ?, ?, ?)";

    $stmt = $conn->prepare($query);
    $stmt->execute([
        $per_id,
        $usu_fecha_creacion,
        $usu_fecha_modificacion,
        $usu_estado,
        $usu_ip,
        $usu_foto_model_data,
        $usu_foto
    ]);

    $insertedId = $conn->lastInsertId();
        echo json_encode(array("message" => "Registro insertado con ID: $insertedId", "insertedId" => $insertedId));
    } 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", "insertedId" => -1));
        } else {
            // Otro error, imprime el mensaje de la excepción
            echo json_encode(array("message" => "Error: " . $e->getMessage(), "insertedId" => -1));
        }
}
}

// Endpoint para actualizar datos en la tabla persona
if ($_SERVER['REQUEST_METHOD'] === 'PUT') {
    $data = json_decode(file_get_contents('php://input'), true);

    $usu_id = $data['usu_id']; // ID del usuario a actualizar

    $per_id = $data['per_id'];
    $usu_fecha_modificacion = date('Y-m-d H:i:s');
    $usu_estado = $data['usu_estado'];
    $usu_ip = $data['usu_ip'];
    $usu_foto = $data['usu_foto'];
    $usu_foto_model_data = $data['usu_foto_model_data'];

    $query = "UPDATE usuario SET
        per_id = ?,
        usu_fecha_modificacion = ?,
        usu_estado = ?,
        usu_ip = ?,
        usu_foto = ?,
        usu_foto_model_data = ?
    WHERE usu_id = ?";

    $stmt = $conn->prepare($query);
    $stmt->execute([
        $per_id,
        $usu_fecha_modificacion,
        $usu_estado,
        $usu_ip,
        $usu_foto,
        $usu_foto_model_data,
        $usu_id
    ]);

    if ($stmt) {
        echo json_encode(array("message" => "1"));
    } else {
        echo json_encode(array("message" => "-1"));
    }
}

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

    $usu_id = $data['usu_id']; // ID del usuario a eliminar

    $query = "DELETE FROM usuario WHERE usu_id = ?";

    $stmt = $conn->prepare($query);
    if ($stmt->execute([$bnf_id])) {
        echo json_encode(array("message" => "1"));
    } else {
        echo json_encode(array("message" => "-1"));
    }
}

$conn = null;
?>