update package and carton selection

This commit is contained in:
tzw
2024-03-04 17:09:47 +06:30
parent c66734d386
commit 1c4a9c2112
11 changed files with 236 additions and 237 deletions

View File

@@ -9,20 +9,14 @@ import '../../main/model/base_model.dart';
class PackageSelectionModel extends BaseModel {
final log = Logger("PackageSelectionModel");
// for search
String query = "";
int offset = 0;
bool reachEnd = false;
List<Package> packages = [];
List<Package> selectedPackages = [];
bool isLoading = false;
// for default package
DocumentSnapshot? _lastDocument;
bool ended = false;
List<Package> selectedPackageList = [];
Timer? t;
search(String term,
{bool imm = false,
@@ -31,11 +25,11 @@ class PackageSelectionModel extends BaseModel {
required String consigneeId}) async {
query = term;
packages.clear();
offset = 0;
reachEnd = false;
_lastDocument = null;
ended = false;
t?.cancel();
t = Timer(Duration(milliseconds: imm ? 0 : 800), () async {
await loadMoreSearch(
await refresh(
term: term,
shipmentId: shipmentId,
consigneeId: consigneeId,
@@ -43,85 +37,27 @@ class PackageSelectionModel extends BaseModel {
});
}
Future<void> loadMoreSearch(
{required String term,
required String shipmentId,
required String senderId,
required String consigneeId}) async {
if (term == "") {
await _refresh(
shipmentId: shipmentId, senderId: senderId, consigneeId: consigneeId);
return;
}
// int rowPerPage = 21;
// List<Carton> list = [];
// SearchPara searchPara = SearchPara(filters: [], term: term);
// isLoading = true;
// var path =
// "/search/$cartons_collection/${searchPara.escapeTerm}/$rowPerPage/$offset/${searchPara.escapeFilters}";
// var result = await requestAPI(path, "GET",
// token: await getToken(), url: Config.instance.searchURL);
// if (result != null) {
// for (var row in result) {
// var item = ArtistExt.fromMapForSearch(row);
// list.add(item);
// }
// }
// for (var p in list) {
// selectedArtistList.contains(p)
// ? p.isSelected = true
// : p.isSelected = false;
// }
// artists.addAll(list);
// offset += rowPerPage;
// if (list.length < rowPerPage) {
// reachEnd = true;
// }
notifyListeners();
}
addDefaultPackages(
Future<void> refresh(
{required String shipmentId,
required String senderId,
required String consigneeId}) async {
packages.clear();
await _refresh(
shipmentId: shipmentId, senderId: senderId, consigneeId: consigneeId);
}
selectPackage(Package a) {
if (a.isChecked) {
selectedPackageList.add(a);
} else {
selectedPackageList.remove(a);
}
}
addSelectedPackage(List<Package> list){
selectedPackageList = list;
}
Future<void> _refresh(
{required String shipmentId,
required String senderId,
required String consigneeId}) async {
required String consigneeId,
String term = ""}) async {
packages.clear();
_lastDocument = null;
ended = false;
await loadMoreData(
shipmentId: shipmentId, senderId: senderId, consigneeId: consigneeId);
shipmentId: shipmentId,
senderId: senderId,
consigneeId: consigneeId,
term: term);
notifyListeners();
}
Future<void> loadMoreData(
{required String shipmentId,
required String senderId,
required String consigneeId}) async {
required String consigneeId,
String term = ""}) async {
int rowPerPage = 20;
try {
@@ -131,9 +67,15 @@ class PackageSelectionModel extends BaseModel {
.collection(path)
// .where("fcs_shipment_id", isEqualTo: shipmentId)
// .where("status", isEqualTo: package_processed_status)
.where("user_id", whereIn: [senderId, consigneeId])
.where("is_deleted", isEqualTo: false)
.orderBy("created_date", descending: true);
.where("sender_id", isEqualTo: senderId)
.where("user_id", isEqualTo: consigneeId)
.where("is_deleted", isEqualTo: false);
if (term != "") {
query = query.where("tracking_id", isEqualTo: term);
}
query = query.orderBy("created_date", descending: true);
if (_lastDocument != null) {
query = query.startAfterDocument(_lastDocument!);
@@ -151,9 +93,7 @@ class PackageSelectionModel extends BaseModel {
}).toList();
for (var p in list) {
selectedPackageList.contains(p)
? p.isChecked = true
: p.isChecked = false;
selectedPackages.contains(p) ? p.isChecked = true : p.isChecked = false;
}
packages.addAll(list);
@@ -166,9 +106,43 @@ class PackageSelectionModel extends BaseModel {
}
}
selectPackage(Package a) {
if (a.isChecked) {
selectedPackages.add(a);
} else {
selectedPackages.remove(a);
}
}
addSelectedPackage(List<Package> list) {
selectedPackages = list;
}
clearSelection() {
selectedPackageList.clear();
selectedPackages.clear();
packages.clear();
query = "";
}
Future<List<Package>> getPackagesBySenderAndConsigneeId(
{required String senderId, required String consigneeId}) async {
List<Package> list = [];
try {
String path = "/$packages_collection";
var snaps = await FirebaseFirestore.instance
.collection(path)
.where("sender_id", isEqualTo: senderId)
.where("user_id", isEqualTo: consigneeId)
.where("is_deleted", isEqualTo: false)
.get(const GetOptions(source: Source.server));
list = snaps.docs
.map((documentSnapshot) =>
Package.fromMap(documentSnapshot.data(), documentSnapshot.id))
.toList();
} catch (e) {
log.warning("Error!! $e");
list = [];
}
return list;
}
}