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' => '', ]; return $respond->statusUnauthorized()->createBody($body)->respond(); } $config = json_decode($request->getContent(), false); if (!$config->configuration) { $body = [ 'type' => 'error', 'key' => 'config', 'method' => 'get', 'data' => '', ]; return $respond->statusUnprocessableEntity()->createBody($body)->respond(); } if (!$config->places) { $body = [ 'type' => 'error', 'key' => 'config', 'method' => 'get', 'data' => 'Please provide a places !', ]; return $respond->statusUnprocessableEntity()->createBody($body)->respond(); } if (!$config->transitions) { $body = [ 'type' => 'error', 'key' => 'config', 'method' => 'get', 'data' => 'Please provide a transitions !', ]; return $respond->statusUnprocessableEntity()->createBody($body)->respond(); } $configuration = new ConfigurationCreateView( $config->configuration->name, $config->configuration->id ); $places = []; $placeIds = []; foreach ($config->places as $place) { $places[] = new PlaceProjectCreateView( $place->id, $place->name, $place->color, $place->default, $place->date_fin, $place->users, $place->blockPictures, $place->blockTexts, isset($place->sendMail) ? $place->sendMail : false ); if (isset($place->id) && !empty($place->id)) { $placeIds[] = $place->id; } } $placesKeys = []; if (!empty($placeIds)) { $placesKeys = $placesQuery->getKeysByIds($placeIds); } $transitions = []; foreach ($config->transitions as $transition) { $transitions[] = new TransitionCreateView( $transition->name, $transition->position, $transition->debut, $transition->fin, $transition->users, $transition->commands ); } $projectPlace->changePlaceKey($configuration, $places); $ids = []; if ($config->configuration->id) { $projectIds = $project->listIdByWorkflowId($config->configuration->id); $ids = []; foreach ($projectIds as $projectId) { $ids[] = $projectId->id; } } $configurationCreate = $configurationQery->create($configuration, $places, $transitions, $config->module); if ($configurationCreate && !empty($ids)) { $providerPlace->firstPlace($ids, $config->configuration->id); } if ($configurationCreate && !empty($placesKeys)) { $nbPlace = count($placesKeys); $keys = $placesQuery->getKeysByConfig($config->configuration->id); for ($i = 0; $i < $nbPlace; $i++) { # code... $index = array_search($placesKeys[$i]['id'], array_column($keys, 'id')); if (is_int($index)) { $placesKeys[$i]['newKey'] = $keys[$index]['key']; } } if ($config->module == 'projects') { $workflowProjectSaveQuery->changeCurrentPlaceKey($placesKeys); } else { $pagePlaceQuery->changeCurrentPlaceKey($placesKeys); } } if (!$configurationCreate) { $body = [ 'type' => 'error', 'key' => 'configurationCreate', 'method' => 'create', 'data' => '', ]; $respond->statusUnauthorized(); } else { $body = [ 'type' => 'success', 'key' => 'configurationCreate', 'method' => 'create', 'data' => $configurationCreate, ]; $respond->statusCreated(); } return $respond->createBody($body)->respond(); } }