public function triggerOnTransaction(Transaction $transaction) { $administration = $transaction->getAdministration(); $repo = $this->entityManager->getRepository('HomefinanceBundle:Rule'); $rules = $repo->findByAdministration($administration); foreach ($rules as $rule) { $this->triggerRule($transaction, $rule); } }
protected function edit(Transaction $transaction, Request $request, $redirect = nul) { $repo = $this->getDoctrine()->getRepository('HomefinanceBundle:BankAccount'); $bank_accounts = $repo->choices($transaction->getAdministration()); $transactionManager = $this->get('homefinance.transaction.manager'); $tagManager = $this->get('homefinance.tag.manager'); $tags = $tagManager->listAllTags(); $categoryManager = $this->get('homefinance.category.manager'); $categories = $categoryManager->allLeafCategories(); $form = $this->createForm('transaction', $transaction, array('bank_accounts' => $bank_accounts, 'categories' => $categories)); if ($transaction->getId() && !$transaction->isProcessed()) { $form->add('save_process_next', 'submit', array('label' => 'transaction.save_process_next.btn-label', 'attr' => array('class' => 'btn btn-lg btn-success'))); $form->add('cancel_and_next', 'submit', array('label' => 'transaction.cancel_and_next.btn-label', 'attr' => array('class' => 'btn btn-lg btn-warning'))); } $form->handleRequest($request); if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); $nextTransaction = null; if ($form->has('save_process_next') && $form->get('save_process_next')->isClicked()) { $nextTransaction = $transactionManager->getNextUnprocessedTransaction($transaction->getAdministration(), $transaction); } elseif ($form->has('cancel_and_next') && $form->get('cancel_and_next')->isClicked()) { $nextTransaction = $transactionManager->getNextUnprocessedTransaction($transaction->getAdministration(), $transaction); return $this->redirect($this->generateUrl('transaction_edit', array('id' => $nextTransaction->getId()))); } $transaction->setProcessed(true); $engine = $this->get('homefinance.rules.engine'); $engine->triggerOnTransaction($transaction); $em->persist($transaction); $em->flush(); $this->addFlash('success', 'transaction.updated'); if ($nextTransaction != null) { return $this->redirect($this->generateUrl('transaction_edit', array('id' => $nextTransaction->getId()))); } if ($redirect) { return $this->redirect($this->generateUrl($redirect)); } return $this->redirect($this->generateUrl('list_unprocessed_transactions')); } return $this->render('HomefinanceBundle:Transaction:edit.html.twig', array('form' => $form->createView(), 'tags' => $tags, 'transaction' => $transaction)); }