@@ 398-432 (lines=35) @@ | ||
395 | * |
|
396 | * @return RedirectResponse |
|
397 | */ |
|
398 | protected function doMoveUpAction(AbstractAdminListConfigurator $configurator, $entityId, Request $request) |
|
399 | { |
|
400 | $em = $this->getEntityManager(); |
|
401 | $sortableField = $configurator->getSortableField(); |
|
402 | ||
403 | $repositoryName = $this->getAdminListRepositoryName($configurator); |
|
404 | ||
405 | $repo = $em->getRepository($repositoryName); |
|
406 | $item = $repo->find($entityId); |
|
407 | ||
408 | $setter = 'set' . ucfirst($sortableField); |
|
409 | $getter = 'get' . ucfirst($sortableField); |
|
410 | ||
411 | $nextItem = $repo->createQueryBuilder('i') |
|
412 | ->where('i.' . $sortableField . ' < :weight') |
|
413 | ->setParameter('weight', $item->$getter()) |
|
414 | ->orderBy('i.' . $sortableField, 'DESC') |
|
415 | ->setMaxResults(1) |
|
416 | ->getQuery() |
|
417 | ->getOneOrNullResult(); |
|
418 | if ($nextItem) { |
|
419 | $nextItem->$setter($item->$getter()); |
|
420 | $em->persist($nextItem); |
|
421 | $item->$setter($item->$getter() - 1); |
|
422 | ||
423 | $em->persist($item); |
|
424 | $em->flush(); |
|
425 | } |
|
426 | ||
427 | $indexUrl = $configurator->getIndexUrl(); |
|
428 | ||
429 | return new RedirectResponse( |
|
430 | $this->generateUrl($indexUrl['path'], isset($indexUrl['params']) ? $indexUrl['params'] : []) |
|
431 | ); |
|
432 | } |
|
433 | ||
434 | protected function doMoveDownAction(AbstractAdminListConfigurator $configurator, $entityId, Request $request) |
|
435 | { |
|
@@ 434-468 (lines=35) @@ | ||
431 | ); |
|
432 | } |
|
433 | ||
434 | protected function doMoveDownAction(AbstractAdminListConfigurator $configurator, $entityId, Request $request) |
|
435 | { |
|
436 | $em = $this->getEntityManager(); |
|
437 | $sortableField = $configurator->getSortableField(); |
|
438 | ||
439 | $repositoryName = $this->getAdminListRepositoryName($configurator); |
|
440 | ||
441 | $repo = $em->getRepository($repositoryName); |
|
442 | $item = $repo->find($entityId); |
|
443 | ||
444 | $setter = 'set' . ucfirst($sortableField); |
|
445 | $getter = 'get' . ucfirst($sortableField); |
|
446 | ||
447 | $nextItem = $repo->createQueryBuilder('i') |
|
448 | ->where('i.' . $sortableField . ' > :weight') |
|
449 | ->setParameter('weight', $item->$getter()) |
|
450 | ->orderBy('i.' . $sortableField, 'ASC') |
|
451 | ->setMaxResults(1) |
|
452 | ->getQuery() |
|
453 | ->getOneOrNullResult(); |
|
454 | if ($nextItem) { |
|
455 | $nextItem->$setter($item->$getter()); |
|
456 | $em->persist($nextItem); |
|
457 | $item->$setter($item->$getter() + 1); |
|
458 | ||
459 | $em->persist($item); |
|
460 | $em->flush(); |
|
461 | } |
|
462 | ||
463 | $indexUrl = $configurator->getIndexUrl(); |
|
464 | ||
465 | return new RedirectResponse( |
|
466 | $this->generateUrl($indexUrl['path'], isset($indexUrl['params']) ? $indexUrl['params'] : []) |
|
467 | ); |
|
468 | } |
|
469 | ||
470 | private function getMaxSortableField($repo, $sort) |
|
471 | { |