/** * @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)); }