Ojs\JournalBundle\Controller\BoardController::memberSortAction PHP Method

memberSortAction() public method

public memberSortAction ( Request $request, $boardId ) : Response
$request Symfony\Component\HttpFoundation\Request
$boardId
return Symfony\Component\HttpFoundation\Response
    public function memberSortAction(Request $request, $boardId)
    {
        $em = $this->getDoctrine()->getManager();
        $journal = $this->get('ojs.journal_service')->getSelectedJournal();
        $members = $em->getRepository(BoardMember::class)->findBy(['board' => $boardId]);
        usort($members, function ($a, $b) {
            return $a->getSeq() > $b->getSeq();
        });
        $sortData = [];
        foreach ($members as $member) {
            $sortData[$member->getId()] = $member->getSeq();
        }
        if ($request->getMethod() == 'POST' && $request->request->has('sortData')) {
            $sortData = json_decode($request->request->get('sortData'));
            foreach ($sortData as $memberId => $order) {
                foreach ($members as $member) {
                    if ($member->getId() == $memberId) {
                        $member->setSeq($order);
                        $em->persist($member);
                    }
                }
            }
            $em->flush();
            $this->successFlashBag('successful.update');
            return $this->redirectToRoute('ojs_journal_board_member_sort', ['journalId' => $journal->getId(), 'boardId' => $boardId]);
        }
        return $this->render('OjsJournalBundle:Board:member_sort.html.twig', ['members' => $members, 'jsonSortData' => json_encode($sortData), 'boardId' => $boardId]);
    }