update package and carton selection
This commit is contained in:
@@ -9,92 +9,36 @@ import '../../main/model/base_model.dart';
|
||||
|
||||
class CartonSelectionModel extends BaseModel {
|
||||
final log = Logger("CartonSelectionModel");
|
||||
// for search
|
||||
String query = "";
|
||||
int offset = 0;
|
||||
bool reachEnd = false;
|
||||
List<Carton> cartons = [];
|
||||
List<Carton> selectedCartons = [];
|
||||
|
||||
bool isLoading = false;
|
||||
|
||||
// for default carton
|
||||
DocumentSnapshot? _lastDocument;
|
||||
bool ended = false;
|
||||
|
||||
List<Carton> selectedCartonList = [];
|
||||
|
||||
Timer? t;
|
||||
search(String term, {bool imm = false, required String shipmentId}) async {
|
||||
query = term;
|
||||
cartons.clear();
|
||||
offset = 0;
|
||||
reachEnd = false;
|
||||
_lastDocument = null;
|
||||
ended = false;
|
||||
|
||||
t?.cancel();
|
||||
t = Timer(Duration(milliseconds: imm ? 0 : 800), () async {
|
||||
await loadMoreSearch(term: term, shipmentId: shipmentId);
|
||||
await refresh(shipmentId, term: term);
|
||||
});
|
||||
}
|
||||
|
||||
Future<void> loadMoreSearch(
|
||||
{required String term, required String shipmentId}) async {
|
||||
if (term == "") {
|
||||
await _refresh(shipmentId);
|
||||
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();
|
||||
}
|
||||
|
||||
addDefaultCartons(String shipmentId) async {
|
||||
cartons.clear();
|
||||
await _refresh(shipmentId);
|
||||
}
|
||||
|
||||
selectCarton(Carton a) {
|
||||
if (a.isSelected) {
|
||||
selectedCartonList.add(a);
|
||||
} else {
|
||||
selectedCartonList.remove(a);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _refresh(String shipmentId) async {
|
||||
Future<void> refresh(String shipmentId, {String term = ""}) async {
|
||||
cartons.clear();
|
||||
_lastDocument = null;
|
||||
ended = false;
|
||||
await loadMoreData(shipmentId);
|
||||
await loadMoreData(shipmentId, term: term);
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<void> loadMoreData(String shipmentId) async {
|
||||
Future<void> loadMoreData(String shipmentId, {String term = ""}) async {
|
||||
int rowPerPage = 20;
|
||||
|
||||
try {
|
||||
@@ -104,9 +48,13 @@ class CartonSelectionModel extends BaseModel {
|
||||
.collection(path)
|
||||
// .where("fcs_shipment_id", isEqualTo: shipmentId)
|
||||
// .where("status", isEqualTo: carton_processing_status)
|
||||
// .where("carton_type", isEqualTo: carton_mix_box)
|
||||
.where("is_deleted", isEqualTo: false)
|
||||
.orderBy("created_at", descending: true);
|
||||
.where("is_deleted", isEqualTo: false);
|
||||
|
||||
if (term != "") {
|
||||
query = query.where("carton_number", isEqualTo: term);
|
||||
}
|
||||
|
||||
query = query.orderBy("created_at", descending: true);
|
||||
|
||||
if (_lastDocument != null) {
|
||||
query = query.startAfterDocument(_lastDocument!);
|
||||
@@ -124,7 +72,7 @@ class CartonSelectionModel extends BaseModel {
|
||||
}).toList();
|
||||
|
||||
for (var p in list) {
|
||||
selectedCartonList.contains(p)
|
||||
selectedCartons.contains(p)
|
||||
? p.isSelected = true
|
||||
: p.isSelected = false;
|
||||
}
|
||||
@@ -139,13 +87,21 @@ class CartonSelectionModel extends BaseModel {
|
||||
}
|
||||
}
|
||||
|
||||
selectCarton(Carton a) {
|
||||
if (a.isSelected) {
|
||||
selectedCartons.add(a);
|
||||
} else {
|
||||
selectedCartons.remove(a);
|
||||
}
|
||||
}
|
||||
|
||||
clearSelection() {
|
||||
selectedCartonList.clear();
|
||||
selectedCartons.clear();
|
||||
cartons.clear();
|
||||
query = "";
|
||||
}
|
||||
|
||||
addSelectedCarton(List<Carton> list) {
|
||||
selectedCartonList = list;
|
||||
selectedCartons = list;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,36 +43,32 @@ class SenderSelectionModel extends BaseModel {
|
||||
await _refresh();
|
||||
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 bytes = utf8.encode(term);
|
||||
// var base64Str = base64.encode(bytes);
|
||||
// HtmlEscape htmlEscape = const HtmlEscape();
|
||||
// String escapeSender = htmlEscape.convert(base64Str);
|
||||
|
||||
// var result = await requestAPI(path, "GET",
|
||||
// token: await getToken(), url: Config.instance.searchURL);
|
||||
// int rowPerPage = 20;
|
||||
// List<User> list = [];
|
||||
|
||||
// var result = await requestAPI(
|
||||
// "/api/fts/$user_collection/$escapeSender/$rowPerPage", "GET",
|
||||
// url: Config.instance.reportURL, token: await getToken());
|
||||
|
||||
// if (result != null) {
|
||||
// for (var row in result) {
|
||||
// var item = ArtistExt.fromMapForSearch(row);
|
||||
// var item = User.fromJson(row);
|
||||
// list.add(item);
|
||||
// }
|
||||
// }
|
||||
|
||||
// for (var p in list) {
|
||||
// selectedArtistList.contains(p)
|
||||
// ? p.isSelected = true
|
||||
// : p.isSelected = false;
|
||||
// }
|
||||
|
||||
// artists.addAll(list);
|
||||
// _senders.addAll(list);
|
||||
// offset += rowPerPage;
|
||||
// if (list.length < rowPerPage) {
|
||||
// reachEnd = true;
|
||||
// }
|
||||
notifyListeners();
|
||||
// notifyListeners();
|
||||
}
|
||||
|
||||
addDefaultSenders() async {
|
||||
|
||||
Reference in New Issue
Block a user