public function createAction($ownerId)
 {
     $entity = new Group();
     $entity->setOwner($ownerId);
     $formProvider = new FormProvider();
     $form = $formProvider->getGroupEditForm();
     $form->writeFromRequest($this->request);
     $this->response->prepareForJson();
     $returnedValue = $this->createReturnedArray('create');
     if ($ownerId != 0) {
         $returnedValue['action'] = 'create_in';
     }
     if ($form->isValid()) {
         $em = $this->dataProvider->getEntityManager();
         $entity->setInnerOrder($em->getRepository(get_class($entity))->getNextNumberByOwner($ownerId));
         $form->writeToEntity($entity);
         $em->persist($entity);
         $em->flush();
         $returnedValue['view'] = (new Manager($em, $this->router))->getGroupAsJson($entity);
     } else {
         $returnedValue['status'] = 'failed';
         $returnedValue['view'] = $this->viewer->render('user_manager::group::edit.html.twig', array('entity' => $entity, 'edit_form' => $form));
     }
     return $this->acceptSolutionFlushToResponse(json_encode($returnedValue));
 }
 public function reorderInOwners(Group $entity, $position, $oldOwnerId, $newOwnerId)
 {
     /**
      * @var $item Group
      */
     $collection = $this->findBy(array('owner' => $newOwnerId), array('innerOrder' => 'ASC'));
     $collectionOld = array();
     if ($oldOwnerId == $newOwnerId) {
         if ($entity->getInnerOrder() < $position) {
             $beginning = $entity->getInnerOrder() + 1;
             $ending = $position;
             $increment = -1;
         }
         if ($entity->getInnerOrder() > $position) {
             $beginning = $position;
             $ending = $entity->getInnerOrder();
             $increment = 1;
         }
     }
     if ($oldOwnerId != $newOwnerId) {
         $collectionOld = $this->findBy(array('owner' => $oldOwnerId), array('innerOrder' => 'ASC'));
         unset($collectionOld[$entity->getInnerOrder() - 1]);
         $beginning = $position;
         $ending = $position;
         $increment = 0;
         $countInCollection = count($collection);
         if ($countInCollection > 0) {
             $ending = $collection[$countInCollection - 1]->getInnerOrder();
             $increment = 1;
         }
     }
     foreach ($collection as $item) {
         if ($item->getInnerOrder() >= $beginning && $item->getInnerOrder() <= $ending) {
             $item->setInnerOrder($item->getInnerOrder() + $increment);
         }
     }
     $i = 1;
     foreach ($collectionOld as $item) {
         $item->setInnerOrder($i);
         array_unshift($collection, $item);
         $i++;
     }
     $entity->setInnerOrder($position);
     $entity->setOwner($newOwnerId);
     array_unshift($collection, $entity);
     $this->getEntityManager()->flush($collection);
 }
 private function generateGroup($name)
 {
     $group = new Group();
     $group->setName($name);
     $group->setOwner(0);
     $group->setIsActive(true);
     return $group;
 }