diff --git a/client/src/components/AdvancedFilter/utils.js b/client/src/components/AdvancedFilter/utils.js index 441864897..bf14b3a80 100644 --- a/client/src/components/AdvancedFilter/utils.js +++ b/client/src/components/AdvancedFilter/utils.js @@ -29,6 +29,8 @@ export const getTextCompatators = () => [ { value: 'not_contain', label: intl.get('not_contain') }, { value: 'equal', label: intl.get('equals') }, { value: 'not_equal', label: intl.get('not_equals') }, + { value: 'starts_with', label: intl.get('starts_with') }, + { value: 'ends_with', label: intl.get('ends_with') }, ]; export const getDateCompatators = () => [ diff --git a/client/src/lang/ar/index.json b/client/src/lang/ar/index.json index 1dc9bb675..575652cef 100644 --- a/client/src/lang/ar/index.json +++ b/client/src/lang/ar/index.json @@ -209,6 +209,8 @@ "not_equal": "ليس متساوي", "contain": "يحتوي", "not_contain": "لا يحتوي", + "starts_with": "يبدأ بـ", + "ends_with": "ينتهي بـ", "cash": "النقدية", "accrual": "الاستحقاق", "from": "من", diff --git a/client/src/lang/en/index.json b/client/src/lang/en/index.json index a24a977d5..fc5514fe8 100644 --- a/client/src/lang/en/index.json +++ b/client/src/lang/en/index.json @@ -202,6 +202,8 @@ "not_equal": "Not Equal", "contain": "Contain", "not_contain": "Not Contain", + "starts_with": "Starts with", + "ends_with": "Ends with", "cash": "Cash", "accrual": "Accrual", "from": "From", diff --git a/server/src/lib/DynamicFilter/DynamicFilterRoleAbstructor.ts b/server/src/lib/DynamicFilter/DynamicFilterRoleAbstructor.ts index a73c20674..fddc7ecb4 100644 --- a/server/src/lib/DynamicFilter/DynamicFilterRoleAbstructor.ts +++ b/server/src/lib/DynamicFilter/DynamicFilterRoleAbstructor.ts @@ -255,6 +255,17 @@ export default abstract class DynamicFilterAbstructor return (builder) => { builder.whereNot(comparatorColumn, 'LIKE', `%${role.value}%`); }; + case COMPARATOR_TYPE.STARTS_WITH: + case COMPARATOR_TYPE.START_WITH: + return (builder) => { + builder.where(comparatorColumn, 'LIKE', `${role.value}%`); + }; + case COMPARATOR_TYPE.ENDS_WITH: + case COMPARATOR_TYPE.END_WITH: + return (builder) => { + builder.where(comparatorColumn, 'LIKE', `%${role.value}`); + }; + } }; diff --git a/server/src/lib/DynamicFilter/constants.ts b/server/src/lib/DynamicFilter/constants.ts index 6dcea30c2..f845e16c9 100644 --- a/server/src/lib/DynamicFilter/constants.ts +++ b/server/src/lib/DynamicFilter/constants.ts @@ -24,6 +24,12 @@ export const COMPARATOR_TYPE = { AFTER: 'after', BEFORE: 'before', IN: 'in', + + STARTS_WITH: 'starts_with', + START_WITH: 'start_with', + + ENDS_WITH: 'ends_with', + END_WITH: 'end_with' }; export const FIELD_TYPE = {