import 'package:flutter/foundation.dart'; import '../postEnrollment/service/api_service.dart'; import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:nhance_app_pwa/logger.dart'; class DataManager extends ChangeNotifier { static final DataManager _instance = DataManager._internal(); factory DataManager() => _instance; DataManager._internal(); late ApiService _apiService; // === Advertisement === List _advertisementImages = []; bool _adsLoaded = false; // === Policies === List _policyList = []; bool _policyLoaded = false; String? _empName; int _prePolicyCount = 0; // === Self Employee Profile === Map? _selfProfile; Map? _accountManagerDetails; bool _selfProfileLoaded = false; // Getters List get advertisementImages => _advertisementImages; bool get adsLoaded => _adsLoaded; List get policyList => _policyList; bool get policyLoaded => _policyLoaded; String? get empName => _empName; int get prePolicyCount => _prePolicyCount; Map? get selfProfile => _selfProfile; Map? get accountManagerDetails => _accountManagerDetails; bool get selfProfileLoaded => _selfProfileLoaded; /// Inject ApiService (with context) once void init(ApiService apiService) { _apiService = apiService; } /// Load Ads once Future loadAdvertisementImages() async { if (_adsLoaded) return; final response = await _apiService.getAdvertisementImageToApi(''); if (response['status'] == 'success') { _advertisementImages = await List.from(response['data']); _adsLoaded = true; notifyListeners(); logDebug("✅ Advertisement images loaded: $_advertisementImages"); } } /// Load Policies (first time or refresh) Future loadPolicies({ required String? clientId, required String? empCode, required String status, required String? clientBranchId, required String? mobileNo, bool forceRefresh = false, }) async { if (clientId == null || empCode == null) return; // guard clause final response = await _apiService.getActiveAndInactivePolicyDetails( clientId, empCode, status, clientBranchId!, mobileNo ?? '','' ); if (response['status'] == 'success') { _policyList = response['data']; _empName = response['emp_name']; _prePolicyCount = response['pre_policy_count'] ?? 0; _policyLoaded = true; notifyListeners(); logDebug("✅ Policy list loaded: $_policyList"); } else { logDebug("❌ Failed to load policies: ${response['status']}"); } } /// Load Self Employee Profile (first time or refresh) Future loadSelfEmployeeProfile({ required String clientId, required String empCode, required String clientBranchId, bool forceRefresh = false, }) async { // if (_selfProfileLoaded && !forceRefresh) return; final response = await _apiService.getSelfEmployeeProfileDetails( clientId, empCode, clientBranchId, ); if (response['status'] == 'success' && response.containsKey('data')) { _selfProfile = Map.from(response['data']); _accountManagerDetails = Map.from(response['AccountManagerDetails']); _selfProfileLoaded = true; // Store selfEmpStatus in SharedPreferences final prefs = await SharedPreferences.getInstance(); if (_selfProfile?['emp_status'] != null) { prefs.setString('selfEmpStatus', _selfProfile!['emp_status']); } notifyListeners(); logDebug("✅ Self Employee Profile loaded: $_selfProfile"); } else { logDebug("❌ Failed to load self profile: ${response['status']}"); } } /// Clear all cached data on logout Future clearData() async { _advertisementImages = []; _adsLoaded = false; _policyList = []; _policyLoaded = false; _empName = null; _prePolicyCount = 0; _selfProfile = null; _accountManagerDetails = null; _selfProfileLoaded = false; notifyListeners(); } } // import 'package:flutter/foundation.dart'; // import '../postEnrollment/service/api_service.dart'; // import 'package:flutter/material.dart'; // // class DataManager extends ChangeNotifier { // static final DataManager _instance = DataManager._internal(); // factory DataManager() => _instance; // DataManager._internal(); // // late ApiService _apiService; // // List _advertisementImages = []; // bool _isLoaded = false; // // List get advertisementImages => _advertisementImages; // bool get isLoaded => _isLoaded; // // /// Inject ApiService (with context) once // void init(ApiService apiService) { // _apiService = apiService; // } // // /// Load only once // Future loadAdvertisementImages() async { // if (_isLoaded) return; // // final response = await _apiService.getAdvertisementImageToApi(); // if (response['status'] == 'success') { // _advertisementImages = List.from(response['data']); // logDebug("✅ Advertisement images loaded: ${_advertisementImages}"); // _isLoaded = true; // notifyListeners(); // } else { // logDebug("❌ Failed to load advertisement images: ${response['message']}"); // } // } // // /// Clear on logout // Future clearData() async { // _advertisementImages = []; // _isLoaded = false; // notifyListeners(); // } // }