public function procesar_formularios() {
if (isset($_POST['lidoma_action'])) {
$nonce = isset($_POST['_wpnonce']) ? $_POST['_wpnonce'] : '';
if (!wp_verify_nonce($nonce, 'lidoma_nonce')) {
wp_die('Error de seguridad');
}
switch ($_POST['lidoma_action']) {
case 'buscar_lista':
$this->procesar_busqueda_lista();
break;
case 'crear_lista':
$this->procesar_creacion_lista();
break;
case 'editar_lista':
$this->procesar_edicion_lista();
break;
case 'eliminar_lista':
$this->procesar_eliminacion_lista();
break;
case 'reservar_regalo':
$this->procesar_reserva_regalo();
break;
}
}
}
private function procesar_reserva_regalo() {
// Lógica para reservar regalo (accesible sin login)
if (!empty($_POST['elemento_id']) && !empty($_POST['lista_id'])) {
global $wpdb;
$elemento_id = intval($_POST['elemento_id']);
$lista_id = intval($_POST['lista_id']);
// Verificar que el elemento existe y tiene disponibilidad
$table_elementos = $wpdb->prefix . 'lidoma_elementos';
$elemento = $wpdb->get_row($wpdb->prepare(
"SELECT * FROM $table_elementos WHERE id = %d AND lista_id = %d",
$elemento_id, $lista_id
));
if ($elemento && $elemento->cantidad_reservada < $elemento->cantidad_deseada) {
// Incrementar la cantidad reservada
$wpdb->update(
$table_elementos,
array('cantidad_reservada' => $elemento->cantidad_reservada + 1),
array('id' => $elemento_id),
array('%d'),
array('%d')
);
set_transient('lidoma_reserva_exitosa', '1', 30);
} else {
set_transient('lidoma_error_reserva', __('No se pudo reservar el regalo.', 'lidoma-listas'), 30);
}
// Redirigir de vuelta a la lista
wp_redirect(add_query_arg('lista_id', $lista_id, get_permalink()));
exit;
}
}