public function testSimpleCondition() { $condition = ['field' => 1, 'field2' => 2, 'field3' => ['field3' => 3, 'field4' => 4], 'field3a' => [3, 4], 'field5' => ['Lt' => ['asd', 1, 2, 3]], 'field6' => ['Lt' => 1], 'field7' => ['Lt' => 8], 'field8' => ['Gt' => ['asd', 1, 2, 3]], 'field9' => ['Gt' => 3], 'field10' => ['Gt' => 'ololo'], 'field11' => ['nEq' => ['asd', 1, 2, 3]], 'field12' => ['nEq' => 'asd'], 'field15' => ['LiKe' => 'asd']]; $conditionBuilder = new FilterGroupConditionBuilder(); $conditionBuilder->setConditions($condition); $conditions = $conditionBuilder->build(); $expect = [EqCondition::create('field', 1), EqCondition::create('field2', 2), InqCondition::create('field3a', [3, 4]), LtCondition::create('field6', 1), LtCondition::create('field7', 8), GtCondition::create('field9', 3), NeqCondition::create('field12', 'asd'), LikeCondition::create('field15', 'asd')]; $this->assertEquals($expect, $conditions->getConditions()); $this->assertEquals(FilterCondition::CONDITION_AND, $conditionBuilder->getGroup()); }
/** * @inheritdoc * @return FilterGroupConditionBuilder[] */ public function build($conditions = null) { $groups = []; foreach ($conditions as $groupOperator => $filterData) { $group = StringUtils::toLower($groupOperator); if (!in_array($group, $this->getAvailableGroups())) { $group = FilterCondition::CONDITION_AND; $filterData = [$groupOperator => $filterData]; } $conditionBuilder = new FilterGroupConditionBuilder(); $conditionBuilder->setGroup($group); $conditionBuilder->setEventDispatcher($this->dispatcher); $conditionBuilder->setConditions($filterData); try { $groups[] = $conditionBuilder->build(); } catch (InvalidConditionException $e) { continue; } } $this->groups = $groups; return $this->groups; }