// ignore_for_file: curly_braces_in_flow_control_structures, prefer_is_empty import 'dart:developer'; import 'package:hub/backend/api_requests/api_calls.dart'; import 'package:hub/shared/helpers/base_storage.dart'; import 'package:hub/shared/helpers/sqlite_storage.dart'; import 'dart:convert'; import 'package:hub/shared/helpers/storage_helper.dart'; import 'package:sqflite/sqflite.dart'; class LicenseService { static final LicenseService _instance = LicenseService._internal(); factory LicenseService() => _instance; LicenseService._internal(); static Future initLicenseService() async { // for (var element in LicenseStorageKey.values.map((e) => e.value)) { // await SQLiteStorage.database.insert( // SQLiteStorage.tableLicense, // { // 'key': element, // 'display': 'VISIVEL', // 'expirationDate': '', // 'startDate': '', // 'quantity': '', // }, // conflictAlgorithm: ConflictAlgorithm.ignore, // ); // } } static Future processLicense() async {} static Future fetchLicenses() async { try { log('Obtendo licenças...'); final ApiCallResponse response = await PhpGroup.testCall(); final List responseBody = response.jsonBody; if (responseBody == []) { // throw Exception('Licensa ausente ou vazia.'); } if (response.jsonBody is! List && response.jsonBody['error'] != null) { final String error = response.jsonBody['error_msg'] ?? 'Erro desconhecido'; throw Exception('Erro ao consultar licenças: $error'); } for (var element in responseBody) { switch (element['key']) { case 'FRE-HUB-MESSAGES': _saveModule(element); break; case 'FRE-HUB-LIBERATIONS': _saveModule(element); break; case 'FRE-HUB-RESERVATIONS': _saveModule(element); break; case 'FRE-HUB-ACCESS': _saveModule(element); break; case 'FRE-HUB-OPENED-VISITS': _saveModule(element); break; case 'FRE-HUB-VEHICLES': _saveModule(element); break; case 'FRE-HUB-RESIDENTS': _saveModule(element); break; case 'FRE-HUB-PETS': _saveModule(element); break; case 'FRE-HUB-FASTPASS': _saveModule(element); break; case 'FRE-HUB-ORDERS': _saveModule(element); break; case 'FRE-HUB-COMPLETE-SCHEDULE': _saveModule(element); break; case 'FRE-HUB-AGE-PROV-DELIVERY': _saveModule(element); break; case 'FRE-HUB-AGE-PROV-PRESTADOR': _saveModule(element); break; case 'FRE-WHATSAPP': _saveModule(element); break; } } } catch (e, s) { log('Erro ao obter licença', error: e, stackTrace: s); } } static Future _saveModule(final dynamic body) async { if (body is Map) log('Salvando módulo: ${body.toString()}'); // if (body is Map) await StorageHelper().set(body['key'], '', Storage.SQLiteStorage); if (body is Map) await StorageHelper().set(body['key'], jsonEncode(body), Storage.SQLiteStorage); } static Future updateLicense(final dynamic body) async {} static Future catchLicense() async { await PhpGroup.getLicense(); } }