protected function areConditionsValid(Transaction $transaction, Rule $rule) { if ($transaction->isProcessed()) { return false; } $isValid = true; $firstCondition = true; foreach ($rule->getConditions() as $condition) { $conditionClass = $this->factory->getConditionClass($condition->getCondition()); $conditionIsValid = $conditionClass->checkCondition($transaction, $condition); if ($firstCondition) { $isValid = $conditionIsValid ? true : false; $firstCondition = false; } elseif ($condition->getConditionLink() == 'OR') { if ($isValid || $conditionIsValid) { $isValid = true; } else { $isValid = false; } } else { if ($isValid && $conditionIsValid) { $isValid = true; } else { $isValid = false; } } } return $isValid; }
/** * @Route("/add", name="add_rule") * @param Request $request * @return string */ public function addRule(Request $request) { $administration = $this->checkCurrentAdministration(Permission::EDIT); $rule = new Rule(); $rule->setAdministration($administration); $em = $this->getDoctrine()->getManager(); $em->persist($rule); $em->flush(); $this->addFlash('success', 'rule.added'); return $this->redirect($this->generateUrl('add_condition', array('rule_id' => $rule->getId()))); }