/
isVisibleProposal.ts
44 lines (40 loc) · 1.4 KB
/
isVisibleProposal.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import { IProposal, ProposalFilter } from '../interfaces'
import { BooleanFilterOption } from '@core/utils/enums/filters'
export function isVisibleProposal(proposal: IProposal, filter: ProposalFilter): boolean {
if (!isVisibleWithActivePhaseFilter(proposal, filter)) {
return false
}
if (!isVisibleWithActiveTypeFilter(proposal, filter)) {
return false
}
if (!isVisibleWithActivePraticipatedFilter(proposal, filter)) {
return false
}
return true
}
function isVisibleWithActivePraticipatedFilter(proposal: IProposal, filter: ProposalFilter): boolean {
if (
filter.participated.active &&
((filter.participated.selected === BooleanFilterOption.No && proposal.participated) ||
(filter.participated.selected === BooleanFilterOption.Yes && !proposal.participated))
) {
return false
}
return true
}
function isVisibleWithActiveTypeFilter(proposal: IProposal, filter: ProposalFilter): boolean {
if (filter.type.active && filter.type.selected) {
if (filter.type.selected !== proposal.type) {
return false
}
}
return true
}
function isVisibleWithActivePhaseFilter(proposal: IProposal, filter: ProposalFilter): boolean {
if (filter.phase.active && filter.phase.selected) {
if (filter.phase.selected !== proposal.status) {
return false
}
}
return true
}