public function createAction($groupId = 0)
 {
     $entity = new User();
     $route = $this->router->getCurrentRoute();
     $formProvider = new FormProvider();
     $this->response->prepareForJson();
     $em = $this->dataProvider->getEntityManager();
     if ($route == 'admin_user_create') {
         $url = $this->router->getUrlByRoute('admin_user_create', array(), false);
         $returnedValue = $this->createReturnedArray('create');
     }
     if ($route == 'admin_user_create_in_group') {
         $url = $this->router->getUrlByRoute('admin_user_create_in_group', array('groupId' => $groupId), false);
         $returnedValue = $this->createReturnedArray('create_in_group');
     }
     $form = $formProvider->getUserEditForm($url, $em->getRepository(get_class($entity)));
     $form->writeFromRequest($this->request);
     if ($form->isValid()) {
         $form->writeToEntity($entity);
         $entity->setWasChecked(true);
         $em->persist($entity);
         $em->flush();
         if ($route == 'admin_user_create_in_group') {
             $manager = new Manager($em, $this->router);
             $branch = $manager->buildGroupTree($groupId);
             $users = $branch->getUsers();
             $users->add($entity->getId());
             $manager->addUsersToGroup($groupId, $users->toArray());
             $returnedValue['view'] = json_encode($manager->prepareGroupTreeForJson($branch)[0]);
         } else {
             $returnedValue['view'] = $this->viewer->render('user_manager::user::newRow.html.twig', array('entity' => $entity));
         }
     } else {
         $returnedValue['status'] = 'failed';
         $returnedValue['view'] = $this->viewer->render('user_manager::user::edit.html.twig', array('entity' => $entity, 'edit_form' => $form));
     }
     return $this->acceptSolutionFlushToResponse(json_encode($returnedValue));
 }
 public function updateUsersListAction($id)
 {
     $em = $this->dataProvider->getEntityManager();
     $entity = $em->getRepository('LW\\Model\\Entity\\Group')->find($id);
     if (!$entity) {
         throw new \Exception('Unable to find Group entity.');
     }
     $formProvider = new FormProvider();
     $url = $this->router->getUrlByRoute('admin_group_update_users_list', array('id' => $id), false);
     $form = $formProvider->getGroupUsersListForm($url);
     $form->writeFromRequest($this->request);
     $this->response->prepareForJson();
     $returnedValue = $this->createReturnedArray('update_users_list');
     $manager = new Manager($em, $this->router);
     if ($form->isValid()) {
         $users = json_decode($form->getField('users')->getValue());
         $manager->addUsersToGroup($id, $users);
         $branch = $manager->buildGroupTree($id);
         $returnedValue['view'] = json_encode($manager->prepareGroupTreeForJson($branch)[0]);
     } else {
         $entityMoved = $manager->getGroup($form->get('movedId')->getData());
         $returnedValue['status'] = 'failed';
         $returnedValue['view'] = sprintf('Редактирование списка подльзователей для группы <b>%s</b> не было сохранено', $entityMoved->getName());
     }
     return $this->acceptSolutionFlushToResponse(json_encode($returnedValue));
 }