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

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

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

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

        if ($data) {
            echo json_encode($data);
        } else {
            echo json_encode(array("message" => "No se encontró ninguna persona con esa cédula"));
        }
    } 
     else if (isset($_GET['per_id'])) {
        $per_id = $_GET['per_id'];

        $query = "SELECT * FROM persona 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ó ninguna persona con esa cédula"));
        }
    }
    
     else if (isset($_GET['rol_id'])) {
        $rol_id = $_GET['rol_id'];
        $query = "SELECT * FROM `V_PERSONA_X_ROL` WHERE rol_id = ?";            
        $stmt = $conn->prepare($query);
        $stmt->execute([$rol_id]);

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

        if ($data) {
            echo json_encode($data);
        } else {
            echo json_encode(array("message" => "No se encontró ninguna persona con esa rol"));
        }
    }
    else if (isset($_GET['obr_id'])) {
        $obr_id = $_GET['obr_id'];
        $query = "SELECT * FROM `V_PERSONA_BENEFICIARIO` WHERE obr_id = ?"; 
        $stmt = $conn->prepare($query);
        $stmt->execute([$obr_id]);

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

        if ($data) {
            echo json_encode($data);
        } else {
            echo json_encode(array("message" => "No se encontró ninguna persona con esa rol"));
        }
    }
    else if (isset($_GET['per_id_app'])) {
         try {
        $per_id_app = $_GET['per_id_app'];

        $query = "SELECT * FROM `V_PERSONA_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 if (isset($_GET['per_id_app_benef']) && isset($_GET['rol_id'])) {
         try {
        $per_id_app_benef = $_GET['per_id_app_benef'];
        $rol_id = $_GET['rol_id'];
        
        $query = "";
        
        if($rol_id == 3){
        $query = "SELECT * FROM `V_PERSONAS_BENEFICIARIAS_SYNC` WHERE per_id_app_benef = ? or per_id_app_benef is null";
        }
        
        if($rol_id == 4){
        $query = "SELECT * FROM `V_PERSONAS_BENEFICIARIAS_BY_PERSONA` WHERE per_id_app_benef = ?";    
        }
        
        $stmt = $conn->prepare($query);
        $stmt->execute([$per_id_app_benef]);

        $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 persona";
    $stmt = $conn->prepare($query);
    $stmt->execute();
    
    $data = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    echo json_encode($data);
}
}


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

    $per_num_documento = $data['per_num_documento'];
    $per_tipo_documento = $data['per_tipo_documento'];
    $per_nombre_completo = $data['per_nombre_completo'];
    $per_telefono = $data['per_telefono'];
    $per_celular = $data['per_celular'];
    $per_correo = $data['per_correo'];
    $per_direccion = $data['per_direccion'];
    $per_sexo = $data['per_sexo'];
    $per_fecha_nacimiento = $data['per_fecha_nacimiento'];
    $prq_id = $data['prq_id'];
    $per_fecha_creacion = date('Y-m-d H:i:s'); 
    $per_fecha_modificacion = date('Y-m-d H:i:s'); 
    $per_estado = 1;

    $query = "INSERT INTO persona (
        per_num_documento, 
        per_tipo_documento, 
        per_nombre_completo, 
        per_telefono, 
        per_celular, 
        per_correo, 
        per_direccion, 
        per_sexo, 
        per_fecha_nacimiento, 
        prq_id, 
        per_fecha_creacion, 
        per_fecha_modificacion, 
        per_estado
      
    ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

    $stmt = $conn->prepare($query);
    $stmt->execute([
        $per_num_documento,
        $per_tipo_documento,
        $per_nombre_completo,
        $per_telefono,
        $per_celular,
        $per_correo,
        $per_direccion,
        $per_sexo,
        $per_fecha_nacimiento,
        $prq_id,
        $per_fecha_creacion,
        $per_fecha_modificacion,
        $per_estado
       
    ]);

    $insertedId = $conn->lastInsertId(); // Obtén el ID del último registro insertado
     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));
    }
}
}


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

    $per_id = $data['per_id']; // ID de la persona a actualizar

    $per_num_documento = $data['per_num_documento'];
    $per_tipo_documento = $data['per_tipo_documento'];
    $per_nombre_completo = $data['per_nombre_completo'];
    $per_telefono = $data['per_telefono'];
    $per_celular = $data['per_celular'];
    $per_correo = $data['per_correo'];
    $per_direccion = $data['per_direccion'];
    $per_sexo = $data['per_sexo'];
    $per_fecha_nacimiento = $data['per_fecha_nacimiento'];
    $prq_id = $data['prq_id'];
    $per_fecha_modificacion = date('Y-m-d H:i:s'); 
    $per_estado = 1;

    $query = "UPDATE persona SET
        per_num_documento = ?, 
        per_tipo_documento = ?, 
        per_nombre_completo = ?, 
        per_telefono = ?, 
        per_celular = ?, 
        per_correo = ?, 
        per_direccion = ?, 
        per_sexo = ?, 
        per_fecha_nacimiento = ?, 
        prq_id = ?, 
        per_fecha_modificacion = ?, 
        per_estado = ?
    WHERE per_id = ?";

    $stmt = $conn->prepare($query);
    $stmt->execute([
        $per_num_documento,
        $per_tipo_documento,
        $per_nombre_completo,
        $per_telefono,
        $per_celular,
        $per_correo,
        $per_direccion,
        $per_sexo,
        $per_fecha_nacimiento,
        $prq_id,
        $per_fecha_modificacion,
        $per_estado,
        $per_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);

    $per_id = $data['per_id']; // ID de la persona a eliminar

    $query = "DELETE FROM persona WHERE per_id = ?";

    $stmt = $conn->prepare($query);
    if ($stmt->execute([$per_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;
?>