/**
  * @param HasPageTemplateInterface $page The page
  *
  * @return PageTemplateConfiguration
  */
 public function findOrCreateFor(HasPageTemplateInterface $page)
 {
     $pageTemplateConfiguration = $this->repo->findFor($page);
     if (null === $pageTemplateConfiguration) {
         $pageTemplates = $this->reader->getPageTemplates($page);
         $names = array_keys($pageTemplates);
         $defaultPageTemplate = $pageTemplates[$names[0]];
         $pageTemplateConfiguration = new PageTemplateConfiguration();
         $pageTemplateConfiguration->setPageId($page->getId());
         $pageTemplateConfiguration->setPageEntityName(ClassLookup::getClass($page));
         $pageTemplateConfiguration->setPageTemplate($defaultPageTemplate->getName());
     }
     return $pageTemplateConfiguration;
 }
 /**
  * @param HasPageTemplateInterface $page
  * @param Request $request
  * @param EntityManagerInterface $em
  * @param PagePartAdminFactory $pagePartAdminFactory
  * @param PageTemplateConfigurationReaderInterface $templateReader
  * @param PagePartConfigurationReaderInterface $pagePartReader
  * @param PageTemplateConfigurationService $pageTemplateConfiguratiorService
  */
 public function __construct(HasPageTemplateInterface $page, Request $request, EntityManagerInterface $em, PagePartAdminFactory $pagePartAdminFactory, PageTemplateConfigurationReaderInterface $templateReader, PagePartConfigurationReaderInterface $pagePartReader, PageTemplateConfigurationService $pageTemplateConfiguratiorService)
 {
     parent::__construct();
     $this->page = $page;
     $this->em = $em;
     $this->request = $request;
     $this->pagePartAdminFactory = $pagePartAdminFactory;
     $this->pageTemplates = $templateReader->getPageTemplates($page);
     $this->pagePartAdminConfigurations = $pagePartReader->getPagePartAdminConfigurators($page);
     $this->pageTemplateConfiguration = $pageTemplateConfiguratiorService->findOrCreateFor($page);
     foreach ($this->getPageTemplate()->getRows() as $row) {
         foreach ($row->getRegions() as $region) {
             $this->processRegion($region);
         }
     }
 }