Ejemplo n.º 1
0
 /**
  * @Route("/budget/{budget_id}/bill/new", name="sb_bill_new", requirements={"budget_id": "\d+"})
  */
 public function newAction(Request $request, $budget_id)
 {
     $budget = $this->get('app.checker')->budget($this->getUser(), $budget_id, false);
     $bill = new Bill();
     $bill->setBudget($budget);
     if (!$bill->getDate()) {
         $bill->setDate(new \DateTime());
     }
     $members = $budget->getMembers();
     if ($bill->getGuests()->isEmpty()) {
         $bill->setGuests($members);
     }
     $query = $request->query;
     if ($query->has('name') && $query->has('price') && $query->has('payer') && $query->has('payee')) {
         $bill->reimbursement($query->get('name'), $query->get('price'), $query->get('payer'), $query->get('payee'));
     }
     $form = $this->createForm(BillType::class, $bill, array('members' => $members));
     $form->handleRequest($request);
     if ($form->isSubmitted() && $form->isValid()) {
         $bill->setUser($this->getUser());
         $action = Action::newBill($budget, $this->getUser(), $bill->toArray());
         $em = $this->getDoctrine()->getManager();
         $em->persist($bill);
         $em->persist($action);
         $em->flush();
         $this->addFlash('notice', $this->get('translator')->trans('bill.createsuccessful'));
         return $this->redirectToRoute('sb_budget_show', array('id' => $budget->getId()));
     }
     return $this->render('bill/form.html.twig', array('form' => $form->createView(), 'budget' => $budget));
 }