From 020b74827294532c3be61438546a1a46e23472b2 Mon Sep 17 00:00:00 2001 From: Sai Naw Wun Date: Sun, 24 Jan 2021 22:51:00 +0630 Subject: [PATCH] add package sql search --- lib/data/provider/package_data_provider.dart | 36 +++++++++++++++++++- lib/data/services/package_imp.dart | 5 +++ lib/data/services/package_service.dart | 1 + lib/pages/package/model/package_model.dart | 20 +++++++---- lib/pages/widgets/length_picker.dart | 36 +++++++++++++------- 5 files changed, 78 insertions(+), 20 deletions(-) diff --git a/lib/data/provider/package_data_provider.dart b/lib/data/provider/package_data_provider.dart index 9ac88fe..e0d99a2 100644 --- a/lib/data/provider/package_data_provider.dart +++ b/lib/data/provider/package_data_provider.dart @@ -56,7 +56,7 @@ class PackageDataProvider { token: await getToken()); } - Future> searchPackage(String term) async { + Future> ftsSearchPackage(String term) async { if (term == null || term == '') return List(); var bytes = utf8.encode(term); @@ -84,4 +84,38 @@ class PackageDataProvider { } return packages; } + + Future> searchPackage(String term) async { + if (term == null || term == '') return List(); + + 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; + } } diff --git a/lib/data/services/package_imp.dart b/lib/data/services/package_imp.dart index b18e0ea..75f0b56 100644 --- a/lib/data/services/package_imp.dart +++ b/lib/data/services/package_imp.dart @@ -29,6 +29,11 @@ class PackageServiceImp implements PackageService { return packageDataProvider.updateReceiving(package); } + @override + Future> ftsSearchPackage(String term) { + return packageDataProvider.ftsSearchPackage(term); + } + @override Future> searchPackage(String term) { return packageDataProvider.searchPackage(term); diff --git a/lib/data/services/package_service.dart b/lib/data/services/package_service.dart index 85bf6c9..ca00c58 100644 --- a/lib/data/services/package_service.dart +++ b/lib/data/services/package_service.dart @@ -7,6 +7,7 @@ abstract class PackageService { Future deleteReceiving(Package package); Future updateProcessing(Package package); Future deleteProcessing(Package package); + Future> ftsSearchPackage(String term); Future> searchPackage(String term); Future changeDeliveryAddress(String packageID, String deliveryID); Future packageReturn(String packageID); diff --git a/lib/pages/package/model/package_model.dart b/lib/pages/package/model/package_model.dart index c64483f..f826ceb 100644 --- a/lib/pages/package/model/package_model.dart +++ b/lib/pages/package/model/package_model.dart @@ -232,14 +232,20 @@ class PackageModel extends BaseModel { } Future> searchPackage(String term) async { - List packages = - await Services.instance.packageService.searchPackage(term); + Future> packages = + Services.instance.packageService.searchPackage(term); - Package pkg = await getPackageByTrackingID(term); - if (pkg != null && !packages.contains(pkg)) { - packages.insert(0, pkg); - } - return packages; + Future> packagesFTS = + Services.instance.packageService.ftsSearchPackage(term); + // Package pkg = await getPackageByTrackingID(term); + // if (pkg != null && !packages.contains(pkg)) { + // packages.insert(0, pkg); + // } + List pkgs = await packages; + List ftsPkgs = await packagesFTS; + pkgs.addAll(ftsPkgs); + final seen = Set(); + return pkgs.where((e) => seen.add(e)).toList(); } Future createPackages(User user, List packages) { diff --git a/lib/pages/widgets/length_picker.dart b/lib/pages/widgets/length_picker.dart index 0223f76..fe298c8 100644 --- a/lib/pages/widgets/length_picker.dart +++ b/lib/pages/widgets/length_picker.dart @@ -153,16 +153,22 @@ class _LengthPickerDialogState extends State { children: [ InkWell( onTap: () => _addInc(1), - child: Icon( - Icons.add, - color: primaryColor, + child: Padding( + padding: const EdgeInsets.all(3.0), + child: Icon( + Icons.add, + color: primaryColor, + ), ), ), InkWell( onTap: () => _addInc(-1), - child: Icon( - Icons.remove, - color: primaryColor, + child: Padding( + padding: const EdgeInsets.all(3.0), + child: Icon( + Icons.remove, + color: primaryColor, + ), ), ) ], @@ -199,16 +205,22 @@ class _LengthPickerDialogState extends State { children: [ InkWell( onTap: () => _addFeet(1), - child: Icon( - Icons.add, - color: primaryColor, + child: Padding( + padding: const EdgeInsets.all(3.0), + child: Icon( + Icons.add, + color: primaryColor, + ), ), ), InkWell( onTap: () => _addFeet(-1), - child: Icon( - Icons.remove, - color: primaryColor, + child: Padding( + padding: const EdgeInsets.all(3.0), + child: Icon( + Icons.remove, + color: primaryColor, + ), ), ) ],