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.
81 lines
2.6 KiB
Dart
81 lines
2.6 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:test_sa/controllers/api_routes/api_manager.dart';
|
|
import 'package:test_sa/controllers/api_routes/urls.dart';
|
|
|
|
import 'models/asset_tracking_model.dart';
|
|
import 'models/floor_map_model.dart';
|
|
|
|
class AssetTrackingProvider extends ChangeNotifier {
|
|
bool isLoading = false;
|
|
bool isNextPageLoading = false;
|
|
final pageItemNumber = 12;
|
|
int pageNo = 1;
|
|
|
|
List<AssetTrackingModel> assetsList = [];
|
|
|
|
reset() {
|
|
isLoading = false;
|
|
notifyListeners();
|
|
}
|
|
|
|
Future<int> getAssetsFromPenguin({bool loadMore = false}) async {
|
|
if (isLoading || isNextPageLoading) return -2;
|
|
if (loadMore) {
|
|
isNextPageLoading = true;
|
|
pageNo += 1;
|
|
} else {
|
|
isLoading = true;
|
|
pageNo = 1; // reset pagination
|
|
}
|
|
notifyListeners();
|
|
try {
|
|
final payload = {"pageSize": pageItemNumber, "pageNumber": pageNo};
|
|
final response = await ApiManager.instance.post(URLs.getAssetsFromPenguin, body: payload);
|
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
|
final Map<String, dynamic> jsonData = json.decode(response.body);
|
|
List list = jsonData["data"];
|
|
assetsList.addAll(list.map((item) => AssetTrackingModel.fromJson(item)).toList());
|
|
if (jsonData["totalRows"] <= assetsList.length) {
|
|
// nextPage = true;
|
|
}
|
|
print("assetsList:${assetsList.length}");
|
|
// if (loadMore) {
|
|
// assetInventoryResponse?.assetList?.addAll(newResponse.assetList ?? []);
|
|
// assetInventoryResponse?.totalRows = newResponse.totalRows;
|
|
// } else {
|
|
// assetInventoryResponse = newResponse;
|
|
// }
|
|
// nextPage = (assetInventoryResponse?.assetList?.length ?? 0) < (assetInventoryResponse?.totalRows ?? 0);
|
|
} else {
|
|
// nextPage = false;
|
|
}
|
|
isLoading = false;
|
|
isNextPageLoading = false;
|
|
notifyListeners();
|
|
return response.statusCode;
|
|
} catch (error) {
|
|
isLoading = false;
|
|
isNextPageLoading = false;
|
|
// stateCode = -1;
|
|
// nextPage = false;
|
|
notifyListeners();
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
Future<FloorMapModel?> getFloorMap(int floorId) async {
|
|
FloorMapModel? floorMapModel;
|
|
// try {
|
|
final response = await ApiManager.instance.get(URLs.getFloorMap + "$floorId/maps");
|
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
|
floorMapModel = FloorMapModel.fromJson(json.decode(response.body)["data"]);
|
|
}
|
|
return floorMapModel;
|
|
// } catch (error) {
|
|
// return floorMapModel;
|
|
// }
|
|
}
|
|
}
|