beta commit

This commit is contained in:
Odein
2023-10-26 15:04:34 +04:30
parent ddc5649b1c
commit 11f910bb1c
262 changed files with 31865 additions and 15718 deletions
+255 -249
View File
@@ -1,249 +1,255 @@
import 'dart:convert';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:shared_preferences/shared_preferences.dart';
import '../config/urls.dart';
import '../config/user.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> requestCode(String cellNumber) async {
final response = await http.post(
Uri.parse(Url.requestResetPass),
body: {
'cell_number': cellNumber,
},
// headers: {'X-Requested-With': 'XMLHttpRequest'},
);
final responseData = json.decode(response.body);
if (responseData['status'] == 'Faild') {
return 'NotUser';
} else {
return 'Done';
}
// print(responseData);
}
Future<String> sendCode(String code) async {
final response = await http.post(
Uri.parse(Url.verifyResetPass),
body: {
'code': code,
},
// headers: {'X-Requested-With': 'XMLHttpRequest'},
);
final responseData = json.decode(response.body);
// if (responseData['status']=='Faild') {
// return 'NotUser';
// } else {
// return 'Done';
// }
print(responseData);
if (responseData['status'] == 'Faild') {
return 'wrong';
} else {
return responseData['access_token'];
}
}
Future<String> sendRePass(String password, String token) async {
print(password);
print(token);
final response = await http.post(
Uri.parse(Url.sendResetPass),
body: {
'password': password,
'password_confirmation': password,
},
headers: {'Authorization': token, 'X-Requested-With': 'XMLHttpRequest'},
// headers: {'X-Requested-With': 'XMLHttpRequest'},
);
final responseData = json.decode(response.body);
// if (responseData['status']=='Faild') {
// return 'NotUser';
// } else {
// return 'Done';
// }
print(responseData);
if (responseData['status'] == 'Success') {
return 'done';
} else {
return 'error';
}
}
Future<String> login(String cellNumber, String password) async {
final response = await http.post(
Uri.parse(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(
Uri.parse(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(
Uri.parse('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();
}
}
import 'dart:convert';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:shared_preferences/shared_preferences.dart';
import '../config/urls.dart';
import '../config/user.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> requestCode(String cellNumber) async {
final response = await http.post(
Uri.parse(Url.requestResetPass),
body: {
'cell_number': cellNumber,
},
// headers: {'X-Requested-With': 'XMLHttpRequest'},
);
final responseData = json.decode(response.body);
if (responseData['status'] == 'Faild') {
return 'NotUser';
} else {
return 'Done';
}
// print(responseData);
}
Future<String> sendCode(String code) async {
final response = await http.post(
Uri.parse(Url.verifyResetPass),
body: {
'code': code,
},
// headers: {'X-Requested-With': 'XMLHttpRequest'},
);
final responseData = json.decode(response.body);
// if (responseData['status']=='Faild') {
// return 'NotUser';
// } else {
// return 'Done';
// }
print(responseData);
if (responseData['status'] == 'Faild') {
return 'wrong';
} else {
return responseData['access_token'];
}
}
Future<String> sendRePass(String password, String token) async {
print(password);
print(token);
final response = await http.post(
Uri.parse(Url.sendResetPass),
body: {
'password': password,
'password_confirmation': password,
},
headers: {'Authorization': token, 'X-Requested-With': 'XMLHttpRequest'},
// headers: {'X-Requested-With': 'XMLHttpRequest'},
);
final responseData = json.decode(response.body);
// if (responseData['status']=='Faild') {
// return 'NotUser';
// } else {
// return 'Done';
// }
print(responseData);
if (responseData['status'] == 'Success') {
return 'done';
} else {
return 'error';
}
}
Future<String> login(String cellNumber, String password) async {
final response = await http.post(
Uri.parse(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, dynamic>;
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(
Uri.parse(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(
Uri.parse('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 = '';
final prefs = await SharedPreferences.getInstance();
prefs.remove('userData');
var response = await http.post(
Uri.parse(
Url.logOut,
),
);
print(response.statusCode);
notifyListeners();
}
}
+32 -31
View File
@@ -1,31 +1,32 @@
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;
}
}
}
import 'package:flutter/material.dart';
import 'package:connectivity/connectivity.dart';
enum ConnectionStatus {
Wifi,
Cellular,
Offline,
}
class ConnectivityProvider extends ChangeNotifier {
String conStatus = '';
void checkConnection() {
Connectivity().onConnectivityChanged.listen((ConnectivityResult? result) {
conStatus = _getStatus(result);
notifyListeners();
});
}
String _getStatus(ConnectivityResult? result) {
switch (result) {
case ConnectivityResult.wifi:
return 'wifi';
case ConnectivityResult.mobile:
return 'cellular';
case ConnectivityResult.none:
return 'offline';
default:
return 'offline';
}
}
}
+310 -265
View File
@@ -1,265 +1,310 @@
import 'dart:convert';
import '../config/urls.dart';
import '../config/user.dart';
import '../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(
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['name']);
}
return result;
}
Future<List<String>> getLabelFilters() async {
var response = await http.get(
Uri.parse(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(Uri.parse(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(
Uri.parse(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(Uri.parse(Url.getCycleResult(id)), headers: {
'Authorization': User.token,
});
if (response.statusCode != 200) {
return CycleDetailObject(
id: 'null',
description: 'null',
createDate: 'null',
hospitalName: '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());
}
print(data);
result = CycleDetailObject(
id: data['id'].toString(),
description: data['note'] != null ? data['note'] : '',
createDate: data['created_at'] != null ? data['created_at'] : '',
hospitalName: data['user']['medical_center']['name'],
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;
}
}
import 'dart:convert';
import '../config/urls.dart';
import '../config/user.dart';
import '../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;
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(
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['name']);
}
return result;
}
Future<List<String>> getLabelFilters() async {
var response = await http.get(
Uri.parse(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(Uri.parse(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);
}
Future<void> updateCycleResult(
id,
sterilizerId,
cycleNumber,
// label,
date,
description,
) async {
var response = await http.put(Uri.parse(Url.updateCycleResult(id)),
body: json.encode(
{
'sterilizer_id': sterilizerId,
'cycle_number': cycleNumber,
'note': description,
// 'label_id': label['id'].toString(),
'date': date,
},
),
headers: {
'Authorization': User.token,
'X-Requested-With': 'XMLHttpRequest',
"Content-Type": "application/json",
"Accept": "application/json"
});
print(response.body);
}
Future<bool> removeCycles(String id) async {
var response = await http.post(Uri.parse(Url.removeCycles(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, 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(
Uri.parse(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(Uri.parse(Url.getCycleResult(id)), headers: {
'Authorization': User.token,
});
if (response.statusCode != 200) {
return CycleDetailObject(
id: 'null',
description: 'null',
createDate: 'null',
hospitalName: '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());
}
print(data);
result = CycleDetailObject(
id: data['id'].toString(),
description: data['note'] != null ? data['note'] : '',
createDate: data['created_at'] != null ? data['created_at'] : '',
hospitalName: data['user']['medical_center']['name'],
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!;
}
}
+122 -134
View File
@@ -1,134 +1,122 @@
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import '../config/urls.dart';
import '../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(
Uri.parse(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['data']['inputs']);
// for (var item in responseData['data']['testType'].keys) {
// print(item);
// }
Map<String, dynamic> values;
if (testResultId.isNotEmpty) {
response = await http.get(Uri.parse(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']
});
// print(responseData['data']['inputs']);
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>);
// print(input);
}
inputItems.add({
'type': 'Image',
'key': 'test_type_id',
'name': general['name'],
'value': general['id']
});
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();
}
}
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import '../config/urls.dart';
import '../config/user.dart';
class Inputs with ChangeNotifier {
List<Map<String, dynamic>> inputItems = [];
Future<bool> getInputs({
required String testResultId,
required String name,
required String uniqueCode,
required String testTypeId,
}) async {
var response = await http.post(
Uri.parse(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);
Map<String, dynamic>? values;
if (testResultId.isNotEmpty) {
response = await http.get(
Uri.parse(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>);
}
inputItems.add({
'type': 'Image',
'key': 'test_type_id',
'name': general['name'],
'value': general['id']
});
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();
}
}
+346
View File
@@ -0,0 +1,346 @@
import 'dart:convert';
import 'package:cssd/models/item_model.dart';
import 'package:cssd/models/my_item_model.dart';
import 'package:dio/dio.dart';
import 'package:file_picker/file_picker.dart';
import 'package:flutter/foundation.dart';
import 'package:random_string/random_string.dart';
import '../config/urls.dart';
import '../config/user.dart';
import 'package:http/http.dart' as http;
class ItemProvider extends ChangeNotifier {
List<PlatformFile> catchImages = [];
List<Uint8List> images = [];
String searchBoxValue = '';
bool filterOn = false;
List<ItemResultObject>? items;
List<ItemResultObject>? originalItems;
ItemDetailObject? result;
ItemFilterObject? filters = ItemFilterObject(
id: '',
hospital: '',
name: '',
udi: '',
size: '',
specific: '',
);
MyItemFilterObject? myItemsFilters = MyItemFilterObject(
id: '',
name: '',
udi: '',
size: '',
specific: '',
);
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 filterData = json.decode(response.body);
for (var hospital in filterData['data']['MedicalCenters']) {
result.add({
'name': hospital['name'].toString(),
'id': hospital['id'].toString()
});
// print(hospital['name']);
}
return result;
}
setImages() async {
images = [];
for (var image in catchImages) {
var result = image.bytes;
// final batchId = randomString(10);
// addImage(batchId, result, image.path);
images.add(result!.buffer
.asUint8List(result.offsetInBytes, result.lengthInBytes));
}
notifyListeners();
}
setCatchImages(List<PlatformFile> images) {
catchImages = images;
notifyListeners();
}
removeImage(int index) {
catchImages.removeAt(index);
notifyListeners();
}
Future<String> addImage(String batchId, dynamic file, String fileName) async {
var imageListInt = file.cast<int>();
var dio = Dio();
dio.options.headers = {
'Authorization': User.token,
'X-Requested-With': 'XMLHttpRequest',
'Content-Type': 'application/json',
};
FormData formData = FormData.fromMap(
{
"batch_id": batchId,
'model_type': 'Item',
"file": MultipartFile.fromBytes(imageListInt, filename: fileName)
},
);
await dio.post(
Url.addImage,
data: formData,
);
return 'Added';
}
Future<void> createItemResult(
name,
size,
specific,
udi,
note,
batchId,
) async {
batchId = randomString(10);
for (var image in catchImages) {
await addImage(batchId, image.bytes, image.path!);
}
var response = await http.post(Uri.parse(Url.createItemResult),
body: json.encode(
{
'note': note,
'size': size,
'specific': specific,
'name': name,
'udi': udi,
'file_batch_id': batchId,
},
),
headers: {
'Authorization': User.token,
'X-Requested-With': 'XMLHttpRequest',
"Content-Type": "application/json",
"Accept": "application/json"
});
print(response.body);
}
Future<void> updateItemResult(
id,
name,
size,
specific,
udi,
description,
) async {
var response = await http.put(Uri.parse(Url.updateItemResult(id)),
body: json.encode(
{
'name': name,
'udi': udi,
'note': description,
'size': size,
'specific': specific,
},
),
headers: {
'Authorization': User.token,
'X-Requested-With': 'XMLHttpRequest',
"Content-Type": "application/json",
"Accept": "application/json"
});
print(response.body);
}
Future<bool> removeItems(String id) async {
var response = await http.post(Uri.parse(Url.removeItems(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,
udi,
hospital,
size,
specific,
) {
pageNumber = 1;
filters = ItemFilterObject(
id: id,
name: name,
udi: udi,
hospital: hospital,
size: size,
specific: specific,
);
if (filters!.id == '' &&
filters!.name == '' &&
filters!.hospital == '' &&
filters!.size == '' &&
filters!.specific != '' &&
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<void> getItemResults() async {
String url = Url.itemResults(pageNumber);
if (filterOn) {
if (filters!.id != '') {
url += '&item_id=${filters!.id}';
}
if (filters!.name != '') {
url += '&name=${filters!.name}';
}
if (filters!.hospital != '') {
url += '&medical_center_id=${filters!.hospital}';
}
if (filters!.size != '') {
url += '&size=${filters!.size}';
}
if (filters!.specific != '') {
url += '&specific=${filters!.specific}';
}
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(
ItemResultObject(
name: item['name'],
id: item['id'].toString(),
size: item['size'].toString(),
userName: item['user'] != null ? item['user']['name'] : '',
status: item['status'],
),
);
}
pageNumber += 1;
search('');
}
Future<ItemDetailObject> showItemResult(String id) async {
var response = await http.get(Uri.parse(Url.getItemResult(id)), headers: {
'Authorization': User.token,
});
if (response.statusCode != 200) {
return ItemDetailObject(
id: 'null',
description: 'null',
name: 'null',
userName: 'null',
specific: 'null',
hospital: 'null',
size: 'null',
createdAt: '2019-09-18 10:02:03',
udi: 'null',
status: 0,
);
}
var data = json.decode(response.body)['data'];
print(data);
result = ItemDetailObject(
id: data['id'].toString(),
description: data['note'] != null ? data['note'] : '',
name: data['name'] != null ? data['name'] : '',
hospital:
data['user'] != null ? data['user']['medical_center']['name'] : '',
userName: data['user'] != null ? data['user']['name'] : '',
size: data['size'] != null ? data['size'] : '',
specific: data['specific'] != null ? data['specific'] : '',
createdAt: data['created_at'] != null ? data['created_at'] : '',
udi: data['udi'] != null ? data['udi'] : '',
status: data['status'],
);
return result!;
}
Future<bool> changeStatus(String id) async {
print(id);
var response = await http.post(
Uri.parse(Url.changeItemStatus(id)),
headers: {
'Authorization': User.token,
'X-Requested-With': 'XMLHttpRequest',
"Content-Type": "application/json",
"Accept": "application/json"
},
);
var itemData = json.decode(response.body);
try {
if (itemData['status'] == 'Success') {
return true;
} else {
return false;
}
} catch (e) {
return false;
}
}
}
+304 -257
View File
@@ -1,257 +1,304 @@
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;
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<Map<String, String>>> getPackageFilters() async {
var response = await http.get(
Uri.parse(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(Uri.parse(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);
}
Future<void> updateLabelResult(
id,
lotNumber,
cycleNumber,
sterileDate,
package,
expireDate,
sterilizerId,
) async {
// print(labs);
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);
}
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;
}
}
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['udi'] != null ? package['udi'] : ''}");
}
packageVals = result;
initialPackageValue = packageVals[0];
TextEditingController newLbl = new TextEditingController();
newLbl.text = initialPackageValue;
packageValues.add(newLbl);
notifyListeners();
return result;
}
Future<void> createLabelResult(lotNumber, cycleNumber, sterileDate, package,
expireDate, sterilizerId) async {
// print(labs);
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': package['id']
},
),
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!;
}
}
+58 -59
View File
@@ -1,59 +1,58 @@
import 'dart:convert';
import 'package:http/http.dart' as http;
import '../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(
Uri.parse(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 {};
}
}
}
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:shared_preferences/shared_preferences.dart';
import '../config/urls.dart';
class MyInfoProvider with 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;
}
final auth = json.decode(prefs.getString('auth')!) as Map<String, dynamic>;
_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, dynamic>;
_token = auth['token'];
final response = await http.get(
Uri.parse(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 {};
}
}
}
+274
View File
@@ -0,0 +1,274 @@
import 'dart:convert';
import 'package:cssd/models/my_item_model.dart';
import 'package:flutter/foundation.dart';
import '../config/urls.dart';
import '../config/user.dart';
import 'package:http/http.dart' as http;
class MyItemProvider extends ChangeNotifier {
String searchBoxValue = '';
bool filterOn = false;
List<MyItemResultObject>? myItems;
List<MyItemResultObject>? hospitalItems;
List<MyItemResultObject>? originalMyItems;
List<MyItemResultObject>? originalHospitalItems;
List<MyItemResultObject>? originalMyItemsRequests;
List<MyItemResultObject>? originalHospitalItemsRequests;
MyItemFilterObject? filters = MyItemFilterObject(
id: '',
name: '',
udi: '',
size: '',
specific: '',
);
int pageNumber = 1;
void resetPageNumber() => pageNumber = 1;
bool isloading = false;
void resetLoading() {
isloading = false;
notifyListeners();
}
void setLoading() {
isloading = true;
// notifyListeners();
}
void searchMyItems(String value) {
myItems = [];
searchBoxValue = value;
originalMyItems!.forEach((result) {
if (result.id.toString().contains(searchBoxValue)) {
myItems!.add(result);
}
});
notifyListeners();
}
void searchHospitalItems(String value) {
hospitalItems = [];
searchBoxValue = value;
originalHospitalItems!.forEach((result) {
if (result.id.toString().contains(searchBoxValue)) {
hospitalItems!.add(result);
}
});
notifyListeners();
}
void setFilters(
id,
name,
udi,
size,
specific,
) {
pageNumber = 1;
filters = MyItemFilterObject(
id: id,
name: name,
udi: udi,
size: size,
specific: specific,
);
if (filters!.id == '' &&
filters!.name == '' &&
filters!.size == '' &&
filters!.specific != '' &&
filters!.udi == '') {
filterOn = false;
} else {
filterOn = true;
}
notifyListeners();
}
Future<void> getMyItems() async {
String url = Url.getMyItems(pageNumber);
if (filterOn) {
if (filters!.id != '') {
url += '&item_id=${filters!.id}';
}
if (filters!.name != '') {
url += '&name=${filters!.name}';
}
if (filters!.size != '') {
url += '&size=${filters!.size}';
}
if (filters!.specific != '') {
url += '&specific=${filters!.specific}';
}
if (filters!.udi != '') {
url += '&udi=${filters!.udi}';
}
}
var response = await http.get(
Uri.parse(url),
headers: {'Authorization': User.token, "Accept": "application/json"},
);
var itemsData = json.decode(response.body);
if (pageNumber == 1) {
originalMyItems = [];
}
for (var item in itemsData['data']) {
originalMyItems!.add(
MyItemResultObject(
name: item['name'],
id: item['id'].toString(),
size: item['size'].toString(),
fromDate: item['transfers']['from_date'],
toDate: item['transfers']['to_date'],
),
);
}
pageNumber += 1;
searchMyItems('');
}
Future<void> getHospitalItems() async {
String url = Url.getHospitalItems(pageNumber);
if (filterOn) {
if (filters!.id != '') {
url += '&item_id=${filters!.id}';
}
if (filters!.name != '') {
url += '&name=${filters!.name}';
}
if (filters!.size != '') {
url += '&size=${filters!.size}';
}
if (filters!.specific != '') {
url += '&specific=${filters!.specific}';
}
if (filters!.udi != '') {
url += '&udi=${filters!.udi}';
}
}
var response = await http.get(
Uri.parse(url),
headers: {'Authorization': User.token, "Accept": "application/json"},
);
print(response.body);
print(response.statusCode);
var itemsData = json.decode(response.body);
if (pageNumber == 1) {
originalHospitalItems = [];
}
for (var item in itemsData['data']) {
originalHospitalItems!.add(
MyItemResultObject(
name: item['name'],
id: item['id'].toString(),
size: item['size'].toString(),
userName: item['user'] != null ? item['user']['name'] : '',
// fromDate: item['transfers']['from_date'],
// toDate: item['transfers']['to_date'],
),
);
}
pageNumber += 1;
searchHospitalItems('');
}
Future<void> getMyItemRequests() async {
String url = Url.getMyItemRequests;
var response = await http.get(
Uri.parse(url),
headers: {'Authorization': User.token, "Accept": "application/json"},
);
var itemsData = json.decode(response.body);
originalMyItemsRequests = [];
for (var item in itemsData['data']) {
originalMyItemsRequests!.add(
MyItemResultObject(
name: item['name'],
id: item['id'].toString(),
size: item['size'].toString(),
),
);
}
}
Future<void> getHospitalItemRequests() async {
String url = Url.getHospitalItemRequests;
var response = await http.get(
Uri.parse(url),
headers: {'Authorization': User.token, "Accept": "application/json"},
);
var itemsData = json.decode(response.body);
originalHospitalItemsRequests = [];
for (var item in itemsData['data']) {
originalHospitalItemsRequests!.add(
MyItemResultObject(
name: item['name'],
id: item['id'].toString(),
size: item['size'].toString(),
userName: item['user'] != null ? item['user']['name'] : '',
),
);
}
}
Future<void> transferItems(String itemId, String userId) async {
var response = await http.post(
Uri.parse(Url.transferItems(itemId)),
body: json.encode(
{
'user_id': userId,
},
),
headers: {
'Authorization': User.token,
'X-Requested-With': 'XMLHttpRequest',
"Content-Type": "application/json",
"Accept": "application/json"
},
);
var itemData = json.decode(response.body);
print(itemData);
}
Future<bool> verifyItemRequests(String id, String value) async {
var response = await http.post(
Uri.parse(Url.verifyItemRequests(id, value)),
body: json.encode({'status': value}),
headers: {
'Authorization': User.token,
'X-Requested-With': 'XMLHttpRequest',
"Content-Type": "application/json",
"Accept": "application/json"
},
);
var itemData = json.decode(response.body);
try {
if (itemData['data']['transfers']['status'] == 'approved') {
return true;
} else {
return false;
}
} catch (e) {
return false;
}
}
}
+245
View File
@@ -0,0 +1,245 @@
import 'dart:convert';
import 'package:cssd/models/my_package_model.dart';
import 'package:flutter/foundation.dart';
import '../config/urls.dart';
import '../config/user.dart';
import 'package:http/http.dart' as http;
class MyPackageProvider extends ChangeNotifier {
String searchBoxValue = '';
bool filterOn = false;
List<MyPackageResultObject>? myPackages;
List<MyPackageResultObject>? hospitalPackages;
List<MyPackageResultObject>? originalMyPackages;
List<MyPackageResultObject>? originalHospitalPackages;
List<MyPackageResultObject>? originalMyPackagesRequests;
List<MyPackageResultObject>? originalHospitalPackagesRequests;
MyPackageFilterObject? filters = MyPackageFilterObject(
id: '',
name: '',
udi: '',
);
int pageNumber = 1;
void resetPageNumber() => pageNumber = 1;
bool isloading = false;
void resetLoading() {
isloading = false;
notifyListeners();
}
void setLoading() {
isloading = true;
// notifyListeners();
}
void searchMyPackages(String value) {
myPackages = [];
searchBoxValue = value;
originalMyPackages!.forEach((result) {
if (result.id.toString().contains(searchBoxValue)) {
myPackages!.add(result);
}
});
notifyListeners();
}
void searchHospitalPackages(String value) {
hospitalPackages = [];
searchBoxValue = value;
originalHospitalPackages!.forEach((result) {
if (result.id.toString().contains(searchBoxValue)) {
hospitalPackages!.add(result);
}
});
notifyListeners();
}
void setFilters(
id,
name,
udi,
) {
pageNumber = 1;
filters = MyPackageFilterObject(
id: id,
name: name,
udi: udi,
);
if (filters!.id == '' && filters!.name == '' && filters!.udi == '') {
filterOn = false;
} else {
filterOn = true;
}
notifyListeners();
}
Future<void> getMyPackages() async {
String url = Url.getMyItems(pageNumber);
if (filterOn) {
if (filters!.id != '') {
url += '&package_id=${filters!.id}';
}
if (filters!.name != '') {
url += '&name=${filters!.name}';
}
if (filters!.udi != '') {
url += '&udi=${filters!.udi}';
}
}
var response = await http.get(
Uri.parse(url),
headers: {'Authorization': User.token, "Accept": "application/json"},
);
var packagesData = json.decode(response.body);
if (pageNumber == 1) {
originalMyPackages = [];
}
for (var package in packagesData['data']) {
originalMyPackages!.add(
MyPackageResultObject(
name: package['name'],
id: package['id'].toString(),
fromDate: package['transfers']['from_date'],
toDate: package['transfers']['to_date'],
),
);
}
pageNumber += 1;
searchMyPackages('');
}
Future<void> getHospitalPackages() async {
String url = Url.getHospitalItems(pageNumber);
if (filterOn) {
if (filters!.id != '') {
url += '&package_id=${filters!.id}';
}
if (filters!.name != '') {
url += '&name=${filters!.name}';
}
if (filters!.udi != '') {
url += '&udi=${filters!.udi}';
}
}
var response = await http.get(
Uri.parse(url),
headers: {'Authorization': User.token, "Accept": "application/json"},
);
var packagesData = json.decode(response.body);
if (pageNumber == 1) {
originalHospitalPackages = [];
}
for (var package in packagesData['data']) {
originalHospitalPackages!.add(
MyPackageResultObject(
name: package['name'],
id: package['id'].toString(),
userName: package['user'] != null ? package['user']['name'] : '',
fromDate: package['transfers']['from_date'],
toDate: package['transfers']['to_date'],
),
);
}
pageNumber += 1;
searchHospitalPackages('');
}
Future<void> getMyPackageRequests() async {
String url = Url.getMyItemRequests;
var response = await http.get(
Uri.parse(url),
headers: {'Authorization': User.token, "Accept": "application/json"},
);
var packagesData = json.decode(response.body);
originalMyPackagesRequests = [];
for (var package in packagesData['data']) {
originalMyPackagesRequests!.add(
MyPackageResultObject(
name: package['name'],
id: package['id'].toString(),
),
);
}
}
Future<void> getHospitalPackageRequests() async {
String url = Url.getHospitalItemRequests;
var response = await http.get(
Uri.parse(url),
headers: {'Authorization': User.token, "Accept": "application/json"},
);
var packagesData = json.decode(response.body);
originalHospitalPackagesRequests = [];
for (var package in packagesData['data']) {
originalHospitalPackagesRequests!.add(
MyPackageResultObject(
name: package['name'],
id: package['id'].toString(),
userName: package['user'] != null ? package['user']['name'] : '',
),
);
}
}
Future<void> transferPackage(String packageId, String userId) async {
var response = await http.post(
Uri.parse(Url.transferItems(packageId)),
body: json.encode(
{
'user_id': userId,
},
),
headers: {
'Authorization': User.token,
'X-Requested-With': 'XMLHttpRequest',
"Content-Type": "application/json",
"Accept": "application/json"
},
);
var packageData = json.decode(response.body);
print(packageData);
}
Future<bool> verifyPackageRequests(String id, String value) async {
var response = await http.post(
Uri.parse(Url.verifyItemRequests(id, value)),
body: json.encode({'status': value}),
headers: {
'Authorization': User.token,
'X-Requested-With': 'XMLHttpRequest',
"Content-Type": "application/json",
"Accept": "application/json"
},
);
var packageData = json.decode(response.body);
try {
if (packageData['data']['transfers']['status'] == 'approved') {
return true;
} else {
return false;
}
} catch (e) {
return false;
}
}
}
+295
View File
@@ -0,0 +1,295 @@
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<String> itemVals = [];
List<TextEditingController> 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<PackageResultObject>? items;
List<PackageResultObject>? 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<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 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<List<String>> getItemFilters() async {
var response = await http.get(
Uri.parse(Url.itemItems),
headers: {
'Authorization': User.token,
},
);
List<String> 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<void> createPackageResult(
name,
udi,
items,
note,
) async {
List<Map<String, Object>> 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<void> updatePackageResult(
id,
name,
udi,
description,
items,
) async {
// List<Map<String, Object>> 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<bool> 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<void> 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<PackageDetailObject> 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<String> 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!;
}
}
-38
View File
@@ -1,38 +0,0 @@
import '../config/urls.dart';
import '../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(
Uri.parse(Url.verifyTest(id)), headers: {
'Authorization': User.token
}
);
if (response.statusCode == 200) {
result = result == 'Verified' ? 'NotVerified' : 'Verified';
notifyListeners();
}
}
}
+373 -375
View File
@@ -1,375 +1,373 @@
import 'dart:convert';
import 'dart:typed_data';
// import 'dart:typed_data';
import 'package:dio/dio.dart' as di;
import 'package:cssd/config/urls.dart';
import 'package:cssd/config/user.dart';
import 'package:cssd/models/test_result_models.dart';
import 'package:file_picker/file_picker.dart';
// import 'package:cssd/providers/test_result.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:random_string/random_string.dart';
// import 'package:multi_image_picker/multi_image_picker.dart';
class TestResultsProvider with ChangeNotifier {
List<PlatformFile> catchImages = [];
List<Uint8List> images = [];
setImages() async {
images = [];
for (var image in catchImages) {
var result = image.bytes;
// final batchId = randomString(10);
// addImage(batchId, result, image.path);
images.add(result.buffer
.asUint8List(result.offsetInBytes, result.lengthInBytes));
}
notifyListeners();
}
setCatchImages(List<PlatformFile> images) {
catchImages = images;
notifyListeners();
}
removeImage(int index) {
catchImages.removeAt(index);
notifyListeners();
}
// Future<String> addImage() async {
// Map<dynamic, dynamic> imgs = {};
// var counter = 0;
// for (var image in images) {
// imgs[counter.toString()] =
// di.MultipartFile.fromBytes(image, filename: 'test$counter.jpg');
// counter += 1;
// }
// return 'True';
// }
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(
Uri.parse(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(
Uri.parse(url),
headers: {
'Authorization': User.token,
// 'X-Requested-With': 'XMLHttpRequest',
},
);
var testResultData = json.decode(response.body);
if (pageNumber == 1) {
originalItems = [];
items = [];
}
for (var item in testResultData['data']['data']) {
print(item);
originalItems.add(
TestResultObject(
id: item['id'].toString(),
name: item['test_type'] != null ? item['test_type']['name'] : '',
deviceId: item['device_id'].toString(),
result: item['result'] == 'Accept' ? 'Accepted' : 'Not Accepted',
date: item['created_at'].toString().substring(0, 10),
hospital: item['user']['medical_center']['name'],
verified: item['verified'].toString(),
),
);
}
pageNumber += 1;
search('');
notifyListeners();
}
static Future<void> updateTestResult(String id, values) async {
var response = await http.post(
Uri.parse(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);
}
Future<String> addImage(String batchId, dynamic file, String fileName) async {
var imageListInt = file.cast<int>();
var dio = new di.Dio();
dio.options.headers = {
'Authorization': User.token,
'X-Requested-With': 'XMLHttpRequest',
'Content-Type': 'application/json',
};
di.FormData formData = new di.FormData.fromMap({
"batch_id": batchId,
'model_type': 'TestResult',
"file": di.MultipartFile.fromBytes(imageListInt, filename: fileName)
});
await dio.post(
Url.addImage,
data: formData,
);
// print(response.statusCode);
// print(response.statusMessage);
// print(response.data);
return 'Added';
}
Future<String> createTestResult(values, batchId) async {
final batchId = randomString(10);
for (var image in catchImages) {
await addImage(batchId, image.bytes, image.path);
}
dynamic vals = values;
vals['file_batch_id'] = batchId;
// int counter = 0;
// if (images.length != 0) {
// for (var image in images) {
// vals['imgs'][counter.toString()] = base64Encode(
// image,
// );
// counter += 1;
// }
// }
var dio = new di.Dio();
dio.options.headers = {
'Authorization': User.token,
// 'X-Requested-With': 'XMLHttpRequest'
};
var response = await dio.post(
Url.createTestResult,
data: vals,
);
print(response.data);
if (response.data['status'] == 'Success') {
catchImages = [];
return 'done';
} else {
return 'error';
}
// 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(Uri.parse(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'] : '',
'accepted': originalItems
.firstWhere((element) => element.id == data['id'].toString())
.result, //az api safheye asli estefade mishavad
'description':
data['inputs']['Note'] != null ? data['inputs']['Note'] : '',
'test_type_name':
data['test_type']['name'] != null ? data['test_type']['name'] : '',
'hospital': originalItems
.firstWhere((element) => element.id == data['id'].toString())
.hospital // az api safheye asli estefade mi shavad
};
return result;
}
Future<bool> removeTestResult(String id) async {
var response = await http.post(Uri.parse(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;
}
Future<bool> changeVerification(String id, String value) async {
print(id);
print(value);
var response = await http.post(
Uri.parse(Url.testResultVerification(id, value)),
headers: {
'Authorization': User.token,
'X-Requested-With': 'XMLHttpRequest',
"Content-Type": "application/json",
"Accept": "application/json"
},
);
var testResultData = json.decode(response.body);
// print(response.body);
try {
if (testResultData['status'] == 'Success') {
return true;
} else {
return false;
}
} catch (e) {}
return false;
}
}
import 'dart:convert';
import 'dart:typed_data';
// import 'dart:typed_data';
import 'package:dio/dio.dart' as di;
import 'package:cssd/config/urls.dart';
import 'package:cssd/config/user.dart';
import 'package:cssd/models/test_result_models.dart';
import 'package:file_picker/file_picker.dart';
// import 'package:cssd/providers/test_result.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:random_string/random_string.dart';
// import 'package:multi_image_picker/multi_image_picker.dart';
class TestResultsProvider with ChangeNotifier {
List<PlatformFile> catchImages = [];
List<Uint8List> images = [];
String testType = '';
String testCode = '';
setImages() async {
images = [];
for (var image in catchImages) {
var result = image.bytes;
// final batchId = randomString(10);
// addImage(batchId, result, image.path);
images.add(result!.buffer
.asUint8List(result.offsetInBytes, result.lengthInBytes));
}
notifyListeners();
}
setCatchImages(List<PlatformFile> images) {
catchImages = images;
notifyListeners();
}
removeImage(int index) {
catchImages.removeAt(index);
notifyListeners();
}
// Future<String> addImage() async {
// Map<dynamic, dynamic> imgs = {};
// var counter = 0;
// for (var image in images) {
// imgs[counter.toString()] =
// di.MultipartFile.fromBytes(image, filename: 'test$counter.jpg');
// counter += 1;
// }
// return 'True';
// }
String searchBoxValue = '';
bool filterOn = false;
List<TestResultObject>? items;
List<TestResultObject>? originalItems;
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(
Uri.parse(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(
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(
TestResultObject(
id: item['id'].toString(),
name: item['test_type'] != null ? item['test_type']['name'] : '',
deviceId: item['device_id'].toString(),
result: item['result'] == 'Accept' ? 'Accepted' : 'Not Accepted',
date: item['created_at'].toString().substring(0, 10),
hospital: item['user']['medical_center']['name'],
verified: item['verified'].toString(),
),
);
}
pageNumber += 1;
search('');
notifyListeners();
}
static Future<void> updateTestResult(String id, values) async {
var response = await http.post(
Uri.parse(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);
}
Future<String> addImage(String batchId, dynamic file, String fileName) async {
var imageListInt = file.cast<int>();
var dio = new di.Dio();
dio.options.headers = {
'Authorization': User.token,
'X-Requested-With': 'XMLHttpRequest',
'Content-Type': 'application/json',
};
di.FormData formData = new di.FormData.fromMap({
"batch_id": batchId,
'model_type': 'TestResult',
"file": di.MultipartFile.fromBytes(imageListInt, filename: fileName)
});
await dio.post(
Url.addImage,
data: formData,
);
// print(response.statusCode);
// print(response.statusMessage);
// print(response.data);
return 'Added';
}
Future<String> createTestResult(values, batchId) async {
final batchId = randomString(10);
for (var image in catchImages) {
await addImage(batchId, image.bytes, image.path!);
}
dynamic vals = values;
vals['file_batch_id'] = batchId;
// int counter = 0;
// if (images.length != 0) {
// for (var image in images) {
// vals['imgs'][counter.toString()] = base64Encode(
// image,
// );
// counter += 1;
// }
// }
var dio = new di.Dio();
dio.options.headers = {
'Authorization': User.token,
// 'X-Requested-With': 'XMLHttpRequest'
};
var response = await dio.post(
Url.createTestResult,
data: vals,
);
print(response.data);
if (response.data['status'] == 'Success') {
catchImages = [];
return 'done';
} else {
return 'error';
}
// 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(Uri.parse(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'] : '',
'accepted': originalItems!
.firstWhere((element) => element.id == data['id'].toString())
.result, //az api safheye asli estefade mishavad
'description':
data['inputs']['Note'] != null ? data['inputs']['Note'] : '',
'test_type_name':
data['test_type']['name'] != null ? data['test_type']['name'] : '',
'hospital': originalItems!
.firstWhere((element) => element.id == data['id'].toString())
.hospital // az api safheye asli estefade mi shavad
};
return result!;
}
Future<bool> removeTestResult(String id) async {
var response = await http.post(Uri.parse(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;
}
Future<bool> changeVerification(String id, String value) async {
print(id);
print(value);
var response = await http.post(
Uri.parse(Url.testResultVerification(id, value)),
headers: {
'Authorization': User.token,
'X-Requested-With': 'XMLHttpRequest',
"Content-Type": "application/json",
"Accept": "application/json"
},
);
var testResultData = json.decode(response.body);
// print(response.body);
try {
if (testResultData['status'] == 'Success') {
return true;
} else {
return false;
}
} catch (e) {}
return false;
}
}
+85
View File
@@ -0,0 +1,85 @@
import 'dart:convert';
import 'package:cssd/config/urls.dart';
import 'package:cssd/config/user.dart';
import 'package:cssd/models/users_model.dart';
import 'package:flutter/foundation.dart';
import 'package:http/http.dart' as http;
class UsersProvider extends ChangeNotifier {
String searchBoxValue = '';
List<Users>? usersBox;
List<Users>? originalUsersBox;
String? medicalCenterId;
int? selectedUserIndex;
String? saveUserId;
bool isLoading = false;
void resetLoading() {
isLoading = false;
notifyListeners();
}
void setLoading() {
isLoading = true;
}
void selectUser(int index) {
selectedUserIndex = index;
notifyListeners();
}
void searchUsers(String value) {
usersBox = [];
searchBoxValue = value;
originalUsersBox!.forEach((result) {
if (result.id.toString().contains(searchBoxValue) ||
result.userName.toString().contains(searchBoxValue)) {
usersBox!.add(result);
}
});
notifyListeners();
}
Future<void> getUsers(String medicalCenterId) async {
String url = Url.getUsers(medicalCenterId);
var response = await http.get(
Uri.parse(url),
headers: {'Authorization': User.token, "Accept": "application/json"},
);
var usersData = json.decode(response.body);
originalUsersBox = [];
for (var user in usersData['data']['data']) {
originalUsersBox!.add(
Users(
userName: user['name'],
id: user['id'].toString(),
phoneNumber: user['cell_number'].toString(),
),
);
}
}
Future<String?> getUserMedicalCenter() async {
final response = await http.get(
Uri.parse(Url.getUserInfo),
headers: {'Authorization': User.token},
);
if (response.statusCode == 200) {
var data = json.decode(response.body)['data'];
medicalCenterId = data['user']['medical_center_id'].toString();
notifyListeners();
return medicalCenterId;
} else {
return '';
}
}
}