import 'dart:convert'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:miapp_flutter/src/models/CategoriaModel.dart'; import '../http_api/CategoryApi.dart'; class CategoryController { final Connectivity _connectivity = Connectivity(); final CategoryApi _categoryApi = CategoryApi(); Future> getCategories() async { Map mapResp = { 'ok': false, 'message': 'No hay categorias', 'data': null }; List connectivityResult = await _connectivity.checkConnectivity(); if (!connectivityResult.contains(ConnectivityResult.none)) { if (connectivityResult.contains(ConnectivityResult.wifi) || connectivityResult.contains(ConnectivityResult.mobile)) { try { Map respGet = await _categoryApi.getCategories(); if (respGet['statusCode'] == 200) { try { var decodeResp = json.decode(respGet['body']); List listCategories = CategoriaModel.fromJsonArray(decodeResp['data']); mapResp['ok'] = true; mapResp['message'] = "${listCategories.length} categorías encontradas"; mapResp['data'] = listCategories; } catch (e) { mapResp['message'] = "Error en procesamiento de datos: $e"; } } else { mapResp['message'] = "Error en la respuesta de la API: ${respGet['body']}"; } } catch (e) { mapResp['message'] = "Error en la solicitud a la API: $e"; } } else { mapResp['message'] = 'No hay conexión a internet'; } } else { mapResp['message'] = 'No hay conexión a internet'; } return mapResp; } // Método para crear una categoría Future> createCategory(CategoriaModel categoria) async { Map mapResp = { 'ok': false, 'message': 'No se pudo crear la categoría', 'data': null }; List connectivityResult = await _connectivity.checkConnectivity(); if (!connectivityResult.contains(ConnectivityResult.none)) { if (connectivityResult.contains(ConnectivityResult.wifi) || connectivityResult.contains(ConnectivityResult.mobile)) { try { Map respPost = await _categoryApi.postCategory(categoria); if (respPost['statusCode'] == 200 || respPost['statusCode'] == 201) { print('Regresa datos '); try { var decodeResp = json.decode(respPost['body']); CategoriaModel newCategory = CategoriaModel.fromJson(decodeResp['data']); mapResp['ok'] = true; mapResp['message'] = "Categoría creada exitosamente"; mapResp['data'] = newCategory; } catch (e) { mapResp['message'] = "Error en procesamiento de datos: $e"; } } else { mapResp['message'] = "Error en la respuesta de la API: ${respPost['body']}"; } } catch (e) { mapResp['message'] = "Error en la solicitud a la API: $e"; } } else { mapResp['message'] = 'No hay conexión a internet'; } } else { mapResp['message'] = 'No hay conexión a internet'; } return mapResp; } }