/** * @param Request $request * @param Client $client * * @return \Symfony\Component\HttpFoundation\JsonResponse */ public function addAction(Request $request, Client $client) { $form = $this->createForm(new CreditType(), null, array('action' => $this->generateUrl('_clients_add_credit', array('id' => $client->getId())))); $form->handleRequest($request); if ($form->isValid()) { /** @var CreditRepository $clientRepository */ $clientRepository = $this->getRepository('CSBillClientBundle:Credit'); /** @var Money $amount */ $amount = $form->get('amount')->getData(); $credit = $clientRepository->addCredit($client, $amount); return $this->json(array('status' => 'success', 'amount' => $this->get('csbill.money.formatter')->format($credit->getValue()))); } $content = $this->renderView('CSBillClientBundle:Ajax:credit_add.html.twig', array('form' => $form->createView())); return $this->json(array('content' => $content)); }
/** * @param Request $request * @param Client $client * * @return mixed */ public function creditAction(Request $request, Client $client) { $jsonResponse = function (Credit $credit) use($client) { return $this->json(['credit' => $this->get('csbill.money.formatter')->toFloat($credit->getValue()), 'id' => $client->getId()]); }; if ($request->isMethod('GET')) { return $jsonResponse($client->getCredit()); } if ($request->isMethod('PUT')) { /** @var CreditRepository $repository */ $repository = $this->getRepository('CSBillClientBundle:Credit'); $value = new Money((int) ($request->request->get('credit') * 100), $this->get('currency')); return $jsonResponse($repository->addCredit($client, $value)); } throw new BadRequestHttpException(); }