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.
cloudsolutions-atoms/lib/dashboard_latest/dashboard_provider.dart

140 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/dashboard_count.dart';
import 'package:test_sa/models/new_models/dashboard_detail.dart' as DD;
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;
DD.DashboardDetail? _requestDetailList;
DD.DashboardDetail? get requestDetailList => _requestDetailList;
set requestDetailList(DD.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, required UsersTypes usersType, required 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 = DD.DashboardDetail.fromJson(json.decode(response.body));
isDetailLoading = false;
notifyListeners();
} else {
requestDetailList!.data!.addAll(DD.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();
}
}