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

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

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

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

        $query = "SELECT * FROM obra WHERE pry_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());
        }
    } else if (isset($_GET['per_id'])) {
         try {
        $per_id = $_GET['per_id'];

        $query = "SELECT * FROM `V_OBRA` WHERE per_id = ?";
        $stmt = $conn->prepare($query);
        $stmt->execute([$per_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"));
        }
         } 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 obra";
        $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);

        $obr_nombre = $data['obr_nombre'];
        $obr_fecha_creacion_registro = date('Y-m-d H:i:s');
        $obr_fecha_modificacion_registro = date('Y-m-d H:i:s');
        $obr_estado = $data['obr_estado'];
        $obr_estado_registro = $data['obr_estado_registro'];
        $obr_incentivo_saneamiento = $data['obr_incentivo_saneamiento'];
        $obr_fecha_termino_programada = $data['obr_fecha_termino_programada'];
        $obr_monto_total = $data['obr_monto_total'];
        $obr_monto_incentivo_saneamiento = $data['obr_monto_incentivo_saneamiento'];
        $obr_num_vivienda_incentivo_saneamiento = $data['obr_num_vivienda_incentivo_saneamiento'];
        $obr_multas_contratos = $data['obr_multas_contratos'];
        $obr_valor_liquidacion = $data['obr_valor_liquidacion'];
        $obr_fecha_programada_inaugurar = $data['obr_fecha_programada_inaugurar'];
        $pry_id = $data['pry_id'];
        $obr_multas_fiscalizacion = $data['obr_multas_fiscalizacion'];
        $prq_id = $data['prq_id'];
        $obr_direccion = $data['obr_direccion'];
        $obr_porcentaje_avance = $data['obr_porcentaje_avance'];
        $obr_fecha_termino_hito_1 = $data['obr_fecha_termino_hito_1'];
        $obr_fecha_termino_hito_2 = $data['obr_fecha_termino_hito_2'];
        $obr_fecha_termino_hito_3 = $data['obr_fecha_termino_hito_3'];
        $obr_fecha_termino_hito_4 = $data['obr_fecha_termino_hito_4'];
        $obr_fecha_termino_hito_5 = $data['obr_fecha_termino_hito_5'];
        $obr_fecha_termino_hito_6 = $data['obr_fecha_termino_hito_6'];
        $obr_fecha_termino_hito_7 = $data['obr_fecha_termino_hito_7'];
        $obr_fecha_termino_hito_8 = $data['obr_fecha_termino_hito_8'];

        $query = "INSERT INTO obra (
            obr_nombre,
            obr_fecha_creacion_registro,
            obr_fecha_modificacion_registro,
            obr_estado,
            obr_estado_registro,
            obr_incentivo_saneamiento,
            obr_fecha_termino_programada,
            obr_monto_total,
            obr_monto_incentivo_saneamiento,
            obr_num_vivienda_incentivo_saneamiento,
            obr_multas_contratos,
            obr_valor_liquidacion,
            obr_fecha_programada_inaugurar,
            pry_id,
            obr_multas_fiscalizacion,
            prq_id,
            obr_direccion,
            obr_porcentaje_avance,
            obr_fecha_termino_hito_1,
            obr_fecha_termino_hito_2,
            obr_fecha_termino_hito_3,
            obr_fecha_termino_hito_4,
            obr_fecha_termino_hito_5,
            obr_fecha_termino_hito_6,
            obr_fecha_termino_hito_7,
            obr_fecha_termino_hito_8
        ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

        $stmt = $conn->prepare($query);
        $stmt->execute([
            $obr_nombre,
            $obr_fecha_creacion_registro,
            $obr_fecha_modificacion_registro,
            $obr_estado,
            $obr_estado_registro,
            $obr_incentivo_saneamiento,
            $obr_fecha_termino_programada,
            $obr_monto_total,
            $obr_monto_incentivo_saneamiento,
            $obr_num_vivienda_incentivo_saneamiento,
            $obr_multas_contratos,
            $obr_valor_liquidacion,
            $obr_fecha_programada_inaugurar,
            $pry_id,
            $obr_multas_fiscalizacion,
            $prq_id,
            $obr_direccion,
            $obr_porcentaje_avance,
            $obr_fecha_termino_hito_1,
            $obr_fecha_termino_hito_2,
            $obr_fecha_termino_hito_3,
            $obr_fecha_termino_hito_4,
            $obr_fecha_termino_hito_5,
            $obr_fecha_termino_hito_6,
            $obr_fecha_termino_hito_7,
            $obr_fecha_termino_hito_8
        ]);

        $insertedId = $conn->lastInsertId();
        echo json_encode(array("message" => "Registro insertado con ID: $insertedId", "inserted_id" => intval($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", "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);

    $obr_id = $data['obr_id']; // ID de la obra a actualizar
    $obr_nombre = $data['obr_nombre'];
    $obr_fecha_modificacion_registro = date('Y-m-d H:i:s');
    $obr_estado = $data['obr_estado'];
    $obr_estado_registro = $data['obr_estado_registro'];
    $obr_incentivo_saneamiento = $data['obr_incentivo_saneamiento'];
    $obr_fecha_termino_programada = $data['obr_fecha_termino_programada'];
    $obr_monto_total = $data['obr_monto_total'];
    $obr_monto_incentivo_saneamiento = $data['obr_monto_incentivo_saneamiento'];
    $obr_num_vivienda_incentivo_saneamiento = $data['obr_num_vivienda_incentivo_saneamiento'];
    $obr_multas_contratos = $data['obr_multas_contratos'];
    $obr_valor_liquidacion = $data['obr_valor_liquidacion'];
    $obr_fecha_programada_inaugurar = $data['obr_fecha_programada_inaugurar'];
    $pry_id = $data['pry_id'];
    $obr_multas_fiscalizacion = $data['obr_multas_fiscalizacion'];
    $prq_id = $data['prq_id'];
    $obr_direccion = $data['obr_direccion'];
    $obr_porcentaje_avance = $data['obr_porcentaje_avance'];
    $obr_fecha_termino_hito_1 = $data['obr_fecha_termino_hito_1'];
    $obr_fecha_termino_hito_2 = $data['obr_fecha_termino_hito_2'];
    $obr_fecha_termino_hito_3 = $data['obr_fecha_termino_hito_3'];
    $obr_fecha_termino_hito_4 = $data['obr_fecha_termino_hito_4'];
    $obr_fecha_termino_hito_5 = $data['obr_fecha_termino_hito_5'];
    $obr_fecha_termino_hito_6 = $data['obr_fecha_termino_hito_6'];
    $obr_fecha_termino_hito_7 = $data['obr_fecha_termino_hito_7'];
    $obr_fecha_termino_hito_8 = $data['obr_fecha_termino_hito_8'];

    $query = "UPDATE obra SET
        obr_nombre = ?,
        obr_fecha_modificacion_registro = ?,
        obr_estado = ?,
        obr_estado_registro = ?,
        obr_incentivo_saneamiento = ?,
        obr_fecha_termino_programada = ?,
        obr_monto_total = ?,
        obr_monto_incentivo_saneamiento = ?,
        obr_num_vivienda_incentivo_saneamiento = ?,
        obr_multas_contratos = ?,
        obr_valor_liquidacion = ?,
        obr_fecha_programada_inaugurar = ?,
        pry_id = ?,
        obr_multas_fiscalizacion = ?,
        prq_id = ?,
        obr_direccion = ?,
        obr_porcentaje_avance = ?,
        obr_fecha_termino_hito_1 = ?,
        obr_fecha_termino_hito_2 = ?,
        obr_fecha_termino_hito_3 = ?,
        obr_fecha_termino_hito_4 = ?,
        obr_fecha_termino_hito_5 = ?,
        obr_fecha_termino_hito_6 = ?,
        obr_fecha_termino_hito_7 = ?,
        obr_fecha_termino_hito_8 = ?
    WHERE obr_id = ?";

    $stmt = $conn->prepare($query);
    $stmt->execute([
        $obr_nombre,
        $obr_fecha_modificacion_registro,
        $obr_estado,
        $obr_estado_registro,
        $obr_incentivo_saneamiento,
        $obr_fecha_termino_programada,
        $obr_monto_total,
        $obr_monto_incentivo_saneamiento,
        $obr_num_vivienda_incentivo_saneamiento,
        $obr_multas_contratos,
        $obr_valor_liquidacion,
        $obr_fecha_programada_inaugurar,
        $pry_id,
        $obr_multas_fiscalizacion,
        $prq_id,
        $obr_direccion,
        $obr_porcentaje_avance,
        $obr_fecha_termino_hito_1,
        $obr_fecha_termino_hito_2,
        $obr_fecha_termino_hito_3,
        $obr_fecha_termino_hito_4,
        $obr_fecha_termino_hito_5,
        $obr_fecha_termino_hito_6,
        $obr_fecha_termino_hito_7,
        $obr_fecha_termino_hito_8,
        $obr_id
    ]);

    if ($stmt) {
        echo json_encode(array("inserted_id" => 1));
    } 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 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['obr_id']; // ID de la obra a eliminar

    $query = "DELETE FROM obra WHERE obr_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;
?>