Paginas creadas wip
This commit is contained in:
@@ -137,6 +137,7 @@ class EmpresasNegociosProvider extends ChangeNotifier {
|
||||
? "${supabaseLU.supabaseUrl}/storage/v1/object/public/nethive/imagenes/${negocio.imagenUrl}?${DateTime.now().millisecondsSinceEpoch}"
|
||||
: '',
|
||||
),
|
||||
'acceder_infraestructura': PlutoCell(value: negocio.id),
|
||||
'editar': PlutoCell(value: negocio.id),
|
||||
'eliminar': PlutoCell(value: negocio.id),
|
||||
'ver_componentes': PlutoCell(value: negocio.id),
|
||||
|
||||
128
lib/providers/nethive/navigation_provider.dart
Normal file
128
lib/providers/nethive/navigation_provider.dart
Normal file
@@ -0,0 +1,128 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:nethive_neo/models/nethive/negocio_model.dart';
|
||||
import 'package:nethive_neo/models/nethive/empresa_model.dart';
|
||||
import 'package:nethive_neo/helpers/globals.dart';
|
||||
|
||||
class NavigationProvider extends ChangeNotifier {
|
||||
// Estados principales
|
||||
String? _negocioSeleccionadoId;
|
||||
Negocio? _negocioSeleccionado;
|
||||
Empresa? _empresaSeleccionada;
|
||||
int _selectedMenuIndex = 0;
|
||||
|
||||
// Getters
|
||||
String? get negocioSeleccionadoId => _negocioSeleccionadoId;
|
||||
Negocio? get negocioSeleccionado => _negocioSeleccionado;
|
||||
Empresa? get empresaSeleccionada => _empresaSeleccionada;
|
||||
int get selectedMenuIndex => _selectedMenuIndex;
|
||||
|
||||
// Lista de opciones del sidemenu
|
||||
final List<NavigationMenuItem> menuItems = [
|
||||
NavigationMenuItem(
|
||||
title: 'Dashboard',
|
||||
icon: Icons.dashboard,
|
||||
route: '/dashboard',
|
||||
index: 0,
|
||||
),
|
||||
NavigationMenuItem(
|
||||
title: 'Inventario',
|
||||
icon: Icons.inventory_2,
|
||||
route: '/inventario',
|
||||
index: 1,
|
||||
),
|
||||
NavigationMenuItem(
|
||||
title: 'Topología',
|
||||
icon: Icons.account_tree,
|
||||
route: '/topologia',
|
||||
index: 2,
|
||||
),
|
||||
NavigationMenuItem(
|
||||
title: 'Alertas',
|
||||
icon: Icons.warning,
|
||||
route: '/alertas',
|
||||
index: 3,
|
||||
),
|
||||
NavigationMenuItem(
|
||||
title: 'Configuración',
|
||||
icon: Icons.settings,
|
||||
route: '/configuracion',
|
||||
index: 4,
|
||||
),
|
||||
NavigationMenuItem(
|
||||
title: 'Empresas',
|
||||
icon: Icons.business,
|
||||
route: '/empresas',
|
||||
index: 5,
|
||||
isSpecial: true, // Para diferenciarlo como opción de regreso
|
||||
),
|
||||
];
|
||||
|
||||
// Métodos para establecer el negocio seleccionado
|
||||
Future<void> setNegocioSeleccionado(String negocioId) async {
|
||||
try {
|
||||
_negocioSeleccionadoId = negocioId;
|
||||
|
||||
// Obtener datos completos del negocio
|
||||
final negocioResponse = await supabaseLU.from('negocio').select('''
|
||||
*,
|
||||
empresa!inner(*)
|
||||
''').eq('id', negocioId).single();
|
||||
|
||||
_negocioSeleccionado = Negocio.fromMap(negocioResponse);
|
||||
_empresaSeleccionada = Empresa.fromMap(negocioResponse['empresa']);
|
||||
|
||||
// Reset menu selection when changing business
|
||||
_selectedMenuIndex = 0;
|
||||
|
||||
notifyListeners();
|
||||
} catch (e) {
|
||||
print('Error al establecer negocio seleccionado: $e');
|
||||
}
|
||||
}
|
||||
|
||||
// Método para cambiar la selección del menú
|
||||
void setSelectedMenuIndex(int index) {
|
||||
_selectedMenuIndex = index;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
// Método para limpiar la selección (al regresar a empresas)
|
||||
void clearSelection() {
|
||||
_negocioSeleccionadoId = null;
|
||||
_negocioSeleccionado = null;
|
||||
_empresaSeleccionada = null;
|
||||
_selectedMenuIndex = 0;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
// Método para obtener el item del menú por índice
|
||||
NavigationMenuItem getMenuItemByIndex(int index) {
|
||||
return menuItems.firstWhere((item) => item.index == index);
|
||||
}
|
||||
|
||||
// Método para obtener el item del menú por ruta
|
||||
NavigationMenuItem? getMenuItemByRoute(String route) {
|
||||
try {
|
||||
return menuItems.firstWhere((item) => item.route == route);
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Modelo para los items del menú
|
||||
class NavigationMenuItem {
|
||||
final String title;
|
||||
final IconData icon;
|
||||
final String route;
|
||||
final int index;
|
||||
final bool isSpecial;
|
||||
|
||||
NavigationMenuItem({
|
||||
required this.title,
|
||||
required this.icon,
|
||||
required this.route,
|
||||
required this.index,
|
||||
this.isSpecial = false,
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user