Sylius\Bundle\ResourceBundle\Controller\ResourceController::applyStateMachineTransitionAction PHP Method

applyStateMachineTransitionAction() public method

public applyStateMachineTransitionAction ( Request $request ) : RedirectResponse
$request Symfony\Component\HttpFoundation\Request
return Symfony\Component\HttpFoundation\RedirectResponse
    public function applyStateMachineTransitionAction(Request $request)
    {
        $configuration = $this->requestConfigurationFactory->create($this->metadata, $request);
        $this->isGrantedOr403($configuration, ResourceActions::UPDATE);
        $resource = $this->findOr404($configuration);
        $event = $this->eventDispatcher->dispatchPreEvent(ResourceActions::UPDATE, $configuration, $resource);
        if ($event->isStopped() && !$configuration->isHtmlRequest()) {
            throw new HttpException($event->getErrorCode(), $event->getMessage());
        }
        if ($event->isStopped()) {
            $this->flashHelper->addFlashFromEvent($configuration, $event);
            return $this->redirectHandler->redirectToResource($configuration, $resource);
        }
        if (!$this->stateMachine->can($configuration, $resource)) {
            throw new BadRequestHttpException();
        }
        $this->stateMachine->apply($configuration, $resource);
        $this->manager->flush();
        $this->eventDispatcher->dispatchPostEvent(ResourceActions::UPDATE, $configuration, $resource);
        if (!$configuration->isHtmlRequest()) {
            return $this->viewHandler->handle($configuration, View::create($resource, Response::HTTP_OK));
        }
        $this->flashHelper->addSuccessFlash($configuration, ResourceActions::UPDATE, $resource);
        return $this->redirectHandler->redirectToResource($configuration, $resource);
    }