This commit is contained in:
ehaya
2020-05-10 14:09:07 +04:30
parent 66c1e7bf16
commit 158c53e534
192 changed files with 13165 additions and 1 deletions
+183
View File
@@ -0,0 +1,183 @@
import 'dart:convert';
import 'dart:io';
import 'package:cssd/config/user.dart';
import 'package:flutter/material.dart';
import 'package:cssd/config/urls.dart';
import 'package:http/http.dart' as http;
import 'package:shared_preferences/shared_preferences.dart';
class Auth with ChangeNotifier {
String _token;
DateTime _expiaryDate;
Map<String, dynamic> _user = {};
bool get isAuth {
return token != null;
}
String get token {
if (_expiaryDate != null &&
_expiaryDate.isAfter(DateTime.now()) &&
_token != null) {
return _token;
}
return null;
}
Map<String, dynamic> get user {
return {..._user};
}
Future<String> login(String cellNumber, String password) async {
final response = await http.post(
Url.login,
body: {
'cell_number': cellNumber,
'password': password,
},
// headers: {'X-Requested-With': 'XMLHttpRequest'},
);
final responseData = json.decode(response.body);
// print(responseData);
if (response.statusCode == 401) {
if (responseData['message'] == 'The user credentials were incorrect.') {
return 'badinput'; // incorrect user or pass
}
else{
return 'error';
}
}
_token = responseData['access_token'];
_expiaryDate = DateTime.now().add(
Duration(
seconds: responseData['expires_in'],
),
);
User.token = _token;
// print(isAuth);
// print(User.token);
var localUser = await getUserData();
// print("------ in auth ===========");
print(localUser);
final prefs = await SharedPreferences.getInstance();
final userData = json.encode({
'token': _token,
'expiaryDate': _expiaryDate.toIso8601String(),
'user': user
});
prefs.setString('userData', userData);
notifyListeners();
return 'true';
}
Future<bool> tryAutoLogin() async {
final prefs = await SharedPreferences.getInstance();
if (!prefs.containsKey('userData')) {
return false;
}
final userData =
json.decode(prefs.getString('userData')) as Map<String, Object>;
final expiaryDate = DateTime.parse(userData['expiaryDate']);
if (expiaryDate.isBefore(DateTime.now())) {
return false;
}
_token = userData['token'];
_expiaryDate = expiaryDate;
_user = userData['user'];
User.token = _token;
notifyListeners();
return true;
}
Future<Map<String, dynamic>> getUserData() async {
final response = await http.get(
Url.getUserInfo,
headers: {'Authorization': 'Bearer ' + token},
);
// print(response.body);
if (response.statusCode == 200) {
var data = json.decode(response.body)['data'];
_user.addAll(
{
'id': data['user']['id'],
'name': data['user']['name'],
'email': data['user']['email'],
'cell_number': data['user']['cell_number'],
'address': data['user']['address'],
'gender': data['user']['gender'],
'medical_center': data['user']['medical_center']['name'],
'roles': data['roles'],
},
);
// print(_user);
notifyListeners();
return _user;
} else {
return {};
}
}
Future<void> setUserData(id, name, email) async {
var response = await http.post(
'https://cssd-doc.com/api/UpdateInfo',
headers: {
'Authorization': 'Bearer ' + token,
HttpHeaders.contentTypeHeader: 'application/json',
},
body: json.encode(
{
"id": id,
"name": name,
"email": email,
// "country_code": "0098",
// "cell_number": "09338736511",
// "gender": "Male",
// "verified": "Verified",
// "status": "Active",
// "medical_center_id": 1,
// "address": null,
// "created_at": null,
// "updated_at": "2020-04-23 21:54:52",
// "medical_center": {
// "id": 1,
// "name": "B",
// "address": "1",
// "phone_number": "12345678951",
// "city_id": 1,
// "created_at": null,
// "updated_at": "2020-01-12 05:38:35"
// },
// "roles": [
// {
// "id": 1,
// "name": "Admin",
// "guard_name": "web",
// "created_at": null,
// "updated_at": null,
// "pivot": {
// "model_id": 1,
// "role_id": 1,
// "model_type": "App\\User",
// },
// },
// ],
},
),
);
print(response.body);
}
void logout() async {
_token = null;
_expiaryDate = null;
_user = {};
User.token = null;
final prefs = await SharedPreferences.getInstance();
prefs.remove('userData');
notifyListeners();
}
}
+31
View File
@@ -0,0 +1,31 @@
import 'package:flutter/material.dart';
import 'package:connectivity/connectivity.dart';
class ConnectivityProvider extends ChangeNotifier {
String conStatus = '';
checkConnection() {
Connectivity().onConnectivityChanged.listen((ConnectivityResult result) {
conStatus = _getStatus(result);
notifyListeners();
});
}
String _getStatus(ConnectivityResult result) {
switch (result) {
case ConnectivityResult.wifi:
return 'wifi';
break;
case ConnectivityResult.mobile:
return 'calcular';
break;
case ConnectivityResult.none:
return 'offline';
break;
default:
return 'offline';
break;
}
}
}
+262
View File
@@ -0,0 +1,262 @@
import 'dart:convert';
import 'package:cssd/config/urls.dart';
import 'package:cssd/config/user.dart';
import 'package:cssd/models/cycles_models.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
class CyclesProvider extends ChangeNotifier {
List<String> labelVals = [];
List<TextEditingController> labelValues = [];
String initialLabelValue = '';
int curLabelVal = 1;
resetLabelVals() {
labelVals = [];
labelValues = [];
initialLabelValue = '';
curLabelVal = 1;
// notifyListeners();
}
addLabelVal() {
curLabelVal += 1;
TextEditingController lbl = new TextEditingController();
lbl.text = initialLabelValue;
labelValues.add(lbl);
notifyListeners();
}
changeLabelVal(String value, int index) {
labelValues[index].text = value;
notifyListeners();
}
String searchBoxValue = '';
bool filterOn = false;
List<CycleResultObject> items;
List<CycleResultObject> originalItems; //before do search on results
CycleDetailObject result;
CycleFilterObject filters = CycleFilterObject(
id: '',
cycleNumber: '',
sterilizerId: '',
hospital: '',
date: '',
);
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(
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['name']);
}
return result;
}
Future<List<String>> getLabelFilters() async {
var response = await http.get(
Url.labelItems,
headers: {
'Authorization': User.token,
},
);
List<String> result = [];
var filterDatas = json.decode(response.body);
for (var label in filterDatas['data']) {
result.add(label['id'].toString());
// print(hospital['name']);
}
labelVals = result;
initialLabelValue = labelVals[0];
TextEditingController newLbl = new TextEditingController();
newLbl.text = initialLabelValue;
labelValues.add(newLbl);
notifyListeners();
return result;
}
Future<void> createCycleResult(
cycleNumber, date, labels, note, sterilizerId) async {
List<Map<String, Object>> labs = [];
for (var label in labels) {
labs.add({'name': '', 'id': label});
}
// print(labs);
var response = await http.post(Url.createCycleResult,
body: json.encode(
{
'note': note,
'labels': labs,
'cycle_number': cycleNumber,
'date': date,
'sterilizer_id': sterilizerId,
},
),
headers: {
'Authorization': User.token,
'X-Requested-With': 'XMLHttpRequest',
"Content-Type": "application/json",
"Accept": "application/json"
});
print(response.body);
}
void setFilters(id, cycleNumber, sterilizerId, hospital, date) {
pageNumber = 1;
filters = CycleFilterObject(
id: id,
cycleNumber: cycleNumber,
sterilizerId: sterilizerId,
hospital: hospital,
date: date,
);
if (filters.id == '' &&
filters.cycleNumber == '' &&
filters.sterilizerId == '' &&
filters.hospital == '' &&
filters.date == '') {
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> getCycleResults() async {
String url = Url.cycleResults(pageNumber);
if (filterOn) {
items = [];
if (filters.id != '') {
url += '&cycle_id=${filters.id}';
}
if (filters.cycleNumber != '') {
url += '&cycle_number=${filters.cycleNumber}';
}
if (filters.sterilizerId != '') {
url += '&sterilizer_id=${filters.sterilizerId}';
}
if (filters.hospital != '') {
url += '&medical_center_id=${filters.hospital}';
}
if (filters.date != '') {
url += '&date=${filters.date}';
}
}
// print(url);
var response = await http.get(
url,
headers: {
'Authorization': User.token,
},
);
var testResultData = json.decode(response.body);
List<String> labels = [];
if (pageNumber == 1) {
originalItems = [];
items = [];
}
for (var item in testResultData['data']['data']) {
// print(item);
labels = [];
for (var label in item['labels']) {
// print(label['id']);
labels.add(label['id'].toString());
}
originalItems.add(
CycleResultObject(
createdAt: item['date'],
id: item['id'].toString(),
label: labels,
),
);
}
pageNumber += 1;
search('');
}
Future<CycleDetailObject> showCycleResult(String id) async {
var response = await http.get(Url.getCycleResult(id), headers: {
'Authorization': User.token,
});
if (response.statusCode != 200) {
return CycleDetailObject(
id: 'null',
description: 'null',
createDate: 'null',
date: '2020-01-01',
sterileId: 'null',
cycleNumber: 'null',
labels: [],
);
}
var data = json.decode(response.body)['data'];
List<String> lablesList = [];
for (var label in data['labels']) {
lablesList.add(label['id'].toString());
}
result = CycleDetailObject(
id: data['id'].toString(),
description: data['note'] != null ? data['note'] : '',
createDate: data['created_at'] != null ? data['created_at'] : '',
date: data['date'] != null ? data['date'] : '',
sterileId: data['sterilizer_id'] != null ? data['sterilizer_id'] : '',
cycleNumber: data['cycle_number'] != null ? data['cycle_number'] : '',
labels: lablesList,
);
// result = {
// 'id': data['id'],
// 'auto_cleave_id': data['inputs']['Autoclave ID'],
// 'test_code': data['test_type_id'],
// 'date': data['created_at'],
// 'verified': data['verified'],
// 'description': data['inputs']['Note'],
// 'test_type_name': data['test_type']['name'],
// // 'device_label': data['device_label'],
// // 'device_id': data['device_id'],
// // 'result': data['result'],
// // 'user_name': data['user']['name'],
// // 'medical_center': data['user']['medical_center']['name'],
// };
return result;
}
}
+101
View File
@@ -0,0 +1,101 @@
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:cssd/config/urls.dart';
import 'package:cssd/config/user.dart';
class Inputs with ChangeNotifier {
List<Map<String, dynamic>> inputItems = [];
Future<bool> getInputs({String testResultId = "", String name = "", String uniqueCode = "", String testTypeId = ""}) async {
print({
'test_type_id': testTypeId,
'test_result_id': testResultId,
'name': name,
'unique_code': uniqueCode,
},);
var response = await http.post(
Url.getInputs,
body: {
'test_type_id': testTypeId,
'test_result_id': testResultId,
'name': name,
'unique_code': uniqueCode,
},
headers: {
'Authorization': User.token,
'X-Requested-With': 'XMLHttpRequest',
},
);
if (response.statusCode != 200) {
inputItems = [];
notifyListeners();
return false;
}
final responseData = json.decode(response.body);
// print(responseData);
Map<String, dynamic> values;
if (testResultId.isNotEmpty) {
response = await http.get(Url.testResultFormValues(testResultId),
headers: {
'Authorization': User.token
});
values = json.decode(response.body)['data'];
}
var inputs = responseData['data']['inputs'] as List<dynamic>;
var general = responseData['data']['testType'] as Map<String, dynamic>;
clearInputs();
bool result = false;
DateTime dateTime = DateTime.now();
String deviceLabel;
if (values != null && values.isNotEmpty) {
result = values['result'] == 'Accept' ? true : false;
dateTime = values['date'] == null ? DateTime.now() : DateTime.parse(values['date']);
deviceLabel = values['device_id'] ?? '';
}
inputItems.add({'type': 'Label', 'key': 'test_type_id', 'name': general['name'], 'value': general['id']});
inputItems.add({'type': 'Text', 'key': 'device_id', 'name': general['device_label'], 'value': deviceLabel});
inputItems.add({'type': 'Date', 'key': 'date' , 'name': 'date', 'value': dateTime});
inputItems.add({'type': 'Switch', 'key': 'result', 'name': 'Result', 'value': result});
setValues(inputs, values);
for (var input in inputs) {
inputItems.add(input as Map<String, dynamic>);
}
notifyListeners();
return true;
}
void setValues(inputs, values) {
for (var input in inputs) {
if (input.containsKey('children')) {
setValues(input['children'], values);
}
var key = "${input['name']}_${input['id']}";
input['key'] = key;
if(values != null && values.isNotEmpty && values.containsKey(key)) {
if (input['type'] == 'Range' || input['type'] == 'Temperature' || input['type'] == 'Pressure') {
input['value'] = double.parse(values[key]);
} else if (input['type'] == 'Switch'){
input['value'] = values[key] == "1" ? true : false;
} else if (input['type'] == 'Time'){
input['value'] = values[key] == null ? '' : values[key].substring(0, 2) + ":" + values[key].substring(2, 4);
} else {
input['value'] = values[key];
}
}
}
}
void clearInputs() {
inputItems.clear();
}
}
+213
View File
@@ -0,0 +1,213 @@
import 'dart:convert';
import 'package:cssd/config/urls.dart';
import 'package:cssd/config/user.dart';
import 'package:cssd/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;
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(
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<Map<String, String>>> getPackageFilters() async {
var response = await http.get(
Url.packageItems,
headers: {
'Authorization': User.token,
},
);
List<Map<String, String>> result = [];
var filterDatas = json.decode(response.body);
// print(filterDatas);
for (var package in filterDatas['data']) {
result.add(
{
'name': package['name'].toString(),
'id': package['id'].toString(),
},
);
// print(hospital['name']);
}
// print(result);
return result;
}
Future<void> createLabelResult(lotNumber, cycleNumber, sterileDate, package,
expireDate, sterilizerId) async {
// print(labs);
var response = await http.post(Url.createLabelResult,
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);
}
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(
url,
headers: {
'Authorization': User.token,
},
);
var testResultData = json.decode(response.body);
if (pageNumber == 1) {
originalItems = [];
items = [];
}
for (var item in testResultData['data']['data']) {
originalItems.add(
LabelResultObject(
expireDate: item['expire_date'],
id: item['id'].toString(),
package: item['package']['name'],
),
);
}
pageNumber += 1;
search('');
}
Future<LabelDetailsObject> showLabelResult(String id) async {
var response = await http.get(
Url.getLabelResult(id),
headers: {
'Authorization': User.token,
},
);
if (response.statusCode != 200) {
return LabelDetailsObject(
id: 'null',
package: 'null',
createDate: 'null',
expireDate: 'null',
sterileDate: 'null',
sterileId: 'null',
cycleNumber: 'null',
lotNumber: 'null',
);
}
var data = json.decode(response.body)['data'];
result = LabelDetailsObject(
id: data['id'].toString(),
package: data['package']['name'] != null ? data['package']['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;
}
}
+59
View File
@@ -0,0 +1,59 @@
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:cssd/config/urls.dart';
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
class MyInfoProvider extends ChangeNotifier {
Map<String, dynamic> _user = {};
Map<String, dynamic> get user {
return {..._user};
}
String _token;
Future<void> setToken() async {
final prefs = await SharedPreferences.getInstance();
if (!prefs.containsKey('auth')) {
return false;
}
final auth = json.decode(prefs.getString('auth')) as Map<String, Object>;
_token = auth['token'];
notifyListeners();
}
Future<Map<String, dynamic>> getUserData() async {
final prefs = await SharedPreferences.getInstance();
final auth = json.decode(prefs.getString('auth')) as Map<String, Object>;
_token = auth['token'];
final response = await http.get(
Url.getUserInfo,
headers: {
'Authorization': 'Bearer ' + _token,
},
);
print(response.body);
if (response.statusCode == 200) {
var data = json.decode(response.body)['data'];
_user.addAll(
{
'id': data['user']['id'],
'name': data['user']['name'],
'email': data['user']['email'],
'cell_number': data['user']['cell_number'],
'address': data['user']['address'],
'gender': data['user']['gender'],
'medical_center': data['user']['medical_center']['name'],
'roles': data['roles'],
},
);
final prefs = await SharedPreferences.getInstance();
prefs.setString('userData', json.encode(_user));
return _user;
} else {
return {};
}
}
}
+38
View File
@@ -0,0 +1,38 @@
import 'package:cssd/config/urls.dart';
import 'package:cssd/config/user.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
class TestResult with ChangeNotifier{
final int id;
final String name;
final String date;
final String deviceId;
String result;
bool get isVerified {
return result == 'Verified';
}
TestResult({
this.id,
this.name,
this.date,
this.deviceId,
this.result,
});
Future<void> toggleVerify() async {
final response = await http.post(
Url.verifyTest(id), headers: {
'Authorization': User.token
}
);
if (response.statusCode == 200) {
result = result == 'Verified' ? 'NotVerified' : 'Verified';
notifyListeners();
}
}
}
+241
View File
@@ -0,0 +1,241 @@
import 'dart:convert';
import 'package:cssd/config/urls.dart';
import 'package:cssd/config/user.dart';
import 'package:cssd/models/test_result_models.dart';
// import 'package:cssd/providers/test_result.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
class TestResultsProvider with ChangeNotifier {
String searchBoxValue = '';
bool filterOn = false;
List<TestResultObject> items;
List<TestResultObject> originalItems;
// List<TestResult> items = [];
Map<String, dynamic> result;
TestResultFilterObject _filters = TestResultFilterObject(
id: '',
labelID: '',
userName: '',
hospital: '',
testType: '',
fDate: '',
uDate: '',
);
void resetFilters() {
filterOn = false;
_filters = TestResultFilterObject(
id: '',
labelID: '',
userName: '',
hospital: '',
testType: '',
fDate: '',
uDate: '',
);
}
int pageNumber = 1;
void resetPageNumber() => pageNumber = 1;
bool isloading = false;
void resetLoading() {
isloading = false;
notifyListeners();
}
void setLoading() {
isloading = true;
// notifyListeners();
}
TestResultFilterObject get filters {
return _filters;
}
void search(String value) {
print(value);
items = [];
searchBoxValue = value;
originalItems.forEach((result) {
if (result.name.toString().contains(searchBoxValue)) {
items.add(result);
}
});
notifyListeners();
}
void setFilters(id, labelId, username, testType, hospital, fDate, uDate) {
pageNumber = 1;
_filters = TestResultFilterObject(
id: id,
labelID: labelId,
userName: username,
hospital: hospital,
testType: testType,
fDate: fDate,
uDate: uDate);
if (_filters.id == '' &&
_filters.labelID == '' &&
_filters.testType == '' &&
_filters.hospital == '' &&
_filters.userName == '' &&
_filters.fDate == '' &&
_filters.uDate == '') {
filterOn = false;
} else {
filterOn = true;
}
notifyListeners();
}
Future<List<Map<String, String>>> getFilterItems() async {
var response = await http.get(
Url.filterItems,
headers: {
'Authorization': User.token,
},
);
List<Map<String, String>> result = [];
Map<String, String> hospitals = {};
Map<String, String> testTypes = {};
var filterDatas = json.decode(response.body);
for (var hospital in filterDatas['data']['MedicalCenters']) {
hospitals.addAll({hospital['name']: hospital['id'].toString()});
}
result.add(hospitals);
for (var testType in filterDatas['data']['TestTypes']) {
testTypes.addAll({testType['name']: testType['id'].toString()});
}
result.add(testTypes);
return result;
}
Future<void> getTestResults() async {
String url = Url.testResults(pageNumber);
if (filterOn) {
items = [];
if (_filters.id != '') {
url += '&device_id=${_filters.id}';
}
if (_filters.labelID != '') {
url += '&device_label=${_filters.labelID}';
}
if (_filters.hospital != '') {
url += '&medicalCenter_id=${_filters.hospital}';
}
if (_filters.testType != '') {
url += '&testType_id=${_filters.testType}';
}
if (_filters.userName != '') {
url += '&user_name=${_filters.userName}';
}
if (_filters.fDate != '') {
url += '&fromPicker=${_filters.fDate}';
}
if (_filters.uDate != '') {
url += '&upToPicker=${_filters.uDate}';
}
print(url);
}
//'device_id=3526&testType_id=107&medicalCenter_id=2&user_name=erfan&fromPicker=2020-05-12&upToPicker=2020-05-19&device_label=Instrument%20ID&page=1'
var response = await http.get(
url,
headers: {
'Authorization': User.token,
},
);
var testResultData = json.decode(response.body);
if (pageNumber == 1) {
originalItems = [];
items = [];
}
for (var item in testResultData['data']['data']) {
originalItems.add(
TestResultObject(
id: item['id'].toString(),
name: item['test_type']['name'],
deviceId: item['device_id'].toString(),
result: item['verified'] == 'Verified' ? 'Verified' : 'Not Verified',
date: item['date'],
hospital: item['user']['medical_center']['name'],
),
);
}
pageNumber += 1;
search('');
notifyListeners();
}
static Future<void> updateTestResult(String id, values) async {
var response = await http.post(
Url.updateTestResult(id),
body: json.encode(values),
headers: {
'Authorization': User.token,
'X-Requested-With': 'XMLHttpRequest',
"Content-Type": "application/json",
"Accept": "application/json"
},
);
print(response.body);
}
static Future<void> createTestResult(values) async {
var response = await http
.post(Url.createTestResult, body: json.encode(values), headers: {
'Authorization': User.token,
'X-Requested-With': 'XMLHttpRequest',
"Content-Type": "application/json",
"Accept": "application/json"
});
print(response.body);
}
Future<Map<String, dynamic>> showTestResult(String id) async {
var response = await http.get(Url.getTestResult(id), headers: {
'Authorization': User.token,
});
var data = json.decode(response.body)['data'];
// print(data);
result = {
'id': data['id'],
'auto_cleave_id': data['inputs']['Autoclave ID'] != null
? data['inputs']['Autoclave ID']
: '',
'test_code': data['test_type_id'] != null ? data['test_type_id'] : '',
'date': data['created_at'] != null ? data['created_at'] : '',
'verified': data['verified'] != null ? data['verified'] : '',
'description':
data['inputs']['Note'] != null ? data['inputs']['Note'] : '',
'test_type_name':
data['test_type']['name'] != null ? data['test_type']['name'] : '',
};
return result;
}
Future<bool> removeTestResult(String id) async {
var response = await http.post(Url.removeTestResult(id), body: {
'_method': 'delete'
}, headers: {
'Authorization': User.token,
});
if (response.statusCode == 200) {
items.removeWhere((item) {
return item.id.toString() == id;
});
}
notifyListeners();
return true;
}
}