headers->get('x-auth-token'); $security->isGranted('MAESTRO_PROJECT_PROJECTS_UPDATE', $token); if (!$params->get('workflow_enabled')) { $body = [ 'type' => 'error', 'key' => 'workflow_enabled', 'method' => 'get', 'data' => 'Not authorized!', ]; return $respond->statusUnauthorized()->createBody($body)->respond(); } $obj = json_decode($request->getContent(), true); if (!$obj) { $body = [ 'type' => 'error', 'key' => 'request', 'method' => 'get', 'data' => 'Please provide a project !', ]; return $respond->statusUnprocessableEntity()->createBody($body)->respond(); } if (!$obj['transition']) { $body = [ 'type' => 'error', 'key' => 'request', 'method' => 'get', 'data' => 'Please provide a transitions !', ]; return $respond->statusUnprocessableEntity()->createBody($body)->respond(); } $transition = $transitionQuery->read($obj['transition']); $transitionDb = $transitionRepo->findByKey($obj['transition']); $statusView = new StatusView( (int) $obj['object_id'], $obj['transition'], $transitionDb->getConfiguration()->getId() ); $note = ""; if (isset($obj['note'])) { $note = $obj['note']; } $changePlace = $registryCustom->applyStatusPage($statusView, $transitionDb->getConfiguration()->getId(), $obj['pageDuplicateId'], $note); if ($changePlace && $changePlace['currentPlace']) { $users = json_decode(json_encode($transition->users), true); // $element = $elementReadQuery->readArray($obj['element']); $userIds = array_map(function ($user) { return $user['id']; }, $transition->users); $viewId = new CommonIdView( $obj['object_id'] ); $page = $pageQuery->read($viewId); $information = []; $information = [ "export" => [ "id" => $page->getCdf()->getExport()->getId(), "name" => $page->getCdf()->getExport()->getName() ], "project" => [ "id" => $page->getCdf()->getExport()->getProject()->getId(), "name" => $page->getCdf()->getExport()->getProject()->getName() ] ]; $info = json_encode($information); $notifView = [ "subject" => $page->getOption()->getName(), "subjectId" => $obj['object_id'], "userIds" => $userIds, "action" => strpos($statusView->transition, 'Reject') ? "reject" : "valid", "isRead" => false, "type" => "page", "info" => $info, "autho" => null, ]; $token = $requestStack->getCurrentRequest()->headers->get('x-auth-token'); $notificationProvider->saveNotification($notifView, $token); $transitionView = new StartEndTransitionView( $transition->startPlace->nom, $transition->endPlace->nom, (int) $obj['object_id'] ); if ($transitionDb->getEndPlace()->getSendMail()) { $mail->execute($users, $transitionView, $request->headers->get('x-auth-token')); } else { $mail = true; } } if (!$changePlace) { $body = [ 'type' => 'error', 'key' => 'changePlace', 'method' => 'post', 'data' => '', ]; $respond->statusUnauthorized(); } else { $body = [ 'type' => 'success', 'key' => 'changePlace', 'method' => 'post', 'data' => $changePlace, ]; $respond->statusOK(); } return $respond->createBody($body)->respond(); } }