You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			143 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			143 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Dart
		
	
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<int> 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<int> 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<String, dynamic> 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();
 | 
						|
  }
 | 
						|
 | 
						|
}
 |