Ojs\JournalBundle\Controller\JournalContactController::sortAction PHP Метод

sortAction() публичный Метод

public sortAction ( Request $request ) : Response
$request Symfony\Component\HttpFoundation\Request
Результат Symfony\Component\HttpFoundation\Response
    public function sortAction(Request $request)
    {
        $em = $this->getDoctrine()->getManager();
        $journal = $this->get('ojs.journal_service')->getSelectedJournal();
        $contacts = $em->getRepository(JournalContact::class)->findAll();
        usort($contacts, function ($a, $b) {
            return $a->getContactOrder() > $b->getContactOrder();
        });
        $sortData = [];
        foreach ($contacts as $contact) {
            $sortData[$contact->getId()] = $contact->getContactOrder();
        }
        if ($request->getMethod() == 'POST' && $request->request->has('sortData')) {
            $sortData = json_decode($request->request->get('sortData'));
            foreach ($sortData as $contactId => $order) {
                foreach ($contacts as $contact) {
                    if ($contact->getId() == $contactId) {
                        $contact->getContactOrder($order);
                        $em->persist($contact);
                    }
                }
            }
            $em->flush();
            $this->successFlashBag('successful.update');
            return $this->redirectToRoute('ojs_journal_journal_contact_sort', ['journalId' => $journal->getId()]);
        }
        return $this->render('OjsJournalBundle:JournalContact:sort.html.twig', ['contacts' => $contacts, 'jsonSortData' => json_encode($sortData)]);
    }