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/controllers/providers/api/all_requests_provider.dart

628 lines
20 KiB
Dart

import 'dart:convert';
2 years ago
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/all_requests_and_count_model.dart';
import 'package:test_sa/models/enums/user_types.dart';
2 years ago
import '../../../models/search_all_requests_model.dart';
2 years ago
class AllRequestsProvider extends ChangeNotifier {
bool isAllLoading = false;
bool isOpenLoading = false;
bool isInProgressLoading = false;
2 years ago
bool isCompleteLoading = false;
bool isOverdueLoading = false;
bool isHighPriorityLoading = false;
bool isCalendarLoading = false;
1 year ago
bool _isFilterRequestLoading = false;
bool _isRequestCategoryLoading = false;
1 year ago
int _status = 0;
1 year ago
int get status => _status;
set status(int value) {
_status = value;
notifyListeners();
}
1 year ago
int _currentListIndex = 0;
int get currentListIndex => _currentListIndex;
set currentListIndex(int value) {
_currentListIndex = value;
notifyListeners();
}
int? stateCode;
AllRequestsAndCount? _allRequestsAndCount;
AllRequestsAndCount? _openRequests;
AllRequestsAndCount? _inProgressRequests;
AllRequestsAndCount? _completedRequests;
AllRequestsAndCount? _filterRequest;
AllRequestsAndCount? _requestDetailList;
AllRequestsAndCount? get allRequestsAndCount => _allRequestsAndCount;
AllRequestsAndCount? get highPriorityRequests => _highPriorityRequests;
AllRequestsAndCount? get overdueRequests => _overdueRequests;
// AllRequestsAndCount? get openRequests => _openRequests;
// AllRequestsAndCount? get completedRequests => _completedRequests;
AllRequestsAndCount? get requestDetailList => _requestDetailList;
set requestDetailList(AllRequestsAndCount? value) {
_requestDetailList = value;
notifyListeners();
}
AllRequestsAndCount? _selectedRequestCategory;
bool get isRequestCategoryLoading => _isRequestCategoryLoading;
set isRequestCategoryLoading(bool value) {
_isRequestCategoryLoading = value;
notifyListeners();
} // overdue,high priority, new , completed
AllRequestsAndCount? _overdueRequests;
AllRequestsAndCount? _highPriorityRequests;
1 year ago
bool isLoadingList = false;
updateIsLoadingList(value) {
isLoadingList = value;
notifyListeners();
}
AllRequestsAndCount? calendarRequests;
final pageItemNumber = 10;
int pageNum = 1;
bool nextPage = true;
void reset() {
_allRequestsAndCount?.requestsDetails?.clear();
_allRequestsAndCount = null;
pageNum = 1;
nextPage = true;
stateCode = null;
}
void resetRequestsApiData() {
_highPriorityRequests = null;
_overdueRequests = null;
openRequests = null;
inProgressRequests = null;
completedRequests = null;
pageNum = 1;
nextPage = true;
stateCode = null;
}
Future<void> getRequests() async {
resetRequestsApiData();
getOpenRequests(pagination: true);
getInProgressRequests(pagination: true);
getCompletedRequests(pagination: true);
getHighPriorityRequests(pagination: true);
getOverdueRequests(pagination: true);
}
SearchAllRequestsModel? searchedModel;
Future<int> getAllRequests(BuildContext context, {int? typeTransaction, SearchAllRequestsModel? search}) async {
1 year ago
print('loading value is $isAllLoading');
if (isAllLoading == true) return -2;
isAllLoading = true;
1 year ago
if (_allRequestsAndCount == null) notifyListeners();
Response response;
try {
if (search != null) {
searchedModel = search;
1 year ago
} else {
searchedModel = null;
}
final type = typeTransaction == null
? search?.typeTransaction == null || (search?.typeTransaction?.isEmpty ?? false)
? [1, 2, 3, 4]
: search!.typeTransaction
: [typeTransaction];
List<int> status = (search?.statuses == null || (search?.statuses?.isEmpty ?? false)) ? (((search?.isArchived ?? false) ? [3] : [1, 2, 4])) : search!.statuses!;
Map<String, dynamic> body = {
"typeTransaction": type,
"statusTransaction": status,
2 years ago
"priority": [],
2 years ago
"displayData": [],
"pageNumber": pageNum++,
"pageSize": pageItemNumber,
if (search?.requestNumber?.value?.isNotEmpty ?? false) "requestNumber": search!.requestNumber!.value,
if (search?.assetName?.value?.isNotEmpty ?? false) "assetName": search!.assetName!.value,
if (search?.assetNo?.value?.isNotEmpty ?? false) "assetNumber": search!.assetNo!.value,
if (search?.sn?.value?.isNotEmpty ?? false) "assetSerialNo": search!.sn!.value,
if (search?.model?.value?.isNotEmpty ?? false) "model": search!.model!.value,
if (search?.manufacture?.value?.isNotEmpty ?? false) "manufacturer": search!.manufacture!.value,
if (search?.startDate != null) "from": search!.startDate!.toIso8601String(),
if (search?.endDate != null) "to": search!.endDate!.toIso8601String(),
};
response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
if (_allRequestsAndCount == null) {
_allRequestsAndCount = AllRequestsAndCount.fromJson(json.decode(response.body)["data"][0]);
} else {
_allRequestsAndCount!.requestsDetails!.addAll(AllRequestsAndCount.fromJson(json.decode(response.body)["data"][0]).requestsDetails!);
}
if (_allRequestsAndCount!.requestsDetails!.length >= pageItemNumber) {
nextPage = true;
} else {
nextPage = false;
}
notifyListeners();
2 years ago
} else {
_allRequestsAndCount = null;
}
isAllLoading = false;
notifyListeners();
return response.statusCode;
} catch (error) {
isAllLoading = false;
stateCode = -1;
notifyListeners();
return -1;
}
}
Future<int> getCalendarRequests({required DateTime from, DateTime? to}) async {
if (isCalendarLoading == true) return -2;
isCalendarLoading = true;
notifyListeners();
Response response;
try {
Map<String, dynamic> body = {
"typeTransaction": [1, 2, 3, 4],
"statusTransaction": [1, 2, 3, 4],
"priority": [0, 1],
"displayData": [],
"from": from.toIso8601String(),
"to": to?.toIso8601String() ?? from.toIso8601String(),
};
response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
calendarRequests = AllRequestsAndCount.fromJson(json.decode(response.body)["data"][0]);
notifyListeners();
}
isCalendarLoading = false;
notifyListeners();
return response.statusCode;
} catch (error) {
isCalendarLoading = false;
stateCode = -1;
notifyListeners();
return -1;
}
}
Future<int> getHighPriorityRequests({bool pagination = false}) async {
if (isHighPriorityLoading == true) return -2;
if (_highPriorityRequests == null || pagination) {
isHighPriorityLoading = true;
// notifyListeners();
}
Response response;
try {
Map<String, dynamic> body = {
2 years ago
"typeTransaction": [1],
"statusTransaction": [1, 2, 4],
"priority": [1],
"displayData": []
};
if (pagination) {
body["pageNumber"] = 0;
body["pageSize"] = 0;
} else {
body["pageNumber"] = pageNum++;
body["pageSize"] = pageItemNumber;
}
response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
if (_highPriorityRequests == null) {
_highPriorityRequests = AllRequestsAndCount.fromJson(json.decode(response.body)["data"][0]);
} else {
_highPriorityRequests!.requestsDetails!.addAll(AllRequestsAndCount.fromJson(json.decode(response.body)["data"][0]).requestsDetails!);
}
if (_highPriorityRequests!.requestsDetails!.length >= pageItemNumber) {
nextPage = true;
} else {
nextPage = false;
}
notifyListeners();
} else {
_allRequestsAndCount = null;
}
isHighPriorityLoading = false;
notifyListeners();
return response.statusCode;
} catch (error) {
isHighPriorityLoading = false;
stateCode = -1;
notifyListeners();
return -1;
}
}
Future<int> getOverdueRequests({bool pagination = false}) async {
if (isOverdueLoading == true) return -2;
if (_overdueRequests == null || pagination) {
isOverdueLoading = true;
notifyListeners();
}
Response response;
try {
Map<String, dynamic> body = {
"typeTransaction": [1, 2, 3, 4],
2 years ago
"statusTransaction": [1, 2, 4],
"priority": [],
"displayData": [1]
};
if (pagination) {
body["pageNumber"] = 0;
body["pageSize"] = 0;
} else {
body["pageNumber"] = pageNum++;
body["pageSize"] = pageItemNumber;
}
response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
if (_overdueRequests == null) {
_overdueRequests = AllRequestsAndCount.fromJson(json.decode(response.body)["data"][0]);
} else {
_overdueRequests!.requestsDetails!.addAll(AllRequestsAndCount.fromJson(json.decode(response.body)["data"][0]).requestsDetails!);
}
if (_overdueRequests!.requestsDetails!.length >= pageItemNumber) {
nextPage = true;
} else {
nextPage = false;
}
notifyListeners();
} else {
_allRequestsAndCount = null;
}
isOverdueLoading = false;
notifyListeners();
return response.statusCode;
} catch (error) {
isOverdueLoading = false;
stateCode = -1;
notifyListeners();
return -1;
}
}
Future<int> getOpenRequests({bool pagination = false, bool reset = false}) async {
if (isOpenLoading == true) return -2;
if (reset) {
openRequests = null;
pageNum = 1;
}
if (openRequests == null || pagination) {
isOpenLoading = true;
notifyListeners();
}
Response response;
try {
bool isEngineer = ApiManager.instance.user!.type == UsersTypes.engineer;
Map<String, dynamic> body = {
"typeTransaction": [1, 2, 3, 4],
"statusTransaction": [isEngineer ? 2 : 1],
"priority": [],
"displayData": []
};
if (pagination) {
body["pageNumber"] = 0;
body["pageSize"] = 0;
} else {
body["pageNumber"] = pageNum++;
body["pageSize"] = pageItemNumber;
}
response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
if (openRequests == null) {
openRequests = AllRequestsAndCount.fromJson(json.decode(response.body)["data"][0]);
} else {
openRequests!.requestsDetails!.addAll(AllRequestsAndCount.fromJson(json.decode(response.body)["data"][0]).requestsDetails!);
}
if (openRequests!.requestsDetails!.length >= pageItemNumber) {
nextPage = true;
} else {
nextPage = false;
}
notifyListeners();
} else {
_allRequestsAndCount = null;
}
isOpenLoading = false;
notifyListeners();
return response.statusCode;
} catch (error) {
isOpenLoading = false;
stateCode = -1;
notifyListeners();
return -1;
}
}
Future<int> getInProgressRequests({bool pagination = false, bool reset = false}) async {
if (isInProgressLoading == true) return -2;
if (reset) {
inProgressRequests = null;
pageNum = 1;
}
if (inProgressRequests == null || pagination) {
isInProgressLoading = true;
notifyListeners();
}
Response response;
try {
Map<String, dynamic> body = {
"typeTransaction": [1, 2, 3, 4],
"statusTransaction": [2],
"priority": [],
"displayData": []
};
if (pagination) {
body["pageNumber"] = 0;
body["pageSize"] = 0;
} else {
body["pageNumber"] = pageNum++;
body["pageSize"] = pageItemNumber;
}
response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
if (inProgressRequests == null) {
inProgressRequests = AllRequestsAndCount.fromJson(json.decode(response.body)["data"][0]);
1 year ago
notifyListeners();
} else {
inProgressRequests!.requestsDetails!.addAll(AllRequestsAndCount.fromJson(json.decode(response.body)["data"][0]).requestsDetails!);
1 year ago
notifyListeners();
}
if (inProgressRequests!.requestsDetails!.length >= pageItemNumber) {
nextPage = true;
} else {
nextPage = false;
}
notifyListeners();
} else {
_allRequestsAndCount = null;
}
isInProgressLoading = false;
notifyListeners();
return response.statusCode;
} catch (error) {
isInProgressLoading = false;
stateCode = -1;
notifyListeners();
return -1;
}
}
Future<int> getFilterRequests({bool showLoader = true, required int status}) async {
1 year ago
// if (filterRequest == null || pagination) {
// isFilterRequestLoading = true;
// notifyListeners();
// }
isFilterRequestLoading = showLoader;
1 year ago
Response response;
try {
Map<String, dynamic> body = {
"typeTransaction": [1, 2, 3, 4],
"statusTransaction": [status],
"priority": [],
"displayData": [],
"pageNumber": pageNum,
"pageSize": pageItemNumber,
1 year ago
};
response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
if (filterRequest == null) {
filterRequest = AllRequestsAndCount.fromJson(json.decode(response.body)["data"][0]);
isFilterRequestLoading = false;
notifyListeners();
} else {
filterRequest!.requestsDetails!.addAll(AllRequestsAndCount.fromJson(json.decode(response.body)["data"][0]).requestsDetails!);
1 year ago
isFilterRequestLoading = false;
notifyListeners();
}
if (filterRequest!.requestsDetails!.length >= pageItemNumber) {
1 year ago
nextPage = true;
} else {
nextPage = false;
}
notifyListeners();
} else {
filterRequest = null;
}
isFilterRequestLoading = false;
notifyListeners();
return response.statusCode;
} catch (error) {
isFilterRequestLoading = false;
stateCode = -1;
notifyListeners();
return -1;
}
}
Future<int> getSelectedRequestCategory({required RequestQueryModel requestQueryModel}) async {
isRequestCategoryLoading = requestQueryModel.showLoader;
Response response;
try {
response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: requestQueryModel.toJson());
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
if (selectedRequestCategory == null) {
selectedRequestCategory = AllRequestsAndCount.fromJson(json.decode(response.body)["data"][0]);
isRequestCategoryLoading = false;
notifyListeners();
} else {
selectedRequestCategory!.requestsDetails!.addAll(AllRequestsAndCount.fromJson(json.decode(response.body)["data"][0]).requestsDetails!);
isRequestCategoryLoading = false;
notifyListeners();
}
} else {
filterRequest = null;
}
isRequestCategoryLoading = false;
notifyListeners();
return response.statusCode;
} catch (error) {
isRequestCategoryLoading = false;
stateCode = -1;
notifyListeners();
return -1;
}
}
Future<int> getCompletedRequests({bool pagination = false, bool reset = false}) async {
2 years ago
if (isCompleteLoading == true) return -2;
if (reset) {
completedRequests = null;
pageNum = 1;
}
if (completedRequests == null || pagination) {
isCompleteLoading = true;
notifyListeners();
}
Response response;
try {
Map<String, dynamic> body = {
"typeTransaction": [1, 2, 3, 4],
2 years ago
"statusTransaction": [4],
"priority": [],
"displayData": []
};
if (pagination) {
body["pageNumber"] = 0;
body["pageSize"] = 0;
} else {
body["pageNumber"] = pageNum++;
body["pageSize"] = pageItemNumber;
}
response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
if (completedRequests == null) {
completedRequests = AllRequestsAndCount.fromJson(json.decode(response.body)["data"][0]);
} else {
completedRequests!.requestsDetails!.addAll(AllRequestsAndCount.fromJson(json.decode(response.body)["data"][0]).requestsDetails!);
}
if (completedRequests!.requestsDetails!.length >= pageItemNumber) {
nextPage = true;
} else {
nextPage = false;
}
notifyListeners();
} else {
_allRequestsAndCount = null;
}
2 years ago
isCompleteLoading = false;
notifyListeners();
return response.statusCode;
} catch (error) {
2 years ago
isCompleteLoading = false;
stateCode = -1;
notifyListeners();
return -1;
}
}
2 years ago
AllRequestsAndCount? get inProgressRequests => _inProgressRequests;
1 year ago
set inProgressRequests(AllRequestsAndCount? value) {
1 year ago
_inProgressRequests = value;
notifyListeners();
}
AllRequestsAndCount? get completedRequests => _completedRequests;
1 year ago
set completedRequests(AllRequestsAndCount? value) {
1 year ago
_completedRequests = value;
notifyListeners();
}
AllRequestsAndCount? get openRequests => _openRequests;
1 year ago
set openRequests(AllRequestsAndCount? value) {
1 year ago
_openRequests = value;
notifyListeners();
}
AllRequestsAndCount? get filterRequest => _filterRequest;
1 year ago
set filterRequest(AllRequestsAndCount? value) {
1 year ago
_filterRequest = value;
notifyListeners();
}
1 year ago
bool get isFilterRequestLoading => _isFilterRequestLoading;
set isFilterRequestLoading(bool value) {
_isFilterRequestLoading = value;
notifyListeners();
}
AllRequestsAndCount? get selectedRequestCategory => _selectedRequestCategory;
set selectedRequestCategory(AllRequestsAndCount? value) {
_selectedRequestCategory = value;
notifyListeners();
}
// Future<int> getCloseRequests() async {
// if (isCloseLoading == true) return -2;
// isCloseLoading = true;
// if (closeRequests == null) notifyListeners();
// Response response;
// try {
// Map<String, dynamic> body = {
// "typeTransaction": [1, 2, 3, 4],
// "statusTransaction": [4],
// "priority": [],
// "displayData": []
// };
// response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: body);
//
// stateCode = response.statusCode;
// if (response.statusCode >= 200 && response.statusCode < 300) {
// closeRequests = AllRequestsAndCount.fromJson(json.decode(response.body)["data"]);
// notifyListeners();
// }
// isCloseLoading = false;
// notifyListeners();
// return response.statusCode;
// } catch (error) {
// isCloseLoading = false;
// stateCode = -1;
// notifyListeners();
// return -1;
// }
// }
2 years ago
}