update package detal list and update cargo type input in carton section
This commit is contained in:
@@ -5,59 +5,68 @@ import 'package:logging/logging.dart';
|
||||
|
||||
import '../../../constants.dart';
|
||||
import '../../../domain/entities/package.dart';
|
||||
import '../../../pagination/paginator_listener.dart';
|
||||
import '../../main/model/base_model.dart';
|
||||
|
||||
class PackageSelectionModel extends BaseModel {
|
||||
final log = Logger("PackageSelectionModel");
|
||||
String query = "";
|
||||
List<Package> packages = [];
|
||||
List<Package> selectedPackages = [];
|
||||
PaginatorListener<Package>? getPackages;
|
||||
|
||||
List<Package> packages = [];
|
||||
bool isLoading = false;
|
||||
DocumentSnapshot? _lastDocument;
|
||||
bool ended = false;
|
||||
|
||||
Timer? t;
|
||||
search(String term,
|
||||
{bool imm = false,
|
||||
required String shipmentId,
|
||||
required String senderId,
|
||||
required String consigneeId}) async {
|
||||
query = term;
|
||||
@override
|
||||
logout() async {
|
||||
packages.clear();
|
||||
_lastDocument = null;
|
||||
ended = false;
|
||||
t?.cancel();
|
||||
t = Timer(Duration(milliseconds: imm ? 0 : 800), () async {
|
||||
await refresh(
|
||||
term: term,
|
||||
shipmentId: shipmentId,
|
||||
consigneeId: consigneeId,
|
||||
senderId: senderId);
|
||||
});
|
||||
getPackages?.close();
|
||||
}
|
||||
|
||||
loadPackages(
|
||||
{required String senderId,
|
||||
required String consigneeId,
|
||||
required String shipmentId}) {
|
||||
if (user == null) return;
|
||||
|
||||
String path = "/$packages_collection";
|
||||
Query col = FirebaseFirestore.instance
|
||||
.collection(path)
|
||||
.where("sender_id", isEqualTo: senderId)
|
||||
.where("user_id", isEqualTo: consigneeId)
|
||||
.where("fcs_shipment_id", isEqualTo: shipmentId);
|
||||
Query pageQuery = FirebaseFirestore.instance
|
||||
.collection(path)
|
||||
.where("sender_id", isEqualTo: senderId)
|
||||
.where("user_id", isEqualTo: consigneeId)
|
||||
.where("fcs_shipment_id", isEqualTo: shipmentId);
|
||||
|
||||
pageQuery = pageQuery.orderBy("created_date", descending: true);
|
||||
getPackages?.close();
|
||||
getPackages = PaginatorListener<Package>(
|
||||
col, pageQuery, (data, id) => Package.fromMap(data, id),
|
||||
rowPerLoad: 30);
|
||||
}
|
||||
|
||||
Future<void> refresh(
|
||||
{required String shipmentId,
|
||||
required String senderId,
|
||||
required String consigneeId,
|
||||
String term = ""}) async {
|
||||
required String consigneeId}) async {
|
||||
packages.clear();
|
||||
_lastDocument = null;
|
||||
ended = false;
|
||||
await loadMoreData(
|
||||
shipmentId: shipmentId,
|
||||
senderId: senderId,
|
||||
consigneeId: consigneeId,
|
||||
term: term);
|
||||
shipmentId: shipmentId,
|
||||
senderId: senderId,
|
||||
consigneeId: consigneeId,
|
||||
);
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<void> loadMoreData(
|
||||
{required String shipmentId,
|
||||
required String senderId,
|
||||
required String consigneeId,
|
||||
String term = ""}) async {
|
||||
required String consigneeId}) async {
|
||||
int rowPerPage = 20;
|
||||
|
||||
try {
|
||||
@@ -69,12 +78,9 @@ class PackageSelectionModel extends BaseModel {
|
||||
whereIn: [package_processed_status, package_packed_status])
|
||||
.where("sender_id", isEqualTo: senderId)
|
||||
.where("user_id", isEqualTo: consigneeId)
|
||||
.where("fcs_shipment_id", isEqualTo: shipmentId)
|
||||
.where("is_deleted", isEqualTo: false);
|
||||
|
||||
if (term != "") {
|
||||
query = query.where("tracking_id", isEqualTo: term);
|
||||
}
|
||||
|
||||
query = query.orderBy("created_date", descending: true);
|
||||
|
||||
if (_lastDocument != null) {
|
||||
@@ -92,10 +98,6 @@ class PackageSelectionModel extends BaseModel {
|
||||
return p;
|
||||
}).toList();
|
||||
|
||||
for (var p in list) {
|
||||
selectedPackages.contains(p) ? p.isChecked = true : p.isChecked = false;
|
||||
}
|
||||
|
||||
packages.addAll(list);
|
||||
if (list.length < rowPerPage) ended = true;
|
||||
notifyListeners();
|
||||
@@ -106,22 +108,8 @@ class PackageSelectionModel extends BaseModel {
|
||||
}
|
||||
}
|
||||
|
||||
selectPackage(Package a) {
|
||||
if (a.isChecked) {
|
||||
selectedPackages.add(a);
|
||||
} else {
|
||||
selectedPackages.remove(a);
|
||||
}
|
||||
}
|
||||
|
||||
addSelectedPackage(List<Package> list) {
|
||||
selectedPackages = list;
|
||||
}
|
||||
|
||||
clearSelection() {
|
||||
selectedPackages.clear();
|
||||
packages.clear();
|
||||
query = "";
|
||||
}
|
||||
|
||||
Future<List<Package>> getPackagesBySenderAndConsigneeId(
|
||||
@@ -174,4 +162,21 @@ class PackageSelectionModel extends BaseModel {
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
Future<int?> getPackageCount(
|
||||
{required String senderId,
|
||||
required String consigneeId,
|
||||
required String shipmentId}) async {
|
||||
String path = "/$packages_collection";
|
||||
|
||||
AggregateQuerySnapshot query = await FirebaseFirestore.instance
|
||||
.collection(path)
|
||||
.where("sender_id", isEqualTo: senderId)
|
||||
.where("user_id", isEqualTo: consigneeId)
|
||||
.where("fcs_shipment_id", isEqualTo: shipmentId)
|
||||
.count()
|
||||
.get();
|
||||
|
||||
return query.count;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user