Example #1
0
 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())));
 }