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? myPackages; // List? hospitalPackages; List? originalMyPackages; // List? originalHospitalPackages; List? originalMyPackagesRequests; // List? originalHospitalPackagesRequests; List? 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(); } void searchMyPackages(String value) { myPackages = []; searchBoxValue = value; originalMyPackages!.forEach((result) { if (result.id.toString().contains(searchBoxValue)) { myPackages!.add(result); } }); 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 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'] : '', ), ); } pageNumber += 1; searchMyPackages(''); } // Future 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 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 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 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(), ), ); } } Future 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 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; } } }