123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- import 'dart:convert';
- import 'package:flutter/material.dart';
- import '../models/models.dart';
- import '../services/base_service.dart';
- class UsuariosViewModel extends ChangeNotifier {
- String _busqueda = "";
- String get busqueda => _busqueda;
- List<Usuario> _registros = [];
- List<Usuario> get registros => _registros;
- Usuario? _selectedModelo;
- Usuario? get selectedModelo => _selectedModelo;
- bool _isLoading = false;
- bool get isLoading => _isLoading;
- int pagina = 1;
- int totalPaginas = 1;
- int limite = 10;
- Map<String, bool> _selectedPermisos = {};
- Map<String, bool> get selectedPermisos => _selectedPermisos;
- Future<void> fetchRegistros({
- bool segmentar = false,
- }) async {
- Map<String, String> parametros = {
- "ordenar": "id-desc",
- "expand": "empresas",
- "pagina": "$pagina",
- "limite": "$limite"
- };
- if (_busqueda.isNotEmpty) {
- parametros = {
- "ordenar": "id-desc",
- "limite": "-1",
- "q": _busqueda,
- "expand": "empresas"
- };
- }
- var r =
- await BaseService().get("admin/usuario", queryParameters: parametros);
- Map<String, dynamic> resJson = jsonDecode(r.body);
- try {
- List<Usuario> aux = [];
- if (r.statusCode == 200) {
- for (var x in resJson['resultado']) {
- Usuario modelo = Usuario.fromJson(x);
- aux.add(modelo);
- }
- }
- _registros = aux;
- notifyListeners();
- } catch (e) {
- print(e);
- }
- }
- Future<void> cargarPermisosUsuario(int usuarioId) async {
- setIsLoading(true);
- try {
- var response = await BaseService().get("admin/usuario",
- queryParameters: {'expand': 'permisos', 'id': '$usuarioId'});
- Map<String, dynamic> resJson = jsonDecode(response.body);
- List<dynamic> permisosUsuario = resJson['resultado'][0]['permisos'];
- Map<String, bool> permisosActualizados = {};
- for (var permiso in permisosUsuario) {
- String permisoId = permiso.toString();
- permisosActualizados[permisoId] = true;
- }
- _selectedPermisos = permisosActualizados;
- // print(_selectedPermisos);
- notifyListeners(); // Avisar a los widgets que escuchan sobre el cambio
- } catch (e) {
- print("Error al cargar los permisos del usuario: $e");
- } finally {
- setIsLoading(false);
- }
- }
- void setSelectedPermisos(Map<String, bool> permisos) {
- _selectedPermisos = permisos;
- notifyListeners();
- }
- Future<void> guardarModelo({
- required Usuario modelo,
- required String nombre,
- required String correo,
- required String telefono,
- }) async {
- //?TEMPORAL
- modelo.nombre = nombre;
- modelo.correo = correo;
- modelo.telefono = telefono;
- modelo.creado = DateTime.now();
- notifyListeners();
- }
- Future<void> guardarUsuario({
- required Usuario modelo,
- required String nombre,
- required String correo,
- required List<String> permisosSeleccionados,
- }) async {
- setIsLoading(true);
- try {
- var requestBody = {
- 'nombre': nombre,
- 'correo': correo,
- 'permisos': permisosSeleccionados,
- };
- if (modelo.id != null) {
- requestBody['id'] = modelo.id;
- }
- var r =
- await BaseService().post("admin/usuario/guardar", body: requestBody);
- if (r.statusCode == 200) {
- print('Usuario guardado exitosamente');
- } else {
- throw Exception('Error al guardar el usuario: ${r.statusCode}');
- }
- } catch (e) {
- print('Error al guardar el usuario: $e');
- } finally {
- setIsLoading(false);
- }
- }
- bool validarUsuario({
- required String nombre,
- required String correo,
- }) {
- if (nombre.isEmpty || correo.isEmpty) {
- return false;
- }
- return true;
- }
- setIsLoading(bool loading) {
- _isLoading = loading;
- notifyListeners();
- }
- selectUsuario(Usuario? usuario) {
- _selectedModelo = usuario;
- notifyListeners();
- }
- setBusqueda(String value) {
- _busqueda = value;
- notifyListeners();
- }
- Future usuarioEmpresa(int idUsuario, String idEmpresa) async {
- var r = await BaseService().post("admin/usuario/usuario-empresa",
- body: {"idUsuario": idUsuario, "idEmpresa": idEmpresa});
- if (r.statusCode == 200) {}
- }
- cambiarPagina(int nuevaPagina, {bool segmentar = false}) {
- pagina = nuevaPagina;
- fetchRegistros(segmentar: segmentar);
- }
- }
|