Correct sorty by payment type

This commit is contained in:
Hillel Coren 2021-12-16 20:42:06 +02:00
parent 4e044ef971
commit c407206b4f
4 changed files with 50 additions and 25 deletions

View File

@ -231,13 +231,15 @@ abstract class PaymentEntity extends Object
return statusId;
}
int compareTo(
{PaymentEntity payment,
String sortField,
bool sortAscending,
BuiltMap<String, InvoiceEntity> invoiceMap,
BuiltMap<String, ClientEntity> clientMap,
BuiltMap<String, UserEntity> userMap}) {
int compareTo({
PaymentEntity payment,
String sortField,
bool sortAscending,
BuiltMap<String, InvoiceEntity> invoiceMap,
BuiltMap<String, ClientEntity> clientMap,
BuiltMap<String, UserEntity> userMap,
BuiltMap<String, PaymentTypeEntity> 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();

View File

@ -33,15 +33,16 @@ List<PaymentEntity> paymentsByCreditSelector(String creditId,
}).toList();
}
var memoizedDropdownPaymentList = memo5((
var memoizedDropdownPaymentList = memo6((
BuiltMap<String, PaymentEntity> paymentMap,
BuiltList<String> paymentList,
BuiltMap<String, InvoiceEntity> invoiceMap,
BuiltMap<String, ClientEntity> clientMap,
BuiltMap<String, UserEntity> userMap,
BuiltMap<String, PaymentTypeEntity> paymentTypeMap,
) =>
dropdownPaymentsSelector(
paymentMap, paymentList, invoiceMap, clientMap, userMap));
dropdownPaymentsSelector(paymentMap, paymentList, invoiceMap, clientMap,
userMap, paymentTypeMap));
List<String> dropdownPaymentsSelector(
BuiltMap<String, PaymentEntity> paymentMap,
@ -49,6 +50,7 @@ List<String> dropdownPaymentsSelector(
BuiltMap<String, InvoiceEntity> invoiceMap,
BuiltMap<String, ClientEntity> clientMap,
BuiltMap<String, UserEntity> userMap,
BuiltMap<String, PaymentTypeEntity> paymentTypeMap,
) {
final list =
paymentList.where((paymentId) => paymentMap[paymentId].isActive).toList();
@ -58,26 +60,37 @@ List<String> 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<String, PaymentEntity> paymentMap,
BuiltList<String> paymentList,
BuiltMap<String, InvoiceEntity> invoiceMap,
BuiltMap<String, ClientEntity> clientMap,
BuiltMap<String, UserEntity> userMap,
BuiltMap<String, PaymentTypeEntity> paymentTypeMap,
ListUIState paymentListState) =>
filteredPaymentsSelector(selectionState, paymentMap, paymentList,
invoiceMap, clientMap, userMap, paymentListState));
filteredPaymentsSelector(
selectionState,
paymentMap,
paymentList,
invoiceMap,
clientMap,
userMap,
paymentTypeMap,
paymentListState,
));
List<String> filteredPaymentsSelector(
SelectionState selectionState,
@ -86,6 +99,7 @@ List<String> filteredPaymentsSelector(
BuiltMap<String, InvoiceEntity> invoiceMap,
BuiltMap<String, ClientEntity> clientMap,
BuiltMap<String, UserEntity> userMap,
BuiltMap<String, PaymentTypeEntity> paymentTypeMap,
ListUIState paymentListState) {
final filterEntityId = selectionState.filterEntityId;
final filterEntityType = selectionState.filterEntityType;
@ -137,12 +151,14 @@ List<String> 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;

View File

@ -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,

View File

@ -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(),