element = new \PSC\Library\Calc\Option\Type\PaperDbSelect(); } elseif ($mode != null && $mode == \PSC\Library\Calc\Option\Type\Select::$modeDelivery) { $this->element = new \PSC\Library\Calc\Option\Type\DeliverySelect(); } elseif ($mode != null && $mode == \PSC\Library\Calc\Option\Type\Select::$modeColorDb) { $this->element = new \PSC\Library\Calc\Option\Type\ColorDBSelect(); } else { $this->element = new \PSC\Library\Calc\Option\Type\Select(); } } public function parseJson(): PSCSelect { parent::parseJson(); if (isset($this->json['dependencys']) && count($this->json['dependencys']) > 0) { $edgeCollectionContainerParser = new EdgeCollectionContainer(); $edgeCollectionContainerParser->fromJson($this->json['dependencys']); $this->element->setEdgesCollectionContainer($edgeCollectionContainerParser->parseJson()); } if ( isset($this->json['mode']) && (string) $this->json['mode'] == \PSC\Library\Calc\Option\Type\Select::$modePaperDb ) { $this->parseModePapierDbJson(); } elseif ( isset($this->json['mode']) && (string) $this->json['mode'] == \PSC\Library\Calc\Option\Type\Select::$modeDelivery ) { $this->parseModeDeliveryJson(); } elseif ( isset($this->json['mode']) && (string) $this->json['mode'] == \PSC\Library\Calc\Option\Type\Select::$modeColorDb ) { $this->parseModeColorDbJson(); } else { $this->parseModeNormalJson(); } return $this->element; } public function parseXML(): PSCSelect { parent::parseXML(); if (isset($this->node->grenzen) && $this->node->grenzen->children()) { $edgeCollectionContainerParser = new EdgeCollectionContainer(); $edgeCollectionContainerParser->fromXML($this->node->grenzen); $this->element->setEdgesCollectionContainer($edgeCollectionContainerParser->parseXML()); } if ( isset($this->node['mode']) && (string) $this->node['mode'] == \PSC\Library\Calc\Option\Type\Select::$modePaperDb ) { $this->parseModePapierDbXML(); } elseif ( isset($this->node['mode']) && (string) $this->node['mode'] == \PSC\Library\Calc\Option\Type\Select::$modeDelivery ) { $this->parseModeDeliveryXML(); } elseif ( isset($this->node['mode']) && (string) $this->node['mode'] == \PSC\Library\Calc\Option\Type\Select::$modeColorDb ) { $this->parseModeColorDbXML(); } else { $this->parseModeNormalXML(); } return $this->element; } private function parseModeDeliveryXML() { foreach ($this->node->opt as $opt) { $optParser = new DeliveryOpt(); $optParser->fromXML($opt); $this->element->addOption($optParser->parseXML()); } } private function parseModeDeliveryJson() { foreach ($this->json['options'] as $opt) { $optParser = new DeliveryOpt(); $optParser->fromJson($opt); $this->element->addOption($optParser->parseJson()); } } private function parseModePapierDbXML() { $this->element->setContainer((string) $this->node['container']); if (isset($this->node['staffelCalc'])) { $this->element->setStaffelCalc((string) $this->node['staffelCalc']); } if ($this->getPaperRepository()) { $this->element->setNewPaperObject($this->getPaperRepository()->getNewObject()); /** @var PaperContainer\Container $container */ $container = $this->getPaperContainer()->getContainerById((string) $this->node['container']); if ($container) { /** @var PaperContainer\Item $papier */ foreach ($container->getItems() as $papier) { /** @var Paper $paper */ $paper = $this->getPaperRepository()->findOneBy(['artNr' => $papier->getId()]); if ($paper) { $optPapier = new \PSC\Library\Calc\Option\Type\Select\PaperOpt(); $optPapier->setId($paper->getArtNr()); $optPapier->setLabel($paper->getDescription1()); $optPapier->setPaper($paper); $optPapier->setValue($papier->getValue()); $optPapier->setEdgesCollectionContainer($papier->getEdgesCollectionContainer()); $this->element->addOption($optPapier); } } if ($this->element->getDefault() != '') { $this->element->addSelectedOption($this->element->getOptionById($this->element->getDefault())); } } } } private function parseModePapierDbJson() { $this->element->setContainer((string) $this->json['container']); if (isset($this->json['staffelCalc'])) { $this->element->setStaffelCalc((string) $this->json['staffelCalc']); } if ($this->getPaperRepository()) { $this->element->setNewPaperObject($this->getPaperRepository()->getNewObject()); /** @var PaperContainer\Container $container */ $container = $this->getPaperContainer()->getContainerById((string) $this->json['container']); if ($container) { /** @var PaperContainer\Item $papier */ foreach ($container->getItems() as $papier) { /** @var Paper $paper */ $paper = $this->getPaperRepository()->findOneBy(['artNr' => $papier->getId()]); if ($paper) { $optPapier = new \PSC\Library\Calc\Option\Type\Select\PaperOpt(); $optPapier->setId($paper->getArtNr()); $optPapier->setLabel($paper->getDescription1()); $optPapier->setPaper($paper); $optPapier->setValue($papier->getValue()); $optPapier->setEdgesCollectionContainer($papier->getEdgesCollectionContainer()); $this->element->addOption($optPapier); } } if ($this->element->getDefault() != '') { $this->element->addSelectedOption($this->element->getOptionById($this->element->getDefault())); } } } } private function parseModeColorDbXML(): void { $colorSystem = (string) $this->node['container']; $this->element->setContainer($colorSystem); $value = $this->cache->get($colorSystem, function (ItemInterface $item) use ($colorSystem): array { $item->expiresAfter(3600); $temp = []; if (str_contains($colorSystem, 'panton')) { $system = new PANTONE(\Color\System\Enum\PANTONE::from($colorSystem)); } if (str_contains($colorSystem, 'hks')) { $system = new HKS(\Color\System\Enum\HKS::from($colorSystem)); } if ($system) { foreach ($system->getAllColors() as $color) { $optColor = new \PSC\Library\Calc\Option\Type\Select\ColorOpt(); $optColor->setId($color->getName()); $optColor->setLabel($color->getValue('name')); $optColor->setPrefix($system->getColorSystemPrefix()); $optColor->setSuffix($system->getColorSystemSuffix()); $optColor->setColorHex((string) $color->getHex()); $optColor->setColorCMYK((string) $color->getCMYK()); $optColor->setColorRGB((string) $color->getRGB()); $optColor->setValue((string) $color->getHEX()); $temp[] = $optColor; } } return $temp; }); $this->element->setColorSystem($colorSystem); $this->element->addOptions($value); if ($this->element->getDefault() != '') { $this->element->addSelectedOption($this->element->getOptionById($this->element->getDefault())); } } private function parseModeColorDbJson(): void { $colorSystem = (string) $this->json['container']; $this->element->setContainer($colorSystem); $value = $this->cache->get($colorSystem, function (ItemInterface $item) use ($colorSystem): array { $item->expiresAfter(3600); $temp = []; if (str_contains($colorSystem, 'panton')) { $system = new PANTONE(\Color\System\Enum\PANTONE::from($colorSystem)); } if (str_contains($colorSystem, 'hks')) { $system = new HKS(\Color\System\Enum\HKS::from($colorSystem)); } if ($system) { foreach ($system->getAllColors() as $color) { $optColor = new \PSC\Library\Calc\Option\Type\Select\ColorOpt(); $optColor->setId($color->getName()); $optColor->setLabel($color->getValue('name')); $optColor->setPrefix($system->getColorSystemPrefix()); $optColor->setSuffix($system->getColorSystemSuffix()); $optColor->setColorHex((string) $color->getHex()); $optColor->setColorCMYK((string) $color->getCMYK()); $optColor->setColorRGB((string) $color->getRGB()); $optColor->setValue((string) $color->getHEX()); $temp[] = $optColor; } } return $temp; }); $this->element->setColorSystem($colorSystem); $this->element->addOptions($value); if ($this->element->getDefault() != '') { $this->element->addSelectedOption($this->element->getOptionById($this->element->getDefault())); } } private function parseModeNormalXML() { foreach ($this->node->opt as $opt) { $optParser = new Opt(); $optParser->fromXML($opt); $this->element->addOption($optParser->parseXML()); } } private function parseModeNormalJson() { foreach ($this->json['options'] as $opt) { $optParser = new Opt(); $optParser->fromJson($opt); $this->element->addOption($optParser->parseJson()); } } /** * @return PaperContainer */ public function getPaperContainer() { return $this->paperContainer; } /** * @param PaperContainer $paperContainer */ public function setPaperContainer($paperContainer) { $this->paperContainer = $paperContainer; } /** * @param ObjectRepository $repostory */ public function setPaperRepository($repository) { $this->paperRepository = $repository; } /** * @return ObjectRepository */ public function getPaperRepository() { return $this->paperRepository; } }