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? originalPackageHistory; 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 == '' && filters!.udi == '') { 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 += '&udi=${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(), ), ); } 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 += '&udi=${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']; String fromDate = ''; String toDate = ''; String userHistory = ''; for (var transfer in packagesData['transfers']) { fromDate = transfer['from_date'] != null ? transfer['from_date'].toString() : ''; toDate = transfer['to_date'] != null ? transfer['to_date'].toString() : ''; userHistory = transfer['user']['name'].toString(); } if (packagesData.isNotEmpty) { originalPackageHistory!.add( MyPackageResultObject( name: packagesData['name'], id: packagesData['id'].toString(), createdAt: packagesData['created_at'].toString(), fromDate: fromDate, toDate: toDate, userHistory: userHistory, ), ); originalPackageHistory!.reversed.toList(); } } 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; } } }