mirror of
https://git.meshkee.com/applications/cssd.git
synced 2026-10-12 13:38:56 +03:30
beta commit
This commit is contained in:
+255
-249
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
@@ -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 {};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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!;
|
||||
}
|
||||
}
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 '';
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user