import 'dart:convert'; import 'package:cssd/models/my_item_model.dart'; import 'package:flutter/foundation.dart'; import '../config/urls.dart'; import '../config/user.dart'; import 'package:http/http.dart' as http; class MyItemProvider extends ChangeNotifier { String searchBoxValue = ''; bool filterOn = false; List? myItems; // List? hospitalItems; List? originalMyItems; // List? originalHospitalItems; List? originalMyItemsRequests; // List? originalHospitalItemsRequests; List? itemHistory; MyItemFilterObject? filters = MyItemFilterObject( id: '', name: '', udi: '', size: '', specific: '', ); int pageNumber = 1; void resetPageNumber() => pageNumber = 1; bool isloading = false; void resetLoading() { isloading = false; notifyListeners(); } void setLoading() { isloading = true; notifyListeners(); } Future searchMyItems(String value) async { myItems = []; searchBoxValue = value; var response = await http.get( Uri.parse(Url.searchMyItems(value)), headers: {'Authorization': User.token, "Accept": "application/json"}, ); var itemsData = json.decode(response.body); for (var item in itemsData['data']) { myItems!.add( MyItemResultObject( name: item['name'], id: item['id'].toString(), size: item['size'].toString(), udi: item['udi'], userName: item['user'] != null ? item['user']['name'] : '', ), ); } resetLoading(); notifyListeners(); } Future removeItems(String id) async { myItems!.removeWhere((item) { return item.id.toString() == id; }); notifyListeners(); return true; } // void searchHospitalItems(String value) { // hospitalItems = []; // searchBoxValue = value; // originalHospitalItems!.forEach((result) { // if (result.udi.toString().contains(searchBoxValue)) { // hospitalItems!.add(result); // } // }); // notifyListeners(); // } void setFilters( id, name, udi, size, specific, ) { pageNumber = 1; filters = MyItemFilterObject( id: id, name: name, udi: udi, size: size, specific: specific, ); if (filters!.id == '' && filters!.name == '' && filters!.size == '' && filters!.specific == '' && filters!.udi == '') { filterOn = false; } else { filterOn = true; } // notifyListeners(); } Future getMyItems() async { String url = Url.getMyItems(pageNumber); if (filterOn) { if (filters!.id != '') { url += '&item_id=${filters!.id}'; } if (filters!.name != '') { url += '&name=${filters!.name}'; } if (filters!.size != '') { url += '&size=${filters!.size}'; } if (filters!.specific != '') { url += '&specific=${filters!.specific}'; } if (filters!.udi != '') { url += '&udi=${filters!.udi}'; } } var response = await http.get( Uri.parse(url), headers: {'Authorization': User.token, "Accept": "application/json"}, ); var itemsData = json.decode(response.body); if (pageNumber == 1) { originalMyItems = []; } for (var item in itemsData['data']) { originalMyItems!.add( MyItemResultObject( name: item['name'], id: item['id'].toString(), size: item['size'].toString(), udi: item['udi'], userName: item['user'] != null ? item['user']['name'] : '', ), ); } myItems = originalMyItems; pageNumber += 1; notifyListeners(); } // Future getHospitalItems() async { // String url = Url.getHospitalItems(pageNumber); // if (filterOn) { // if (filters!.id != '') { // url += '&item_id=${filters!.id}'; // } // if (filters!.name != '') { // url += '&name=${filters!.name}'; // } // if (filters!.size != '') { // url += '&size=${filters!.size}'; // } // if (filters!.specific != '') { // url += '&specific=${filters!.specific}'; // } // if (filters!.udi != '') { // url += '&udi=${filters!.udi}'; // } // } // var response = await http.get( // Uri.parse(url), // headers: {'Authorization': User.token, "Accept": "application/json"}, // ); // var itemsData = json.decode(response.body); // if (pageNumber == 1) { // originalHospitalItems = []; // } // for (var item in itemsData['data']['data']) { // originalHospitalItems!.add( // MyItemResultObject( // name: item['name'], // id: item['id'].toString(), // size: item['size'].toString(), // userName: item['user'] != null ? item['user']['name'] : '', // udi: item['udi'], // ), // ); // } // pageNumber += 1; // searchHospitalItems(''); // } Future getItemsHistory(String id) async { String url = Url.getItemResult(id); var response = await http.get( Uri.parse(url), headers: {'Authorization': User.token, "Accept": "application/json"}, ); var itemsData = json.decode(response.body)['data']; itemHistory = []; for (var transfer in itemsData['transfers']) { itemHistory!.add( ItemHistoryObject( 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 getMyItemRequests() async { String url = Url.getMyItemRequests; var response = await http.get( Uri.parse(url), headers: {'Authorization': User.token, "Accept": "application/json"}, ); var itemsData = json.decode(response.body); originalMyItemsRequests = []; for (var item in itemsData['data']) { originalMyItemsRequests!.add( MyItemResultObject( name: item['transferable']['name'], id: item['transferable']['id'].toString(), size: item['transferable']['size'].toString(), requestId: item['id'].toString(), ), ); } } // Future getHospitalItemRequests() async { // String url = Url.getHospitalItemRequests; // var response = await http.get( // Uri.parse(url), // headers: {'Authorization': User.token, "Accept": "application/json"}, // ); // var itemsData = json.decode(response.body); // print(itemsData); // originalHospitalItemsRequests = []; // for (var item in itemsData['data']) { // originalHospitalItemsRequests!.add( // MyItemResultObject( // name: item['transferable']['name'].toString(), // id: item['transferable']['id'].toString(), // size: item['transferable']['size'].toString(), // userName: item['user'] != null ? item['user']['name'] : '', // requestId: item['id'].toString(), // ), // ); // } // } bool isloadingButton = false; void resetLoadingButton() { isloadingButton = false; // notifyListeners(); } void setLoadingButton() { isloadingButton = true; notifyListeners(); } Future transferItems(String itemId, String userId) async { var response = await http.post( Uri.parse(Url.transferItems(itemId)), body: json.encode( { 'user_id': userId, }, ), headers: { 'Authorization': User.token, 'X-Requested-With': 'XMLHttpRequest', "Content-Type": "application/json", "Accept": "application/json" }, ); var itemData = json.decode(response.body); print("status : ${response.statusCode}"); print(itemData); } Future repairItems(String itemId) async { var response = await http.post( Uri.parse(Url.repairItems(itemId)), headers: {'Authorization': User.token, "Accept": "application/json"}, ); print(response.statusCode); } Future verifyItemRequests(String id, String value) async { var response = await http.post( Uri.parse(Url.verifyItemRequests(id, value)), body: json.encode({'status': value}), headers: { 'Authorization': User.token, 'X-Requested-With': 'XMLHttpRequest', "Content-Type": "application/json", "Accept": "application/json" }, ); var itemData = json.decode(response.body); print(response.statusCode); print(itemData); try { if (itemData['data']['transfers']['status'] == 'approved') { return true; } else { return false; } } catch (e) { print(e); return false; } } }