2020-09-18 21:33:41 +06:30
|
|
|
import 'dart:convert';
|
|
|
|
|
|
|
|
|
|
import 'package:fcs/config.dart';
|
2020-10-07 02:33:06 +06:30
|
|
|
import 'package:fcs/domain/constants.dart';
|
|
|
|
|
import 'package:fcs/domain/entities/package.dart';
|
|
|
|
|
import 'package:fcs/helpers/api_helper.dart';
|
|
|
|
|
import 'package:fcs/helpers/firebase_helper.dart';
|
2020-09-15 07:13:41 +06:30
|
|
|
import 'package:logging/logging.dart';
|
|
|
|
|
|
|
|
|
|
class PackageDataProvider {
|
|
|
|
|
final log = Logger('PackageDataProvider');
|
|
|
|
|
|
2020-09-16 02:29:50 +06:30
|
|
|
Future<void> createPackages(List<Package> packages, String fcsID) async {
|
|
|
|
|
List<Map<String, dynamic>> json = packages.map((e) => e.toJson()).toList();
|
2020-09-15 07:13:41 +06:30
|
|
|
return await requestAPI("/packages", "POST",
|
2020-09-16 02:29:50 +06:30
|
|
|
payload: {"packages": json, "fcs_id": fcsID}, token: await getToken());
|
2020-09-15 07:13:41 +06:30
|
|
|
}
|
2020-09-18 21:33:41 +06:30
|
|
|
|
2020-10-12 03:34:05 +06:30
|
|
|
Future<void> createReceiving(Package package) async {
|
|
|
|
|
return await requestAPI("/receiving", "POST",
|
2020-10-11 02:17:23 +06:30
|
|
|
payload: package.toJson(), token: await getToken());
|
|
|
|
|
}
|
|
|
|
|
|
2020-10-12 03:34:05 +06:30
|
|
|
Future<void> updateReceiving(Package package) async {
|
|
|
|
|
return await requestAPI("/receiving", "PUT",
|
|
|
|
|
payload: package.toJson(), token: await getToken());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<void> deleteReceiving(Package package) async {
|
|
|
|
|
return await requestAPI("/receiving", "DELETE",
|
|
|
|
|
payload: {"id": package.id}, token: await getToken());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<void> updateProcessing(Package package) async {
|
|
|
|
|
return await requestAPI("/processing", "PUT",
|
|
|
|
|
payload: package.toJson(), token: await getToken());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<void> deleteProcessing(Package package) async {
|
|
|
|
|
return await requestAPI("/processing", "DELETE",
|
2020-09-18 21:33:41 +06:30
|
|
|
payload: {"id": package.id}, token: await getToken());
|
|
|
|
|
}
|
|
|
|
|
|
2020-10-13 07:50:25 +06:30
|
|
|
Future<void> changeDeliveryAddress(
|
|
|
|
|
String packageID, String deliveryID) async {
|
|
|
|
|
return await requestAPI("/packages/change_delivery_address", "PUT",
|
|
|
|
|
payload: {"package_id": packageID, "deliver_address_id": deliveryID},
|
|
|
|
|
token: await getToken());
|
|
|
|
|
}
|
|
|
|
|
|
2020-10-20 08:02:29 +06:30
|
|
|
Future<void> packageReturn(String packageID) async {
|
|
|
|
|
return await requestAPI("/packages/return", "PUT",
|
|
|
|
|
payload: {
|
|
|
|
|
"id": packageID,
|
|
|
|
|
},
|
|
|
|
|
token: await getToken());
|
|
|
|
|
}
|
|
|
|
|
|
2021-09-10 14:27:38 +06:30
|
|
|
Future<List<Package>?> ftsSearchPackage(String term) async {
|
|
|
|
|
if (term == null || term == '') return [];
|
2020-09-18 21:33:41 +06:30
|
|
|
|
|
|
|
|
var bytes = utf8.encode(term);
|
|
|
|
|
var base64Str = base64.encode(bytes);
|
|
|
|
|
HtmlEscape htmlEscape = const HtmlEscape();
|
|
|
|
|
String escapePackage = htmlEscape.convert(base64Str);
|
|
|
|
|
|
|
|
|
|
int limit = 20;
|
|
|
|
|
List<Package> packages = [];
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
var data = await requestAPI(
|
|
|
|
|
"/api/fts/$packages_collection/$escapePackage/$limit", "GET",
|
|
|
|
|
url: Config.instance.reportURL, token: await getToken());
|
|
|
|
|
|
2021-09-10 14:27:38 +06:30
|
|
|
if (data == null) return [];
|
2020-09-18 21:33:41 +06:30
|
|
|
|
|
|
|
|
data.forEach((p) {
|
|
|
|
|
var package = Package.fromJson(p);
|
|
|
|
|
packages.add(package);
|
|
|
|
|
});
|
|
|
|
|
} catch (e) {
|
|
|
|
|
log.warning("buyer error:" + e.toString());
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
return packages;
|
|
|
|
|
}
|
2021-01-24 22:51:00 +06:30
|
|
|
|
|
|
|
|
Future<List<Package>> searchPackage(String term) async {
|
2021-09-10 14:27:38 +06:30
|
|
|
if (term == null || term == '') return [];
|
2021-01-24 22:51:00 +06:30
|
|
|
|
|
|
|
|
List<Package> packages = [];
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
var data = {
|
|
|
|
|
"fields":
|
|
|
|
|
'id,tracking_id,market,user_name,phone_number,status,status_date',
|
|
|
|
|
"aggfuns": ",,,,,,",
|
|
|
|
|
"groupbys": '',
|
|
|
|
|
"filters": [
|
|
|
|
|
{
|
|
|
|
|
"field": "tracking_id",
|
|
|
|
|
"compare": "like",
|
|
|
|
|
"value": "%" + term.toUpperCase() + "%"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
};
|
|
|
|
|
var result = await requestAPI("/api/data/packages", "POST",
|
|
|
|
|
token: await getToken(),
|
|
|
|
|
url: Config.instance.reportURL,
|
|
|
|
|
payload: jsonEncode(data));
|
|
|
|
|
if (result == null) return packages;
|
|
|
|
|
result.forEach((d) {
|
|
|
|
|
var package = Package.fromJson(d);
|
|
|
|
|
packages.add(package);
|
|
|
|
|
});
|
|
|
|
|
} catch (e) {
|
|
|
|
|
log.warning("Error >>>>${e.toString()}");
|
|
|
|
|
}
|
|
|
|
|
return packages;
|
|
|
|
|
}
|
2020-09-15 07:13:41 +06:30
|
|
|
}
|