CategoriaController.dart 1.87 KB
Newer Older
nayeli92433 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
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<Map<String, dynamic>> getCategories() async {
    Map<String, dynamic> mapResp = {
      'ok': false,
      'message': 'No hay categorias',
      'data': null
    };

    // Verificar la conectividad de la red
    List<ConnectivityResult> connectivityResult = await _connectivity.checkConnectivity();
    if (!connectivityResult.contains(ConnectivityResult.none)) {
      if (connectivityResult.contains(ConnectivityResult.wifi) || connectivityResult.contains(ConnectivityResult.mobile)) {
        try {
          // Realizar la solicitud a la API
          Map<String, dynamic> respGet = await _categoryApi.getCategories();
          if (respGet['statusCode'] == 200) {
            try {
              var decodeResp = json.decode(respGet['body']);
              List<CategoriaModel> 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;
  }
}