166 lines
3.9 KiB
Dart
166 lines
3.9 KiB
Dart
import 'dart:convert';
|
|
import 'package:http/http.dart' as http;
|
|
|
|
class API {
|
|
static String instance = "http://192.168.178.30:8080";
|
|
|
|
Future<String> getRequest(String url) async {
|
|
var resp = await http.get(Uri.parse(url), headers: <String, String>{
|
|
'Access-Control-Allow-Origin': '*',
|
|
});
|
|
|
|
return resp.body;
|
|
}
|
|
|
|
Future<String> postRequest(String url, Map<String, dynamic> data) async {
|
|
var resp = await http.post(Uri.parse(url),
|
|
headers: <String, String>{
|
|
'Access-Control-Allow-Origin': '*',
|
|
},
|
|
body: data);
|
|
|
|
return resp.body;
|
|
}
|
|
|
|
Future<List<dynamic>> getItems() async {
|
|
var resp = jsonDecode(await getRequest("$instance/items"));
|
|
var lst = resp["items"];
|
|
return lst as List<dynamic>;
|
|
}
|
|
|
|
Future<List<dynamic>> getUniqueField(
|
|
String item, String variant, String field) async {
|
|
return jsonDecode(await getRequest(
|
|
"$instance/item/$item/$variant/unique?field=$field")) as List<dynamic>;
|
|
}
|
|
|
|
Future<Map<String, dynamic>> getLocations() async {
|
|
return jsonDecode(await getRequest("$instance/locations"));
|
|
}
|
|
|
|
Future<Item> getItem(String item) async {
|
|
return Item(jsonDecode(await getRequest("$instance/item/$item")));
|
|
}
|
|
|
|
Future<Transaction> getTransaction(String id) async {
|
|
return Transaction(
|
|
jsonDecode(await getRequest("$instance/transaction/$id")));
|
|
}
|
|
|
|
Future<List<Transaction>> getInventory(String item) async {
|
|
var resp = jsonDecode(await getRequest("$instance/item/$item/inventory"))
|
|
as List<dynamic>;
|
|
|
|
return resp.map((x) => Transaction(x)).toList();
|
|
}
|
|
|
|
Future<List<Transaction>> getInventoryOfVariant(
|
|
String item, String variant) async {
|
|
var resp =
|
|
jsonDecode(await getRequest("$instance/item/$item/$variant/inventory"))
|
|
as List<dynamic>;
|
|
|
|
return resp.map((x) => Transaction(x)).toList();
|
|
}
|
|
|
|
Future<String> supplyItem(String item, String variant, String price,
|
|
String? origin, String? location) async {
|
|
if (origin!.isEmpty) {
|
|
origin = null;
|
|
}
|
|
|
|
if (location!.isEmpty) {
|
|
location = null;
|
|
}
|
|
|
|
return jsonDecode(await postRequest("$instance/supply", {
|
|
"item": item,
|
|
"variant": variant,
|
|
"price": price,
|
|
"origin": origin,
|
|
"location": location
|
|
}))["uuid"];
|
|
}
|
|
|
|
String getImageURL(String item) {
|
|
return "$instance/$item/image";
|
|
}
|
|
}
|
|
|
|
class Item {
|
|
late String id;
|
|
late String name;
|
|
late String category;
|
|
late Map<String, ItemVariant> variants;
|
|
|
|
Item(Map<String, dynamic> json) {
|
|
id = json["uuid"];
|
|
name = json["name"];
|
|
category = json["category"];
|
|
variants = <String, ItemVariant>{};
|
|
|
|
json["variants"].forEach((key, value) {
|
|
variants[key] = ItemVariant(value);
|
|
});
|
|
}
|
|
}
|
|
|
|
class ItemVariant {
|
|
late String item;
|
|
late String variant;
|
|
late String name;
|
|
int? min;
|
|
int? expiry;
|
|
|
|
ItemVariant(Map<String, dynamic> json) {
|
|
item = json["item"];
|
|
variant = json["variant"];
|
|
name = json["name"];
|
|
min = json["min"];
|
|
expiry = json["expiry"];
|
|
}
|
|
}
|
|
|
|
class Price {
|
|
late double value;
|
|
late String currency;
|
|
|
|
Price(Map<String, dynamic> json) {
|
|
value = json["value"];
|
|
currency = json["currency"];
|
|
}
|
|
}
|
|
|
|
class Transaction {
|
|
late String uuid;
|
|
late String item;
|
|
late String variant;
|
|
late Price price;
|
|
late String? origin;
|
|
late int timestamp;
|
|
late ConsumeInfo consumed;
|
|
late bool expired;
|
|
|
|
Transaction(Map<String, dynamic> json) {
|
|
uuid = json["uuid"];
|
|
item = json["item"];
|
|
variant = json["variant"];
|
|
price = Price(json["price"]);
|
|
origin = json["origin"];
|
|
timestamp = json["timestamp"];
|
|
expired = json["expired"];
|
|
consumed = ConsumeInfo(json["consumed"]);
|
|
}
|
|
}
|
|
|
|
class ConsumeInfo {
|
|
late String destination;
|
|
late Price price;
|
|
late int timestamp;
|
|
|
|
ConsumeInfo(Map<String, dynamic> json) {
|
|
destination = json["destination"];
|
|
price = Price(json["price"]);
|
|
timestamp = json["timestamp"];
|
|
}
|
|
}
|