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

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

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

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

        $query = "SELECT * FROM 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ó ningún Beneficiario"));
        }
    }
    else {
        $query = "SELECT * FROM beneficiario";
        $stmt = $conn->prepare($query);
        $stmt->execute();

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

        echo json_encode($data);
    }
}


// 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'];
        $bnf_fecha_creacion = date('Y-m-d H:i:s');
        $bnf_fecha_modificacion = date('Y-m-d H:i:s');
        $bnf_estado_registro= 1;
        $bnf_estado_obra = $data['bnf_estado_obra'];
        $bnf_acta_uso_ocupacion = $data['bnf_acta_uso_ocupacion'];
        $bnf_fecha_acta_uso_ocupacion = $data['bnf_fecha_acta_uso_ocupacion'];
        $obr_id = $data['obr_id'];
        $bnf_num_vivienda = $data['bnf_num_vivienda'];
        $bnf_identificacion_vivienda = $data['bnf_identificacion_vivienda'];

        $query = "INSERT INTO beneficiario (
            per_id,
            bnf_fecha_creacion,
            bnf_fecha_modificacion,
            bnf_estado_registro,
            bnf_estado_obra,
            bnf_acta_uso_ocupacion,
            bnf_fecha_acta_uso_ocupacion,
            obr_id,
            bnf_num_vivienda,
            bnf_identificacion_vivienda
        ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

        $stmt = $conn->prepare($query);
        $stmt->execute([
            $per_id,
            $bnf_fecha_creacion,
            $bnf_fecha_modificacion,
            $bnf_estado_registro,
            $bnf_estado_obra,
            $bnf_acta_uso_ocupacion,
            $bnf_fecha_acta_uso_ocupacion,
            $obr_id,
            $bnf_num_vivienda,
            $bnf_identificacion_vivienda
        ]);

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

    $bnf_id = $data['bnf_id'];

    $per_id = $data['per_id'];
    $bnf_fecha_modificacion = date('Y-m-d H:i:s');
    $bnf_estado_registro = $data['bnf_estado_registro'];
    $bnf_estado_obra = $data['bnf_estado_obra'];
    $bnf_acta_uso_ocupacion = $data['bnf_acta_uso_ocupacion'];
    $bnf_fecha_acta_uso_ocupacion = $data['bnf_fecha_acta_uso_ocupacion'];
    $obr_id = $data['obr_id'];
    $bnf_num_vivienda = $data['bnf_num_vivienda'];
    $bnf_identificacion_vivienda = $data['bnf_identificacion_vivienda'];

    $query = "UPDATE beneficiario SET
        per_id = ?,
        bnf_fecha_modificacion = ?,
        bnf_estado_registro = ?,
        bnf_estado_obra = ?,
        bnf_acta_uso_ocupacion = ?,
        bnf_fecha_acta_uso_ocupacion = ?,
        obr_id = ?,
        bnf_num_vivienda = ?,
        bnf_identificacion_vivienda = ?
    WHERE bnf_id = ?";

    $stmt = $conn->prepare($query);
    $stmt->execute([
        $per_id,
        $bnf_fecha_modificacion,
        $bnf_estado_registro,
        $bnf_estado_obra,
        $bnf_acta_uso_ocupacion,
        $bnf_fecha_acta_uso_ocupacion,
        $obr_id,
        $bnf_num_vivienda,
        $bnf_identificacion_vivienda,
        $bnf_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);

    $bnf_id = $data['bnf_id'];

    $query = "DELETE FROM beneficiario WHERE bnf_id = ?";

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