100 lines
2.5 KiB
PHP
100 lines
2.5 KiB
PHP
<?php
|
|
namespace PSC\Library\Calc\Option\Parser;
|
|
|
|
use Doctrine\Common\Persistence\ObjectRepository;
|
|
use PSC\Library\Calc\Option\Parser\Select\Opt;
|
|
use PSC\Library\Calc\PaperContainer;
|
|
use PSC\Library\Calc\Tests\Mock\Paper;
|
|
|
|
class Select extends Base
|
|
{
|
|
|
|
protected $element;
|
|
|
|
/** @var \SimpleXMLElement $node */
|
|
protected $node;
|
|
|
|
/** @var PaperContainer */
|
|
protected $paperContainer;
|
|
|
|
/** @var ObjectRepository */
|
|
protected $paperRepository;
|
|
|
|
public function __construct(\SimpleXMLElement $node)
|
|
{
|
|
$this->element = new \PSC\Library\Calc\Option\Type\Select();
|
|
parent::__construct($node);
|
|
}
|
|
|
|
public function parse()
|
|
{
|
|
parent::parse();
|
|
|
|
if(isset($this->node['mode']) && (string)$this->node['mode'] == \PSC\Library\Calc\Option\Type\Select::$modePaperDb) {
|
|
$this->parseModePapierDb();
|
|
}else{
|
|
$this->parseModeNormal();
|
|
}
|
|
|
|
return $this->element;
|
|
}
|
|
|
|
private function parseModePapierDb()
|
|
{
|
|
/** @var PaperContainer\Container $container */
|
|
$container = $this->getPaperContainer()->getContainerById((string)$this->node['container']);
|
|
|
|
/** @var PaperContainer\Item $papier */
|
|
foreach ($container->getItems() as $papier) {
|
|
/** @var Paper $papierDb */
|
|
$papierDb = $this->getPaperRepository()->findOneBy(array('artNr' => $papier->getId()));
|
|
if($papierDb) {
|
|
$optPapier = new \PSC\Library\Calc\Option\Type\Select\Opt();
|
|
$optPapier->setId($papierDb->getArtNr());
|
|
$optPapier->setLabel($papierDb->getDescription1());
|
|
$this->element->addOption($optPapier);
|
|
}
|
|
}
|
|
}
|
|
|
|
private function parseModeNormal()
|
|
{
|
|
foreach ($this->node->opt as $opt) {
|
|
$optParser = new Opt($opt);
|
|
$this->element->addOption($optParser->parse());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @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;
|
|
}
|
|
|
|
} |