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

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

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

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

        $query = "SELECT * FROM `V_CONTRATO` 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 contrato";
        $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);

    $con_codigo= $data['con_codigo'];
    $con_id_sercop= $data['con_id_sercop'];
    $con_fecha_creacion_registro = date('Y-m-d H:i:s'); 
    $con_fecha_modificacion_registro = date('Y-m-d H:i:s'); 
    $con_estado = 1;
    $con_fecha_pago_anticipo = $data['con_fecha_pago_anticipo'];
    $con_plazo_finalizacion = $data['con_plazo_finalizacion'];
    $con_cod_institucional_juridico_1 = $data['con_cod_institucional_juridico_1'];
    $con_cod_institucional_juridico_2 = $data['con_cod_institucional_juridico_2'];
    $con_cod_institucional_juridico_3 = $data['con_cod_institucional_juridico_3'];
    $con_tipo_1 = $data['con_tipo_1'];
    $con_tipo_2 = $data['con_tipo_2'];
    $con_tipo_3 = $data['con_tipo_3'];
    $con_id_vinculado_administracion = $data['con_id_vinculado_administracion'];
    $cnv_id= $data['cnv_id'];

    $query = "INSERT INTO contrato (
        con_codigo,
        con_id_sercop,
        con_fecha_creacion_registro,
        con_fecha_modificacion_registro,
        con_estado,
        con_fecha_pago_anticipo,
        con_plazo_finalizacion,
        con_cod_institucional_juridico_1,
        con_cod_institucional_juridico_2,
        con_cod_institucional_juridico_3,
        con_tipo_1,
        con_tipo_2,
        con_tipo_3,
        con_id_vinculado_administracion,
        cnv_id
    ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

    $stmt = $conn->prepare($query);
    $stmt->execute([
        $con_codigo,
        $con_id_sercop,
        $con_fecha_creacion_registro,
        $con_fecha_modificacion_registro,
        $con_estado,
        $con_fecha_pago_anticipo,
        $con_plazo_finalizacion,
        $con_cod_institucional_juridico_1,
        $con_cod_institucional_juridico_2,
        $con_cod_institucional_juridico_3,
        $con_tipo_1,
        $con_tipo_2,
        $con_tipo_3,
        $con_id_vinculado_administracion,
        $cnv_id
    ]);

    //echo json_encode(array("message" => "0", "inserted_id" => 1));
    
     $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 {
   // if (isset($_GET['con_id'])) {
    $data = json_decode(file_get_contents('php://input'), true);
    //$con_id_anterior = $_GET['con_id'];    
    $con_id = $data['con_id']; // ID del contrato a actualizar
    $con_codigo = $data['con_codigo'];
    $con_id_sercop = $data['con_id_sercop'];
    $con_fecha_modificacion_registro = date('Y-m-d H:i:s');
    $con_estado = $data['con_estado'];
    $con_fecha_pago_anticipo = $data['con_fecha_pago_anticipo'];
    $con_plazo_finalizacion = $data['con_plazo_finalizacion'];
    $con_cod_institucional_juridico_1 = $data['con_cod_institucional_juridico_1'];
    $con_cod_institucional_juridico_2 = $data['con_cod_institucional_juridico_2'];
    $con_cod_institucional_juridico_3 = $data['con_cod_institucional_juridico_3'];
    $con_tipo_1 = $data['con_tipo_1'];
    $con_tipo_2 = $data['con_tipo_2'];
    $con_tipo_3 = $data['con_tipo_3'];
    $con_id_vinculado_administracion = $data['con_id_vinculado_administracion'];
    $cnv_id = $data['cnv_id'];

    $query = "UPDATE contrato SET
        con_codigo = ?,
        con_id_sercop = ?,
        con_fecha_modificacion_registro = ?,
        con_estado = ?,
        con_fecha_pago_anticipo = ?,
        con_plazo_finalizacion = ?,
        con_cod_institucional_juridico_1 = ?,
        con_cod_institucional_juridico_2 = ?,
        con_cod_institucional_juridico_3 = ?,
        con_tipo_1 = ?,
        con_tipo_2 = ?,
        con_tipo_3 = ?,
        con_id_vinculado_administracion = ?,
        cnv_id = ?
    WHERE con_id = ?";

    $stmt = $conn->prepare($query);
    $stmt->execute([
        $con_codigo,
        $con_id_sercop,
        $con_fecha_modificacion_registro,
        $con_estado,
        $con_fecha_pago_anticipo,
        $con_plazo_finalizacion,
        $con_cod_institucional_juridico_1,
        $con_cod_institucional_juridico_2,
        $con_cod_institucional_juridico_3,
        $con_tipo_1,
        $con_tipo_2,
        $con_tipo_3,
        $con_id_vinculado_administracion,
        $cnv_id,
        $con_id
    ]);

    if ($stmt) {
        echo json_encode(array("inserted_id" => 1));
    } else {
        echo json_encode(array("inserted_id" => -2));
    }
/*} else {
    $data = json_decode(file_get_contents('php://input'), true);

    $con_id = $data['con_id']; // ID del contrato a actualizar

    $con_id_sercop = $data['con_id_sercop'];
    $con_fecha_modificacion_registro = $data['con_fecha_modificacion_registro'];
    $con_estado = $data['con_estado'];
    $con_fecha_pago_anticipo = $data['con_fecha_pago_anticipo'];
    $con_plazo_finalizacion = $data['con_plazo_finalizacion'];
    $con_cod_institucional_juridico_1 = $data['con_cod_institucional_juridico_1'];
    $con_cod_institucional_juridico_2 = $data['con_cod_institucional_juridico_2'];
    $con_cod_institucional_juridico_3 = $data['con_cod_institucional_juridico_3'];
    $con_tipo_1 = $data['con_tipo_1'];
    $con_tipo_2 = $data['con_tipo_2'];
    $con_tipo_3 = $data['con_tipo_3'];
    $con_id_vinculado_administracion = $data['con_id_vinculado_administracion'];
    $cnv_id = $data['cnv_id'];

    $query = "UPDATE contrato SET
        con_id_sercop = ?,
        con_fecha_modificacion_registro = ?,
        con_estado = ?,
        con_fecha_pago_anticipo = ?,
        con_plazo_finalizacion = ?,
        con_cod_institucional_juridico_1 = ?,
        con_cod_institucional_juridico_2 = ?,
        con_cod_institucional_juridico_3 = ?,
        con_tipo_1 = ?,
        con_tipo_2 = ?,
        con_tipo_3 = ?,
        con_id_vinculado_administracion = ?,
        cnv_id = ?
    WHERE con_id = ?";

    $stmt = $conn->prepare($query);
    $stmt->execute([
        $con_id_sercop,
        $con_fecha_modificacion_registro,
        $con_estado,
        $con_fecha_pago_anticipo,
        $con_plazo_finalizacion,
        $con_cod_institucional_juridico_1,
        $con_cod_institucional_juridico_2,
        $con_cod_institucional_juridico_3,
        $con_tipo_1,
        $con_tipo_2,
        $con_tipo_3,
        $con_id_vinculado_administracion,
        $cnv_id,
        $con_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);

    $con_id = $data['con_id']; // ID del contrato a eliminar

    $query = "DELETE FROM contrato WHERE con_id = ?";

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