public function addAction(Request $request)
{
$node = new Topic();
$translator = $this->get('translator');
$cacheService = $this->get('newscoop.cache');
$form = $this->createForm(new TopicType(), $node);
$form->handleRequest($request);
$response = array('status' => false, 'message' => $translator->trans('topics.error', array(), 'topics'));
if (!$this->get('form.csrf_provider')->isCsrfTokenValid('default', $request->get('_csrf_token'))) {
return new JsonResponse(array('status' => false, 'message' => $translator->trans('topics.csrfinvalid', array(), 'topics')), 403);
}
if ($form->isValid()) {
$locale = $request->get('_code', $request->getLocale());
$topicService = $this->get('newscoop_newscoop.topic_service');
try {
$topicService->saveNewTopic($node, $locale);
} catch (\Exception $e) {
$response = array('status' => false, 'message' => $translator->trans('topics.exists', array(), 'topics'));
return new JsonResponse($response, 409);
}
$response = array('status' => true, 'message' => $translator->trans('topics.added', array(), 'topics'), 'topicId' => $node->getId(), 'topicTitle' => $node->getTitle(), 'locale' => $locale);
$cacheService->clearNamespace('topic');
} else {
$response = array('status' => false, 'message' => $form->getErrors()->getChildren()->getMessage());
}
return new JsonResponse($response);
}