Files

351 lines
9.0 KiB
Dart
Executable File

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;
List<ItemHistoryObject>? itemHistory;
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();
}
Future<void> searchMyItems(String value) async {
myItems = [];
searchBoxValue = value;
var response = await http.get(
Uri.parse(Url.searchMyItems(value)),
headers: {'Authorization': User.token, "Accept": "application/json"},
);
var itemsData = json.decode(response.body);
for (var item in itemsData['data']) {
myItems!.add(
MyItemResultObject(
name: item['name'],
id: item['id'].toString(),
size: item['size'].toString(),
udi: item['udi'],
userName: item['user'] != null ? item['user']['name'] : '',
),
);
}
resetLoading();
notifyListeners();
}
// void searchHospitalItems(String value) {
// hospitalItems = [];
// searchBoxValue = value;
// originalHospitalItems!.forEach((result) {
// if (result.udi.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(),
udi: item['udi'],
userName: item['user'] != null ? item['user']['name'] : '',
),
);
}
myItems = originalMyItems;
pageNumber += 1;
notifyListeners();
}
// 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"},
// );
// var itemsData = json.decode(response.body);
// if (pageNumber == 1) {
// originalHospitalItems = [];
// }
// for (var item in itemsData['data']['data']) {
// originalHospitalItems!.add(
// MyItemResultObject(
// name: item['name'],
// id: item['id'].toString(),
// size: item['size'].toString(),
// userName: item['user'] != null ? item['user']['name'] : '',
// udi: item['udi'],
// ),
// );
// }
// pageNumber += 1;
// searchHospitalItems('');
// }
Future<void> getItemsHistory(String id) async {
String url = Url.getItemResult(id);
var response = await http.get(
Uri.parse(url),
headers: {'Authorization': User.token, "Accept": "application/json"},
);
var itemsData = json.decode(response.body)['data'];
itemHistory = [];
for (var transfer in itemsData['transfers']) {
itemHistory!.add(
ItemHistoryObject(
fromDate: transfer['from_date'] != null
? transfer['from_date'].toString()
: '',
toDate: transfer['to_date'] != null
? transfer['to_date'].toString()
: 'Now',
userHistoryName: transfer['user']['name'].toString(),
userHistoryId: transfer['user']['id'].toString(),
userHistoryPhon: transfer['user']['cell_number'].toString(),
userTransferName: transfer['userTransfer'] != null
? transfer['userTransfer']['name'].toString()
: null,
),
);
}
}
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['transferable']['name'],
id: item['transferable']['id'].toString(),
size: item['transferable']['size'].toString(),
requestId: item['id'].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);
// print(itemsData);
// originalHospitalItemsRequests = [];
// for (var item in itemsData['data']) {
// originalHospitalItemsRequests!.add(
// MyItemResultObject(
// name: item['transferable']['name'].toString(),
// id: item['transferable']['id'].toString(),
// size: item['transferable']['size'].toString(),
// userName: item['user'] != null ? item['user']['name'] : '',
// requestId: item['id'].toString(),
// ),
// );
// }
// }
bool isloadingButton = false;
void resetLoadingButton() {
isloadingButton = false;
notifyListeners();
}
void setLoadingButton() {
isloadingButton = true;
notifyListeners();
}
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("status : ${response.statusCode}");
print(itemData);
}
Future<void> repairItems(String itemId) async {
var response = await http.post(
Uri.parse(Url.repairItems(itemId)),
headers: {'Authorization': User.token, "Accept": "application/json"},
);
print(response.statusCode);
}
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);
print(response.statusCode);
print(itemData);
try {
if (itemData['data']['transfers']['status'] == 'approved') {
return true;
} else {
return false;
}
} catch (e) {
print(e);
return false;
}
}
}