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

297 lines
9.8 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;
int stateCode;
AllRequestsAndCount allRequestsAndCount;
AllRequestsAndCount openRequests;
AllRequestsAndCount inProgressRequests;
2 years ago
AllRequestsAndCount completedRequests;
AllRequestsAndCount overdueRequests;
AllRequestsAndCount highPriorityRequests;
AllRequestsAndCount calendarRequests;
void getRequests() {
getHighPriorityRequests();
getOverdueRequests();
getOpenRequests();
getInProgressRequests();
2 years ago
getCompletedRequests();
}
Future<int> getAllRequests(BuildContext context, {int typeTransaction, SearchAllRequestsModel search}) async {
if (isAllLoading == true) return -2;
isAllLoading = true;
if (allRequestsAndCount == null) notifyListeners();
Response response;
try {
final type = typeTransaction == null
? search?.typeTransaction == null || search.typeTransaction.isEmpty
? [1, 2, 3, 4]
: search.typeTransaction
: [typeTransaction];
List<int> status = (search?.statuses == null || search.statuses.isEmpty) ? [1, 2, 3, 4] : search.statuses;
Map<String, dynamic> body = {
"typeTransaction": type,
"statusTransaction": status,
"priority": [0, 1],
2 years ago
"displayData": [],
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) {
allRequestsAndCount = AllRequestsAndCount.fromJson(json.decode(response.body)["data"]);
notifyListeners();
2 years ago
} else {
allRequestsAndCount =null;
}
isAllLoading = false;
notifyListeners();
return response.statusCode;
} catch (error) {
isAllLoading = false;
stateCode = -1;
notifyListeners();
return -1;
}
}
Future<int> getCalenderRequests({@required DateTime from, DateTime to}) async {
if (isCalendarLoading == true) return -2;
isCalendarLoading = true;
if (isCalendarLoading == null) 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"]);
notifyListeners();
}
isCalendarLoading = false;
notifyListeners();
return response.statusCode;
} catch (error) {
isCalendarLoading = false;
stateCode = -1;
notifyListeners();
return -1;
}
}
Future<int> getHighPriorityRequests() async {
if (isHighPriorityLoading == true) return -2;
isHighPriorityLoading = true;
if (highPriorityRequests == null) notifyListeners();
Response response;
try {
Map<String, dynamic> body = {
2 years ago
"typeTransaction": [1],
"statusTransaction": [1, 2, 4],
"priority": [1],
"displayData": []
};
response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
highPriorityRequests = AllRequestsAndCount.fromJson(json.decode(response.body)["data"]);
notifyListeners();
}
isHighPriorityLoading = false;
notifyListeners();
return response.statusCode;
} catch (error) {
isHighPriorityLoading = false;
stateCode = -1;
notifyListeners();
return -1;
}
}
Future<int> getOverdueRequests() async {
if (isOverdueLoading == true) return -2;
isOverdueLoading = true;
if (overdueRequests == null) notifyListeners();
Response response;
try {
Map<String, dynamic> body = {
"typeTransaction": [1, 2, 3, 4],
2 years ago
"statusTransaction": [1, 2, 4],
"priority": [],
"displayData": [1]
};
response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
overdueRequests = AllRequestsAndCount.fromJson(json.decode(response.body)["data"]);
notifyListeners();
}
isOverdueLoading = false;
notifyListeners();
return response.statusCode;
} catch (error) {
isOverdueLoading = false;
stateCode = -1;
notifyListeners();
return -1;
}
}
Future<int> getOpenRequests() async {
if (isOpenLoading == true) return -2;
isOpenLoading = true;
if (openRequests == null) 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": []
};
response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
openRequests = AllRequestsAndCount.fromJson(json.decode(response.body)["data"]);
notifyListeners();
}
isOpenLoading = false;
notifyListeners();
return response.statusCode;
} catch (error) {
isOpenLoading = false;
stateCode = -1;
notifyListeners();
return -1;
}
}
Future<int> getInProgressRequests() async {
if (isInProgressLoading == true) return -2;
isInProgressLoading = true;
if (inProgressRequests == null) notifyListeners();
Response response;
try {
Map<String, dynamic> body = {
"typeTransaction": [1, 2, 3, 4],
"statusTransaction": [2],
"priority": [],
"displayData": []
};
response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
inProgressRequests = AllRequestsAndCount.fromJson(json.decode(response.body)["data"]);
notifyListeners();
}
isInProgressLoading = false;
notifyListeners();
return response.statusCode;
} catch (error) {
isInProgressLoading = false;
stateCode = -1;
notifyListeners();
return -1;
}
}
2 years ago
Future<int> getCompletedRequests() async {
if (isCompleteLoading == true) return -2;
isCompleteLoading = true;
if (completedRequests == null) notifyListeners();
Response response;
try {
Map<String, dynamic> body = {
"typeTransaction": [1, 2, 3, 4],
2 years ago
"statusTransaction": [4],
"priority": [],
"displayData": []
};
response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
2 years ago
completedRequests = AllRequestsAndCount.fromJson(json.decode(response.body)["data"]);
notifyListeners();
}
2 years ago
isCompleteLoading = false;
notifyListeners();
return response.statusCode;
} catch (error) {
2 years ago
isCompleteLoading = false;
stateCode = -1;
notifyListeners();
return -1;
}
}
2 years ago
// 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
}