mirror of
https://git.meshkee.com/applications/cssd.git
synced 2026-10-10 19:28:56 +03:30
308 lines
8.5 KiB
Dart
308 lines
8.5 KiB
Dart
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<LabelResultObject>? items;
|
|
List<LabelResultObject>? originalItems;
|
|
List<String> packageVals = [];
|
|
List<TextEditingController> packageValues = [];
|
|
String initialPackageValue = '';
|
|
int curPackageVal = 1;
|
|
|
|
resetPackageVals() {
|
|
packageVals = [];
|
|
packageValues = [];
|
|
initialPackageValue = '';
|
|
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();
|
|
}
|
|
|
|
Future<List<Map<String, String>>> getHospitalsFilters() async {
|
|
var response = await http.get(
|
|
Uri.parse(Url.filterItems),
|
|
headers: {
|
|
'Authorization': User.token,
|
|
},
|
|
);
|
|
List<Map<String, String>> 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<List<String>> getPackageFilters() async {
|
|
var response = await http.get(
|
|
Uri.parse(Url.packageItems),
|
|
headers: {
|
|
'Authorization': User.token,
|
|
},
|
|
);
|
|
List<String> 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());
|
|
}
|
|
packageVals = result;
|
|
initialPackageValue = packageVals[0];
|
|
TextEditingController newLbl = new TextEditingController();
|
|
newLbl.text = initialPackageValue;
|
|
packageValues.add(newLbl);
|
|
notifyListeners();
|
|
return result;
|
|
}
|
|
|
|
Future<void> createLabelResult(lotNumber, cycleNumber, sterileDate, packages,
|
|
expireDate, sterilizerId) async {
|
|
// List<Map<String, Object>> 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': packages,
|
|
},
|
|
),
|
|
headers: {
|
|
'Authorization': User.token,
|
|
'X-Requested-With': 'XMLHttpRequest',
|
|
"Content-Type": "application/json",
|
|
"Accept": "application/json"
|
|
});
|
|
print(response.body);
|
|
}
|
|
|
|
Future<void> 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<bool> 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();
|
|
}
|
|
|
|
void search(String value) {
|
|
items = [];
|
|
searchBoxValue = value;
|
|
originalItems!.forEach((result) {
|
|
if (result.id.toString().contains(searchBoxValue)) {
|
|
items!.add(result);
|
|
}
|
|
});
|
|
notifyListeners();
|
|
}
|
|
|
|
Future<void> 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']['data']) {
|
|
// print(item);
|
|
originalItems!.add(
|
|
LabelResultObject(
|
|
expireDate: item['expire_date'],
|
|
id: item['id'].toString(),
|
|
package: item['package']['name'],
|
|
packageId: item['package']['id'].toString(),
|
|
),
|
|
);
|
|
}
|
|
pageNumber += 1;
|
|
search('');
|
|
}
|
|
|
|
Future<LabelDetailsObject> 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']['name'] != null ? data['package']['name'] : '',
|
|
packageId: data['package']['id'].toString() != '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!;
|
|
}
|
|
}
|