mirror of
https://git.meshkee.com/applications/cssd.git
synced 2026-10-13 05:48:54 +03:30
commit
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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 {};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user