<?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['viv_id'])) {
        $viv_id = $_GET['viv_id'];

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

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

        if ($data) {
            echo json_encode($data);
        } else {
            echo json_encode(array("message" => "No se encontró ninguna Visita de Vivienda"));
        }
    } else  if (isset($_GET['obr_id'])) {
        $obr_id = $_GET['obr_id'];

        $query = "SELECT * FROM visita_vivienda 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 Visita de Vivienda"));
        }
    } else {
        $query = "SELECT * FROM visita_vivienda";
        $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);

        $viv_latitud = $data['viv_latitud'];
        $viv_longitud = $data['viv_longitud'];
        $viv_altitud = $data['viv_altitud'];
        $viv_ip = $data['viv_ip'];
        $viv_valor_planilla = $data['viv_valor_planilla'];
        $viv_porcentaje_avance_infraestructura = $data['viv_porcentaje_avance_infraestructura'];
        $obr_id = $data['obr_id'];
        $viv_observacion = $data['viv_observacion'];
        $viv_fecha = $data['viv_fecha'];
        $viv_fecha_creacion = date('Y-m-d H:i:s');
        $viv_fecha_modificacion = date('Y-m-d H:i:s');
        $viv_estado = 1;
        $viv_acta_entrega_recepcion = $data['viv_acta_entrega_recepcion'];
        $viv_path_evidencia = $data['viv_path_evidencia'];

        $query = "INSERT INTO visita_vivienda (
            viv_latitud,
            viv_longitud,
            viv_altitud,
            viv_ip,
            viv_valor_planilla,
            viv_porcentaje_avance_infraestructura,
            obr_id,
            viv_observacion,
            viv_fecha,
            viv_fecha_creacion,
            viv_fecha_modificacion,
            viv_estado,
            viv_acta_entrega_recepcion,
            viv_path_evidencia
        ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

        $stmt = $conn->prepare($query);
        $stmt->execute([
            $viv_latitud,
            $viv_longitud,
            $viv_altitud,
            $viv_ip,
            $viv_valor_planilla,
            $viv_porcentaje_avance_infraestructura,
            $obr_id,
            $viv_observacion,
            $viv_fecha,
            $viv_fecha_creacion,
            $viv_fecha_modificacion,
            $viv_estado,
            $viv_acta_entrega_recepcion,
            $viv_path_evidencia
        ]);

        $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));
    }
}
}


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

    $viv_id = $data['viv_id']; // ID de la visita de vivienda a actualizar

    $viv_latitud = $data['viv_latitud'];
    $viv_longitud = $data['viv_longitud'];
    $viv_altitud = $data['viv_altitud'];
    $viv_ip = $data['viv_ip'];
    $viv_valor_planilla = $data['viv_valor_planilla'];
    $viv_porcentaje_avance_infraestructura = $data['viv_porcentaje_avance_infraestructura'];
    $obr_id = $data['obr_id'];
    $viv_observacion = $data['viv_observacion'];
    $viv_fecha = $data['viv_fecha'];
    $viv_fecha_modificacion = date('Y-m-d H:i:s');
    $viv_estado = $data['viv_estado'];
    $viv_acta_entrega_recepcion = $data['viv_acta_entrega_recepcion'];
    $viv_path_evidencia = $data['viv_path_evidencia'];

    $query = "UPDATE visita_vivienda SET
        viv_latitud = ?,
        viv_longitud = ?,
        viv_altitud = ?,
        viv_ip = ?,
        viv_valor_planilla = ?,
        viv_porcentaje_avance_infraestructura = ?,
        obr_id = ?,
        viv_observacion = ?,
        viv_fecha = ?,
        viv_fecha_modificacion = ?,
        viv_estado = ?,
        viv_acta_entrega_recepcion = ?,
        viv_path_evidencia = ?
    WHERE viv_id = ?";

    $stmt = $conn->prepare($query);
    $stmt->execute([
        $viv_latitud,
        $viv_longitud,
        $viv_altitud,
        $viv_ip,
        $viv_valor_planilla,
        $viv_porcentaje_avance_infraestructura,
        $obr_id,
        $viv_observacion,
        $viv_fecha,
        $viv_fecha_modificacion,
        $viv_estado,
        $viv_acta_entrega_recepcion,
        $viv_path_evidencia,
        $viv_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);

    $obr_id = $data['viv_id']; // ID de la vivienda conjunto a eliminar

    $query = "DELETE FROM visita_vivienda WHERE viv_id = ?";

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