import 'dart:convert'; import 'package:cssd/models/package_model.dart'; import '../config/urls.dart'; import '../config/user.dart'; import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; class PackageProvider extends ChangeNotifier { List itemVals = []; List itemValues = []; String initialItemValue = ''; int curItemVal = 1; resetItemVals() { itemVals = []; itemValues = []; initialItemValue = ''; curItemVal = 1; // notifyListeners(); } addItemVal() { curItemVal += 1; TextEditingController lbl = new TextEditingController(); lbl.text = initialItemValue; itemValues.add(lbl); notifyListeners(); } changeItemVal(String value, int index) { itemValues[index].text = value; notifyListeners(); } String searchBoxValue = ''; bool filterOn = false; List? items; List? originalItems; PackageDetailObject? result; PackageFilterObject? filters = PackageFilterObject( id: '', hospital: '', name: '', udi: '', ); int pageNumber = 1; void resetPageNumber() => pageNumber = 1; bool isloading = false; void resetLoading() { isloading = false; notifyListeners(); } void setLoading() { isloading = true; // notifyListeners(); } Future>> getHospitalsFilters() async { var response = await http.get( Uri.parse(Url.filterItems), headers: { 'Authorization': User.token, }, ); List> result = []; var filterData = json.decode(response.body); for (var hospital in filterData['data']['MedicalCenters']) { result.add({ 'name': hospital['name'].toString(), 'id': hospital['id'].toString() }); } return result; } Future> getItemFilters() async { var response = await http.get( Uri.parse(Url.itemItems), headers: { 'Authorization': User.token, }, ); List result = []; var filterData = json.decode(response.body); for (var item in filterData['data']) { result.add(item['id'].toString()); } itemVals = result; initialItemValue = itemVals[0]; TextEditingController newLbl = new TextEditingController(); newLbl.text = initialItemValue; itemValues.add(newLbl); notifyListeners(); return result; } Future createPackageResult( name, udi, items, note, ) async { List> items = []; for (var item in items) { items.add({'name': '', 'id': item}); } var response = await http.post( Uri.parse(Url.createPackageResult), body: json.encode( { 'note': note, 'items': items, 'name': name, 'udi': udi, }, ), headers: { 'Authorization': User.token, 'X-Requested-With': 'XMLHttpRequest', "Content-Type": "application/json", "Accept": "application/json" }, ); print(response.body); } Future updatePackageResult( id, name, udi, description, items, ) async { // List> items = []; // for (var item in items) { // items.add({'name': '', 'id': item}); // } print({ 'note': description, 'name': name, 'udi': udi, 'items': items, }); var response = await http.put(Uri.parse(Url.updatePackageResult(id)), body: json.encode( { 'name': name, 'udi': udi, 'note': description, 'items': items, }, ), headers: { 'Authorization': User.token, 'X-Requested-With': 'XMLHttpRequest', "Content-Type": "application/json", "Accept": "application/json" }); print(response.body); } Future removePackages(String id) async { var response = await http.post(Uri.parse(Url.removePackages(id)), body: { '_method': 'delete' }, headers: { 'Authorization': User.token, }); if (response.statusCode == 200) { items!.removeWhere((item) { return item.id.toString() == id; }); } notifyListeners(); return true; } void setFilters( id, name, hospital, udi, ) { pageNumber = 1; filters = PackageFilterObject( id: id, name: name, hospital: hospital, udi: udi, ); if (filters!.id == '' && filters!.name == '' && filters!.hospital == '' && filters!.udi != '') { filterOn = false; } else { filterOn = true; } notifyListeners(); } void search(String value) { items = []; searchBoxValue = value; originalItems!.forEach((result) { if (result.id.toString().contains(searchBoxValue)) { items!.add(result); } }); notifyListeners(); } Future getPackageResults() async { String url = Url.packageResults(pageNumber); if (filterOn) { if (filters!.id != '') { url += '&package_id=${filters!.id}'; } if (filters!.name != '') { url += '&name=${filters!.name}'; } if (filters!.hospital != '') { url += '&medical_center_id=${filters!.hospital}'; } if (filters!.udi != '') { url += '&udi=${filters!.udi}'; } } var response = await http.get( Uri.parse(url), headers: { 'Authorization': User.token, }, ); var testResultData = json.decode(response.body); if (pageNumber == 1) { originalItems = []; } for (var item in testResultData['data']['data']) { originalItems!.add( PackageResultObject( createdAt: item['created_at'], id: item['id'].toString(), name: item['name'], ), ); } pageNumber += 1; search(''); } Future showPackageResult(String id) async { var response = await http.get(Uri.parse(Url.getPackageResult(id)), headers: { 'Authorization': User.token, }); if (response.statusCode != 200) { return PackageDetailObject( id: 'null', name: 'null', description: 'null', createDate: '2020-07-14 13:50:42', hospitalName: 'null', udi: 'null', items: [], ); } var data = json.decode(response.body)['data']; List itemsList = []; for (var item in data['items']) { itemsList.add(item['id'].toString()); } print(data); result = PackageDetailObject( id: data['id'].toString(), name: data['name'] != null ? data['name'] : '', description: data['note'] != null ? data['note'] : '', udi: data['udi'] != null ? data['udi'] : '', createDate: data['created_at'] != null ? data['created_at'] : '', hospitalName: data['user'] != null ? data['user']['medical_center']['name'] : '', items: itemsList, ); return result!; } }