Files
bigcapital/src/components/utils.js
2021-09-21 17:13:53 +02:00

47 lines
1.5 KiB
JavaScript

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;
};