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; }