headers->get('x-auth-token'); $security->isGranted('MAESTRO_PROJECT_PROJECTS_UPDATE', $token); $method = 'addPageDuplicate'; $key = 'page'; $data = json_decode($request->getContent(), true); $views = []; if (isset(reset($data)['version'])) { foreach ($data as $d) { if (isset($d['id'])) { $pageName = isset($d['name']) ? (string) $d['name'] : ''; $nbElement = isset($d['nbProducts']) ? (int) $d['nbProducts'] : 0; $selectedElements = isset($d['elements']) ? $d['elements'] : []; $nbSelectedElement = count($selectedElements); $nbPages = isset($d['nbPages']) && $d['nbPages'] > 0 ? (int) $d['nbPages'] : 1; $pageId = $d['id']; $version = $d['version']; $originalName = $d['originalName']; if (count($selectedElements) > $nbElement && $nbElement !== 0) { if (!$pageName) { $pageName = $originalName; } $pageNumberToCreate = (int) $nbSelectedElement / (int) $nbElement; $oldIndex = 0; $newIndex = $nbElement; for ($i = 0; $i < $pageNumberToCreate; $i++) { $elements = array_slice($selectedElements, $oldIndex, $newIndex); $oldIndex += $nbElement; $views[] = new PageDuplicateCreateView( $pageId, $nbPages, $nbElement, $pageName . " " . ($i + 1), $version, (string) json_encode($elements), $nbSelectedElement ); } } else { $views[] = new PageDuplicateCreateView( $pageId, $nbPages, $nbElement, $pageName, $version, (string) json_encode($selectedElements), $nbSelectedElement ); } } else { throw new InternalServerErrorMaestroException("Missing parameter 'id' in request !"); } } $duplicatePages = $pageQuery->addPageDuplicate($views); $ids = $pageService->autoAssignMedias($duplicatePages); if (!empty($ids["pageOptionsId"])) { $pageService->managePagesGeneration($ids["pageOptionsId"], $duplicatePages, $token, $ids["pageIds"]); } return $respond->statusCreated()->createBodyObject(new CommonResponseView($ids["pageIds"], $method, $key, 'success'))->respond(); } else { throw new InternalServerErrorMaestroException("Missing parameter 'version' in request !"); } } }