serializer = $serializerService; } public function __invoke( Request $request, Security $security, RespondInterface $respond, PagePlaceQueryInterface $pagePlaceQuery, TransitionQueryInterface $projectTransitionQuery, ConfigurationQueryInterface $configQuery, ProfileQueryInterface $profileQuery, int $id, ParameterBagInterface $params ) { $body = [ 'type' => 'error', 'key' => 'workflow', 'method' => 'get', 'data' => '' ]; $token = $request->headers->get('x-auth-token'); $security->isGranted('MAESTRO_PROJECT_PROJECTS_READ', $token); $data = json_decode($request->getContent(), true); $pageDuplicateId = isset($data['pageDuplicateId']) && !empty($data['pageDuplicateId']) ? $data['pageDuplicateId'] : null; $version = isset($data['version']) && !empty($data['version']) ? $data['version'] : null; $pagePlace = $pagePlaceQuery->getPlace($id, $pageDuplicateId); $data = $this->serializer->serialize([ 'display' => [], 'transitions' => [], 'last_transition' => null ], 'json'); $grant = true; if ($params->get('workflow_enabled')) { $data = json_decode($request->getContent(), true); $pageDuplicateId = isset($data['pageDuplicateId']) && !empty($data['pageDuplicateId']) ? $data['pageDuplicateId'] : null; $pagePlace = $pagePlaceQuery->getPlace($id, $pageDuplicateId); $grant = $projectTransitionQuery->transitionUserValid($pagePlace['place']); if ($pagePlace && isset($pagePlace['place'])) { $config = $configQuery->display($pagePlace['place']); $transitions = $pagePlaceQuery->getStepsInfo($id); $transitionsWithStepName = []; if ($config && $transitions && isset($transitions['transitions'])) { $transitionsWithStepName = $pagePlaceQuery->setStepNameToTransitions($config, $transitions['transitions']); } $data = $this->serializer->serialize([ 'display' => $config, 'transitions' => $transitionsWithStepName, 'last_transition' => isset($transitions['lastTransition']) ? $transitions['lastTransition'] : null, ], 'json'); if (isset($data) || is_object($data)) { $pagePlace['display'] = $data; $pagePlace['grantSetValue'] = $grant; $body['type'] = 'success'; $body['data'] = $pagePlace; $respond->statusOk(); } else { $respond->statusUnprocessableEntity(); } } else { $pagePlace['display'] = $data; $pagePlace['grantSetValue'] = $grant; $body = [ 'type' => 'success', 'key' => 'workflow', 'method' => 'get', 'data' => $pagePlace ]; $respond->statusOk(); } } else { if (is_array($pagePlace) && !$pagePlace['workflowPage']) { $body = [ 'type' => 'success', 'key' => 'workflow', 'method' => 'get', 'data' => [] ]; $respond->statusUnprocessableEntity(); } else { $pagePlace['display'] = $data; $pagePlace['grantSetValue'] = $grant; $body = [ 'type' => 'success', 'key' => 'workflow', 'method' => 'get', 'data' => $pagePlace ]; $respond->statusOk(); } } return $respond->createBody($body)->respond(); } }