prefix . ‘tareas_mantenimiento’;
$charset = $wpdb->get_charset_collate();
$sql = «CREATE TABLE IF NOT EXISTS $tabla (
id mediumint(9) NOT NULL AUTO_INCREMENT,
data longtext NOT NULL,
fecha_creacion datetime DEFAULT CURRENT_TIMESTAMP,
fecha_actualizacion datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) $charset;»;
require_once(ABSPATH . ‘wp-admin/includes/upgrade.php’);
dbDelta($sql);
}
register_activation_hook(__FILE__, ‘mantenimiento_crear_tabla’);
// ================================================
// REGISTRAR RUTAS API REST
// ================================================
add_action(‘rest_api_init’, function () {
register_rest_route(‘mantenimiento/v1’, ‘/tareas’, array(
‘methods’ => ‘GET’,
‘callback’ => ‘mantenimiento_obtener_tareas’,
‘permission_callback’ => ‘__return_true’
));
register_rest_route(‘mantenimiento/v1’, ‘/tareas’, array(
‘methods’ => ‘POST’,
‘callback’ => ‘mantenimiento_guardar_tareas’,
‘permission_callback’ => ‘__return_true’
));
});
// ================================================
// OBTENER TAREAS
// ================================================
function mantenimiento_obtener_tareas() {
global $wpdb;
$tabla = $wpdb->prefix . ‘tareas_mantenimiento’;
$resultado = $wpdb->get_row(«SELECT data FROM $tabla ORDER BY id DESC LIMIT 1″);
if ($resultado) {
return json_decode($resultado->data, true);
}
return array(
‘building’ => »,
‘bPhotos’ => array(),
‘units’ => array(),
‘lastSaved’ => date(‘c’)
);
}
// ================================================
// GUARDAR TAREAS
// ================================================
function mantenimiento_guardar_tareas($request) {
global $wpdb;
$tabla = $wpdb->prefix . ‘tareas_mantenimiento’;
$datos = $request->get_json_params();
if (!$datos || !isset($datos[‘units’])) {
return new WP_REST_Response(array(‘error’ => ‘Datos inválidos’), 400);
}
$datos[‘lastSaved’] = date(‘c’);
$resultado = $wpdb->insert(
$tabla,
array(
‘data’ => json_encode($datos),
‘fecha_actualizacion’ => current_time(‘mysql’)
),
array(‘%s’, ‘%s’)
);
if ($resultado) {
return new WP_REST_Response(array(
‘success’ => true,
‘message’ => ‘Datos guardados correctamente’,
‘data’ => $datos
), 200);
} else {
return new WP_REST_Response(array(
‘error’ => ‘Error al guardar en la base de datos’
), 500);
}
}
// ================================================
// SHORTCODE PARA MOSTRAR LA APP
// ================================================
add_shortcode(‘mantenimiento_app’, ‘mantenimiento_mostrar_app’);
function mantenimiento_mostrar_app() {
$api_url = get_rest_url(null, ‘mantenimiento/v1/tareas’);
$nonce = wp_create_nonce(‘wp_rest’);
ob_start();
?>
Cargando aplicación de mantenimiento…
🔐
Detalles de Mantenimiento y Reparaciones
Ingresa tu código de acceso para continuar
💡 El personal de mantenimiento solo ve sus tareas asignadas
📊 Panel de Estadísticas
👷 Personal de Mantenimiento
📌 Filtrar por personal:
Mostrando: Todas las tareas
Sel: 0
📌 Mis Tareas
📊 Resumen de Tareas