import 'dart:convert'; import 'package:fcs/config.dart'; import 'package:fcs/constants.dart'; import 'package:fcs/domain/entities/package.dart'; import 'package:fcs/helpers/api_helper.dart'; import 'package:fcs/helpers/firebase_helper.dart'; import 'package:logging/logging.dart'; class PackageDataProvider { final log = Logger('PackageDataProvider'); Future createPackages(List packages, String fcsID) async { List> json = packages.map((e) => e.toJson()).toList(); return await requestAPI("/packages", "POST", payload: {"packages": json, "fcs_id": fcsID}, token: await getToken()); } Future createReceiving(Package package) async { return await requestAPI("/receiving", "POST", payload: package.toJson(), token: await getToken()); } Future updateReceiving(Package package) async { return await requestAPI("/receiving", "PUT", payload: package.toJson(), token: await getToken()); } Future deleteReceiving(Package package) async { return await requestAPI("/receiving", "DELETE", payload: {"id": package.id}, token: await getToken()); } Future updateProcessing(Package package) async { return await requestAPI("/processing", "PUT", payload: package.toJson(), token: await getToken()); } Future deleteProcessing(Package package) async { return await requestAPI("/processing", "DELETE", payload: {"id": package.id}, token: await getToken()); } Future 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()); } Future packageReturn(String packageID) async { return await requestAPI("/packages/return", "PUT", payload: { "id": packageID, }, token: await getToken()); } Future?> ftsSearchPackage(String term) async { if (term == '') return []; var bytes = utf8.encode(term); var base64Str = base64.encode(bytes); HtmlEscape htmlEscape = const HtmlEscape(); String escapePackage = htmlEscape.convert(base64Str); int limit = 20; List packages = []; try { var data = await requestAPI( "/api/fts/$packages_collection/$escapePackage/$limit", "GET", url: Config.instance.reportURL, token: await getToken()); if (data == null) return []; data.forEach((p) { var package = Package.fromJson(p); packages.add(package); }); } catch (e) { log.warning("buyer error:" + e.toString()); return null; } return packages; } Future> searchPackage(String term) async { if (term == '') return []; List 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; } }