feat(expenses): filter expenses accounts.

This commit is contained in:
a.bouhuolia
2021-03-08 17:20:02 +02:00
parent 274324a6d9
commit bb41fe7ce5
8 changed files with 136 additions and 99 deletions

View File

@@ -0,0 +1,46 @@
import { castArray, isEmpty, includes, pickBy } from 'lodash';
/**
* Filters the given accounts of the given query.
* @param {*} accounts
* @param {*} queryProps
* @returns {*}
*/
export const filterAccountsByQuery = (accounts, queryProps) => {
const defaultQuery = {
filterByParentTypes: [],
filterByTypes: [],
filterByNormal: [],
filterByRootTypes: [],
...pickBy(queryProps, v => v !== undefined),
};
const query = {
filterByParentTypes: castArray(defaultQuery.filterByParentTypes),
filterByTypes: castArray(defaultQuery.filterByTypes),
filterByNormal: castArray(defaultQuery.filterByNormal),
filterByRootTypes: castArray(defaultQuery.filterByRootTypes),
};
let filteredAccounts = [...accounts];
if (!isEmpty(query.filterByParentTypes)) {
filteredAccounts = filteredAccounts.filter((account) =>
includes(query.filterByParentTypes, account.account_parent_type),
);
}
if (!isEmpty(query.filterByTypes)) {
filteredAccounts = filteredAccounts.filter((account) =>
includes(query.filterByTypes, account.account_type),
);
}
if (!isEmpty(query.filterByNormal)) {
filteredAccounts = filteredAccounts.filter((account) =>
includes(query.filterByTypes, account.account_normal),
);
}
if (!isEmpty(query.filterByRootTypes)) {
filteredAccounts = filteredAccounts.filter((account) =>
includes(query.filterByRootTypes, account.account_root_type),
);
}
return filteredAccounts;
};