From c407206b4f0d34ba4fc4644e651f47b7933c1d0c Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Thu, 16 Dec 2021 20:42:06 +0200 Subject: [PATCH] Correct sorty by payment type --- lib/data/models/payment_model.dart | 21 ++++++---- lib/redux/payment/payment_selectors.dart | 52 ++++++++++++++++-------- lib/ui/payment/payment_list_vm.dart | 1 + lib/ui/payment/payment_screen_vm.dart | 1 + 4 files changed, 50 insertions(+), 25 deletions(-) diff --git a/lib/data/models/payment_model.dart b/lib/data/models/payment_model.dart index a3318dc3c..f5c5991b9 100644 --- a/lib/data/models/payment_model.dart +++ b/lib/data/models/payment_model.dart @@ -231,13 +231,15 @@ abstract class PaymentEntity extends Object return statusId; } - int compareTo( - {PaymentEntity payment, - String sortField, - bool sortAscending, - BuiltMap invoiceMap, - BuiltMap clientMap, - BuiltMap userMap}) { + int compareTo({ + PaymentEntity payment, + String sortField, + bool sortAscending, + BuiltMap invoiceMap, + BuiltMap clientMap, + BuiltMap userMap, + BuiltMap paymentTypeMap, + }) { int response = 0; final PaymentEntity paymentA = sortAscending ? this : payment; final PaymentEntity paymentB = sortAscending ? payment : this; @@ -315,6 +317,11 @@ abstract class PaymentEntity extends Object .toLowerCase() .compareTo(clientB.displayName.toLowerCase()); break; + case PaymentFields.type: + final typeA = paymentTypeMap[paymentA.typeId] ?? PaymentTypeEntity(); + final typeB = paymentTypeMap[paymentB.typeId] ?? PaymentTypeEntity(); + return typeA.name.toLowerCase().compareTo(typeB.name.toLowerCase()); + break; case EntityFields.assignedTo: final userA = userMap[paymentA.assignedUserId] ?? UserEntity(); final userB = userMap[paymentB.assignedUserId] ?? UserEntity(); diff --git a/lib/redux/payment/payment_selectors.dart b/lib/redux/payment/payment_selectors.dart index 9345ad1ff..1e20d4eaa 100644 --- a/lib/redux/payment/payment_selectors.dart +++ b/lib/redux/payment/payment_selectors.dart @@ -33,15 +33,16 @@ List paymentsByCreditSelector(String creditId, }).toList(); } -var memoizedDropdownPaymentList = memo5(( +var memoizedDropdownPaymentList = memo6(( BuiltMap paymentMap, BuiltList paymentList, BuiltMap invoiceMap, BuiltMap clientMap, BuiltMap userMap, + BuiltMap paymentTypeMap, ) => - dropdownPaymentsSelector( - paymentMap, paymentList, invoiceMap, clientMap, userMap)); + dropdownPaymentsSelector(paymentMap, paymentList, invoiceMap, clientMap, + userMap, paymentTypeMap)); List dropdownPaymentsSelector( BuiltMap paymentMap, @@ -49,6 +50,7 @@ List dropdownPaymentsSelector( BuiltMap invoiceMap, BuiltMap clientMap, BuiltMap userMap, + BuiltMap paymentTypeMap, ) { final list = paymentList.where((paymentId) => paymentMap[paymentId].isActive).toList(); @@ -58,26 +60,37 @@ List dropdownPaymentsSelector( final paymentB = paymentMap[paymentBId]; return paymentA.compareTo( - payment: paymentB, - sortAscending: true, - sortField: PaymentFields.date, - invoiceMap: invoiceMap, - clientMap: clientMap, - userMap: userMap); + payment: paymentB, + sortAscending: true, + sortField: PaymentFields.date, + invoiceMap: invoiceMap, + clientMap: clientMap, + userMap: userMap, + paymentTypeMap: paymentTypeMap, + ); }); return list; } -var memoizedFilteredPaymentList = memo7((SelectionState selectionState, +var memoizedFilteredPaymentList = memo8((SelectionState selectionState, BuiltMap paymentMap, BuiltList paymentList, BuiltMap invoiceMap, BuiltMap clientMap, BuiltMap userMap, + BuiltMap paymentTypeMap, ListUIState paymentListState) => - filteredPaymentsSelector(selectionState, paymentMap, paymentList, - invoiceMap, clientMap, userMap, paymentListState)); + filteredPaymentsSelector( + selectionState, + paymentMap, + paymentList, + invoiceMap, + clientMap, + userMap, + paymentTypeMap, + paymentListState, + )); List filteredPaymentsSelector( SelectionState selectionState, @@ -86,6 +99,7 @@ List filteredPaymentsSelector( BuiltMap invoiceMap, BuiltMap clientMap, BuiltMap userMap, + BuiltMap paymentTypeMap, ListUIState paymentListState) { final filterEntityId = selectionState.filterEntityId; final filterEntityType = selectionState.filterEntityType; @@ -137,12 +151,14 @@ List filteredPaymentsSelector( final paymentA = paymentMap[paymentAId]; final paymentB = paymentMap[paymentBId]; return paymentA.compareTo( - payment: paymentB, - sortAscending: paymentListState.sortAscending, - sortField: paymentListState.sortField, - invoiceMap: invoiceMap, - clientMap: clientMap, - userMap: userMap); + payment: paymentB, + sortAscending: paymentListState.sortAscending, + sortField: paymentListState.sortField, + invoiceMap: invoiceMap, + clientMap: clientMap, + userMap: userMap, + paymentTypeMap: paymentTypeMap, + ); }); return list; diff --git a/lib/ui/payment/payment_list_vm.dart b/lib/ui/payment/payment_list_vm.dart index 3e1bd0921..33ad1cbd2 100644 --- a/lib/ui/payment/payment_list_vm.dart +++ b/lib/ui/payment/payment_list_vm.dart @@ -94,6 +94,7 @@ class PaymentListVM { state.invoiceState.map, state.clientState.map, state.userState.map, + state.staticState.paymentTypeMap, state.paymentListState), paymentMap: state.paymentState.map, clientMap: state.clientState.map, diff --git a/lib/ui/payment/payment_screen_vm.dart b/lib/ui/payment/payment_screen_vm.dart index 61793e055..ed6a7dff4 100644 --- a/lib/ui/payment/payment_screen_vm.dart +++ b/lib/ui/payment/payment_screen_vm.dart @@ -54,6 +54,7 @@ class PaymentScreenVM { state.invoiceState.map, state.clientState.map, state.userState.map, + state.staticState.paymentTypeMap, state.paymentListState), userCompany: state.userCompany, isInMultiselect: state.paymentListState.isInMultiselect(),