Files
cssd/lib/providers/my_packages.dart
T

303 lines
8.2 KiB
Dart
Executable File

import 'dart:convert';
import 'package:cssd/models/my_package_model.dart';
import 'package:flutter/foundation.dart';
import '../config/urls.dart';
import '../config/user.dart';
import 'package:http/http.dart' as http;
class MyPackageProvider extends ChangeNotifier {
String searchBoxValue = '';
bool filterOn = false;
List<MyPackageResultObject>? myPackages;
// List<MyPackageResultObject>? hospitalPackages;
List<MyPackageResultObject>? originalMyPackages;
// List<MyPackageResultObject>? originalHospitalPackages;
List<MyPackageResultObject>? originalMyPackagesRequests;
// List<MyPackageResultObject>? originalHospitalPackagesRequests;
List<PackageHistoryObject>? packageHistory;
MyPackageFilterObject? filters = MyPackageFilterObject(
id: '',
name: '',
// udi: '',
);
int pageNumber = 1;
void resetPageNumber() => pageNumber = 1;
bool isloading = false;
void resetLoading() {
isloading = false;
notifyListeners();
}
void setLoading() {
isloading = true;
notifyListeners();
}
Future<void> searchMyPackages(String value) async {
myPackages = [];
searchBoxValue = value;
var response = await http.get(
Uri.parse(Url.searchMyPackages(value)),
headers: {'Authorization': User.token, "Accept": "application/json"},
);
var packagesData = json.decode(response.body);
for (var package in packagesData['data']) {
myPackages!.add(
MyPackageResultObject(
name: package['name'],
id: package['id'].toString(),
createdAt: package['created_at'].toString(),
userName: package['user'] != null ? package['user']['name'] : '',
),
);
}
resetLoading();
notifyListeners();
}
// void searchHospitalPackages(String value) {
// hospitalPackages = [];
// searchBoxValue = value;
// originalHospitalPackages!.forEach((result) {
// if (result.id.toString().contains(searchBoxValue)) {
// hospitalPackages!.add(result);
// }
// });
// notifyListeners();
// }
void setFilters(
id,
name,
// udi,
) {
pageNumber = 1;
filters = MyPackageFilterObject(
id: id,
name: name,
// udi: udi,
);
if (filters!.id == '' && filters!.name == '') {
filterOn = false;
} else {
filterOn = true;
}
notifyListeners();
}
Future<void> getMyPackages() async {
String url = Url.getMyPackages(pageNumber);
if (filterOn) {
if (filters!.id != '') {
url += '&package_id=${filters!.id}';
}
if (filters!.name != '') {
url += '&name=${filters!.name}';
}
// if (filters!.udi != '') {
// url += '&package_id=${filters!.udi}';
// }
}
var response = await http.get(
Uri.parse(url),
headers: {'Authorization': User.token, "Accept": "application/json"},
);
var packagesData = json.decode(response.body);
if (pageNumber == 1) {
originalMyPackages = [];
}
for (var package in packagesData['data']) {
originalMyPackages!.add(
MyPackageResultObject(
name: package['name'],
id: package['id'].toString(),
createdAt: package['created_at'].toString(),
userName: package['user'] != null ? package['user']['name'] : '',
),
);
}
myPackages = originalMyPackages;
pageNumber += 1;
// searchMyPackages('');
notifyListeners();
}
// Future<void> getHospitalPackages() async {
// String url = Url.getHospitalPackages(pageNumber);
// if (filterOn) {
// if (filters!.id != '') {
// url += '&package_id=${filters!.id}';
// }
// if (filters!.name != '') {
// url += '&name=${filters!.name}';
// }
// // if (filters!.udi != '') {
// // url += '&package_id=${filters!.udi}';
// // }
// }
// var response = await http.get(
// Uri.parse(url),
// headers: {'Authorization': User.token, "Accept": "application/json"},
// );
// var packagesData = json.decode(response.body);
// if (pageNumber == 1) {
// originalHospitalPackages = [];
// }
// for (var package in packagesData['data']) {
// originalHospitalPackages!.add(
// MyPackageResultObject(
// name: package['name'],
// id: package['id'].toString(),
// createdAt: package['created_at'].toString(),
// userName: package['user'] != null ? package['user']['name'] : '',
// ),
// );
// }
// pageNumber += 1;
// searchHospitalPackages('');
// }
Future<void> getMyPackageRequests() async {
String url = Url.getMyPackageRequests;
var response = await http.get(
Uri.parse(url),
headers: {'Authorization': User.token, "Accept": "application/json"},
);
var packagesData = json.decode(response.body);
originalMyPackagesRequests = [];
for (var package in packagesData['data']) {
originalMyPackagesRequests!.add(
MyPackageResultObject(
name: package['transferable']['name'],
id: package['transferable']['id'].toString(),
createdAt: package['created_at'].toString(),
requestId: package['id'].toString(),
),
);
}
}
// Future<void> getHospitalPackageRequests() async {
// String url = Url.getHospitalPackageRequests;
// var response = await http.get(
// Uri.parse(url),
// headers: {'Authorization': User.token, "Accept": "application/json"},
// );
// var packagesData = json.decode(response.body);
// originalHospitalPackagesRequests = [];
// for (var package in packagesData['data']) {
// originalHospitalPackagesRequests!.add(
// MyPackageResultObject(
// name: package['transferable']['name'],
// id: package['transferable']['id'].toString(),
// createdAt: package['created_at'].toString(),
// userName: package['user'] != null ? package['user']['name'] : '',
// requestId: package['id'].toString(),
// ),
// );
// }
// }
Future<void> getPackagesHistory(String id) async {
String url = Url.getPackageResult(id);
var response = await http.get(
Uri.parse(url),
headers: {'Authorization': User.token, "Accept": "application/json"},
);
var packagesData = json.decode(response.body)['data'];
print(packagesData);
packageHistory = [];
for (var transfer in packagesData['transfers']) {
packageHistory!.add(
PackageHistoryObject(
fromDate: transfer['from_date'] != null
? transfer['from_date'].toString()
: '',
toDate: transfer['to_date'] != null
? transfer['to_date'].toString()
: 'Now',
userHistoryName: transfer['user']['name'].toString(),
userHistoryId: transfer['user']['id'].toString(),
userHistoryPhon: transfer['user']['cell_number'].toString(),
userTransferName: transfer['userTransfer'] != null
? transfer['userTransfer']['name'].toString()
: null,
),
);
}
}
Future<void> transferPackage(String packageId, String userId) async {
var response = await http.post(
Uri.parse(Url.transferPackages(packageId)),
body: json.encode(
{
'user_id': userId,
},
),
headers: {
'Authorization': User.token,
'X-Requested-With': 'XMLHttpRequest',
"Content-Type": "application/json",
"Accept": "application/json"
},
);
var packageData = json.decode(response.body);
print(packageData);
}
Future<bool> verifyPackageRequests(String id, String value) async {
var response = await http.post(
Uri.parse(Url.verifyPackageRequests(id, value)),
body: json.encode({'status': value}),
headers: {
'Authorization': User.token,
'X-Requested-With': 'XMLHttpRequest',
"Content-Type": "application/json",
"Accept": "application/json"
},
);
var packageData = json.decode(response.body);
try {
if (packageData['data']['transfers']['status'] == 'approved') {
return true;
} else {
return false;
}
} catch (e) {
return false;
}
}
}