import 'package:flutter/foundation.dart'; import 'package:generp/Models/commonModels/commonAccountLedgerFilterResponse.dart'; import 'package:generp/Models/commonModels/commonAccountLedgerResponse.dart'; import 'package:generp/Notifiers/HomeScreenNotifier.dart'; import 'package:generp/services/api_calling.dart'; import 'package:provider/provider.dart'; class Accountledgerprovider extends ChangeNotifier{ List _accounts = []; List _ledgerList = []; AccountDetails _accountDetails = AccountDetails(); Accounts? _selectedAccount; String _selectedAcID = ""; String _selectedAcVal = ""; bool _isLoading = true; bool get isLoading => _isLoading; List get accounts => _accounts; List get ledgerList => _ledgerList; AccountDetails get acDetails => _accountDetails; Accounts? get selectedAccount => _selectedAccount; String get selectedAcId => _selectedAcID; String get selectedAcVal => _selectedAcVal; set accounts(List value){ _accounts = value; notifyListeners(); } set selectedAccount(Accounts? value){ _selectedAccount = value; _selectedAcID = value!.id!; _selectedAcVal = value!.name!; notifyListeners(); } set selectedAcId(String value){ _selectedAcID = value; notifyListeners(); } set selectedAcVal(String value){ _selectedAcVal = value; notifyListeners(); } // Reset all values void resetAll() { _selectedAccount = null; _selectedAcID = ""; _accounts = []; _ledgerList = []; notifyListeners(); // Notify UI to update } Future dropDownAPI(context) async { try{ var prov = Provider.of(context,listen: false); final data = await ApiCalling.commonAccountLedgerDropDownAPI(prov.empId,prov.session); if(data!=null){ if(data.error=="0"){ _accounts = data.accounts!; notifyListeners(); } } }catch (e,s){ } } Future ledgerlistAPI(context) async { try{ var prov = Provider.of(context,listen: false); _ledgerList.clear(); _isLoading = true; notifyListeners(); final data = await ApiCalling.commonAccountLedgerListAPI(prov.empId,prov.session,selectedAcId); if(data!=null){ if(data.error=="0"){ _isLoading = false; _ledgerList= data.ledgerList!; _accountDetails= data.accountDetails!; if (_selectedAccount != null && !_accounts.contains(_selectedAccount)) { _selectedAccount = null; _selectedAcID = ""; } notifyListeners(); } else if(data.error=="1"){ _isLoading = false; } notifyListeners(); } }catch (e,s){ } } Map> groupByDate(List list) { Map> grouped = {}; for (var item in list) { String date = item.createdDatetime!; if (!grouped.containsKey(date)) { grouped[date] = []; } grouped[date]!.add(item); } return grouped; } }