import 'dart:convert'; import '../config/urls.dart'; import '../config/user.dart'; import '../models/label_models.dart'; import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; class LabelsProvider extends ChangeNotifier { String searchBoxValue = ''; bool filterOn = false; List? items; List? originalItems; List packageVals = []; List packageValues = []; String initialPackageValue = ''; String? packageId; int curPackageVal = 1; resetPackageVals() { packageVals = []; packageValues = []; initialPackageValue = ''; packageId = null; curPackageVal = 1; // notifyListeners(); } // addPackageVal() { // curPackageVal += 1; // TextEditingController lbl = new TextEditingController(); // lbl.text = initialPackageValue; // packageValues.add(lbl); // notifyListeners(); // } changePackageVal(String value, int index) { packageValues[index].text = value; notifyListeners(); } LabelDetailsObject? result; LabelFilterObject filters = LabelFilterObject( id: '', cycleNumber: '', sterilizerId: '', hospital: '', ); int pageNumber = 1; void resetPageNumber() => pageNumber = 1; bool isloading = false; void resetLoading() { isloading = false; notifyListeners(); } void setLoading() { isloading = true; notifyListeners(); } bool isloadingButton = false; void resetLoadingButton() { isloadingButton = false; // notifyListeners(); } void setLoadingButton() { isloadingButton = true; notifyListeners(); } Future>> getHospitalsFilters() async { var response = await http.get( Uri.parse(Url.filterItems), headers: { 'Authorization': User.token, }, ); List> result = []; var filterDatas = json.decode(response.body); for (var hospital in filterDatas['data']['MedicalCenters']) { result.add({ 'name': hospital['name'].toString(), 'id': hospital['id'].toString() }); // print(hospital); } return result; } Future> getPackageFilters() async { var response = await http.get( Uri.parse(Url.packageItems), headers: { 'Authorization': User.token, }, ); List result = []; var filterDatas = json.decode(response.body); for (var package in filterDatas['data']) { // result.add( // "${package['name']} - ${package['package_id'] != null ? package['package_id'] : ''}"); result.add("${package['id'].toString()} - ${package['name'].toString()}"); } if (result.isEmpty) result.add(""); packageVals = result; initialPackageValue = packageId ?? ""; TextEditingController newLbl = new TextEditingController(); newLbl.text = initialPackageValue; packageValues.add(newLbl); notifyListeners(); return result; } Future createLabelResult(lotNumber, cycleNumber, sterileDate, packageId, expireDate, sterilizerId) async { // List> pkgs = []; // for (var package in packages) { // pkgs.add({'name': '', 'id': package}); // } var response = await http.post(Uri.parse(Url.createLabelResult), body: json.encode( { 'sterile_date': sterileDate, 'expire_date': expireDate, 'sterilizer_id': sterilizerId, 'cycle_number': cycleNumber, 'lot_number': lotNumber, 'package_id': packageId, }, ), headers: { 'Authorization': User.token, 'X-Requested-With': 'XMLHttpRequest', "Content-Type": "application/json", "Accept": "application/json" }); print(response.body); } Future updateLabelResult( id, lotNumber, cycleNumber, sterileDate, // package, expireDate, sterilizerId, ) async { // print(labs); print( { 'sterile_date': sterileDate, 'expire_date': expireDate, 'sterilizer_id': sterilizerId, 'cycle_number': cycleNumber, 'lot_number': lotNumber, // 'package_id': package['id'], }, ); var response = await http.put(Uri.parse(Url.updateLabelResult(id)), body: json.encode( { 'sterile_date': sterileDate, 'expire_date': expireDate, 'sterilizer_id': sterilizerId, 'cycle_number': cycleNumber, 'lot_number': lotNumber, // 'package_id': package['id'], // 'package': { // 'id': package['id'], // 'name': package['name'], // }, }, ), headers: { 'Authorization': User.token, 'X-Requested-With': 'XMLHttpRequest', "Content-Type": "application/json", "Accept": "application/json" }); print(response.body); } Future removeLabels(String id) async { var response = await http.post(Uri.parse(Url.removeLabels(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, cycleNumber, sterilizerId, hospital) { pageNumber = 1; filters = LabelFilterObject( id: id, cycleNumber: cycleNumber, sterilizerId: sterilizerId, hospital: hospital, ); if (filters.id == '' && filters.cycleNumber == '' && filters.sterilizerId == '' && filters.hospital == '') { filterOn = false; } else { filterOn = true; } // notifyListeners(); } Future search(String value) async { items = []; searchBoxValue = value; var response = await http.get( Uri.parse(Url.searchLabels(value)), headers: { 'Authorization': User.token, }, ); var testResultData = json.decode(response.body); for (var item in testResultData['data']) { items!.add( LabelResultObject( expireDate: item['expire_date'], id: item['id'].toString(), packageName: item['package'] != null ? item['package']['name'].toString() : ' ', packageId: item['package'] != null ? item['package']['id'].toString() : ' ', ), ); } resetLoading(); notifyListeners(); } Future getLabelResults() async { String url = Url.labelResults(pageNumber); if (filterOn) { items = []; // url = Url.labelResults(pNum); if (filters.id != '') { url += '&label_id=${filters.id}'; } if (filters.hospital != '') { url += '&medical_center_id=${filters.hospital}'; } if (filters.sterilizerId != '') { url += '&sterilizer_id=${filters.sterilizerId}'; } if (filters.cycleNumber != '') { url += '&cycle_number=${filters.cycleNumber}'; } } var response = await http.get( Uri.parse(url), headers: { 'Authorization': User.token, }, ); var testResultData = json.decode(response.body); if (pageNumber == 1) { originalItems = []; items = []; } for (var item in testResultData['data']) { // print(item); originalItems!.add( LabelResultObject( expireDate: item['expire_date'], id: item['id'].toString(), packageName: item['package'] != null ? item['package']['name'].toString() : ' ', packageId: item['package'] != null ? item['package']['id'].toString() : ' ', ), ); } pageNumber += 1; items = originalItems; notifyListeners(); } Future showLabelResult(String id) async { var response = await http.get( Uri.parse(Url.getLabelResult(id)), headers: { 'Authorization': User.token, }, ); if (response.statusCode != 200) { return LabelDetailsObject( id: 'null', package: 'null', packageId: 'null', hospitalName: 'null', createDate: 'null', expireDate: 'null', sterileDate: 'null', sterileId: 'null', cycleNumber: 'null', lotNumber: 'null', ); } var data = json.decode(response.body)['data']; print(data); result = LabelDetailsObject( id: data['id'].toString(), package: data['package'] != null ? data['package']['name'] : '', packageId: data['package'] != null ? data['package']['id'].toString() : '', hospitalName: data['user']['medical_center']['name'], createDate: data['created_at'] != null ? data['created_at'] : '', expireDate: data['expire_date'] != null ? data['expire_date'] : '', sterileDate: data['sterile_date'] != null ? data['sterile_date'] : '', sterileId: data['sterilizer_id'] != null ? data['sterilizer_id'] : '', cycleNumber: data['cycle_number'] != null ? data['cycle_number'] : '', lotNumber: data['lot_number'] != null ? data['lot_number'] : '', ); return result!; } }