import 'dart:convert'; import 'package:flutter/widgets.dart'; import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/new_models/dashboardCount.dart'; import 'package:test_sa/models/new_models/dashboard_detail.dart'; class DashBoardProvider extends ChangeNotifier { bool isAllCountLoading = false; bool isLoading = false; bool _isDetailLoading = false; int _status =0; int get status => _status; set status(int value) { _status = value; notifyListeners(); } int _currentListIndex = 0; int get currentListIndex => _currentListIndex; set currentListIndex(int value) { _currentListIndex = value; notifyListeners(); } int stateCode; DashboardCount dashboardCount; DashboardDetail _requestDetailList; DashboardDetail get requestDetailList => _requestDetailList; set requestDetailList(DashboardDetail value) { _requestDetailList = value; notifyListeners(); } final pageItemNumber = 10; int pageNum = 1; bool nextPage = true; void reset() { pageNum = 1; nextPage = true; stateCode = null; } Future getDashBoardCount({@required UsersTypes usersType}) async { isAllCountLoading = true; String url=''; if(usersType==UsersTypes.engineer){ url = URLs.engineerDashboardCountUrl; } if(usersType==UsersTypes.nurse){ url=URLs.nurseDashboardCountUrl; } Response response; try { response = await ApiManager.instance.postWithOutBody(url); stateCode = response.statusCode; if (response.statusCode >= 200 && response.statusCode < 300) { dashboardCount = DashboardCount.fromJson(json.decode(response.body)); } notifyListeners(); isAllCountLoading = false; notifyListeners(); return response.statusCode; } catch (error) { isAllCountLoading = false; stateCode = -1; notifyListeners(); return -1; } } Future getRequestDetail({bool showLoader = true,UsersTypes usersType, int status}) async { isDetailLoading =showLoader; Response response; String url=''; if(usersType==UsersTypes.engineer){ url = URLs.engineerDashboardDetailsUrl; } if(usersType==UsersTypes.nurse){ url=URLs.nurseDashboardDetailsUrl; } try { Map body = { "statusValue": status, "pageNumber": pageNum, "pageSize" : pageItemNumber, }; response = await ApiManager.instance.post(url, body: body); stateCode = response.statusCode; if (response.statusCode >= 200 && response.statusCode < 300) { if (requestDetailList == null) { requestDetailList = DashboardDetail.fromJson(json.decode(response.body)); isDetailLoading = false; notifyListeners(); } else { requestDetailList.data.addAll(DashboardDetail.fromJson(json.decode(response.body)["data"][0]).data); isDetailLoading = false; notifyListeners(); } if (requestDetailList.data.length >= pageItemNumber) { nextPage = true; } else { nextPage = false; } notifyListeners(); } else { requestDetailList = null; } isDetailLoading = false; notifyListeners(); return response.statusCode; } catch (error) { isDetailLoading = false; stateCode = -1; notifyListeners(); return -1; } } bool get isDetailLoading => _isDetailLoading; set isDetailLoading(bool value) { _isDetailLoading = value; notifyListeners(); } }