Hi JuniorAX,
First, you need to write SQL query to understand how to construct it via SysComputed
select ... where (status = A or status = C or status = D or (status = F and field1 = my_value)
After you need to divide the filter part (after where) by logical groups, as you see you have one 'and' condition and the rest is 'or'
Then you just start implementing x with SysComputedColumn class bases on logical where groups (in the end you should get something like below (i didn't test it))
List andConditionList = new List(Types::String);
List orConditionList = new List(Types::String);
//Add A status to 'or' condition list
orConditionList.addEnd(
SysComputedColumn::equalExpression(
SysComputedColumn::comparisonField(tableStr(Entity1), identifierStr(Table1) , fieldStr(Table1, Status)),
SysComputedColumn::comparisonLiteral(enum2int(Status::A)))
);
//Add C status to 'or' condition list
orConditionList.addEnd(
SysComputedColumn::equalExpression(
SysComputedColumn::comparisonField(tableStr(Entity1), identifierStr(Table1) , fieldStr(Table1, Status)),
SysComputedColumn::comparisonLiteral(enum2int(Status::C)))
);
//Add D status to 'or' condition list
orConditionList.addEnd(
SysComputedColumn::equalExpression(
SysComputedColumn::comparisonField(tableStr(Entity1), identifierStr(Table1) , fieldStr(Table1, Status)),
SysComputedColumn::comparisonLiteral(enum2int(Status::D)))
);
//Start creating and condition for F status
//Add status F to 'and' condition list
andConditionList.addEnd(
SysComputedColumn::equalExpression(
SysComputedColumn::comparisonField(tableStr(Entity1), identifierStr(Table1) , fieldStr(Table1, Status)),
SysComputedColumn::comparisonLiteral(enum2int(Status::F)))
);
//Add field1 to 'and' condition list
andConditionList.addEnd(
SysComputedColumn::equalExpression(
SysComputedColumn::comparisonField(tableStr(Entity1), identifierStr(Table1) , fieldStr(Table1, Field1)),
SysComputedColumn::comparisonLiteral(value_for_field1)
);
//Add 'and' condition to 'or' condtition list
orConditionList.addEnd(SysComputedColumn::and(andConditionList));
//Final if
return SysComputedColumn::if(
SysComputedColumn::or(orConditionList),
SysComputedColumn::returnLiteral(1),
SysComputedColumn::returnLiteral(0)
);