. */ namespace Volkszaehler\Controller; /** * Aggregator controller * * @author Steffen Vogel (info@steffenvogel.de) * @package default */ use Volkszaehler\Model; class AggregatorController extends EntityController { /** * Get aggregator */ public function get($identifier) { $aggregator = parent::get($identifier); if ($aggregator instanceof Model\Aggregator) { return $aggregator; } else { throw new \Exception($identifier . ' is not a group uuid'); } } /** * Create new aggregator or add entity to aggregator */ public function add($identifier = NULL) { if (isset($identifier)) { // add entity to aggregator $aggregator = $this->get($identifier); if ($uuid = $this->view->request->getParameter('uuid')) { $ec = new EntityController($this->view, $this->em); $entity = $ec->get($uuid); if ($entity instanceof Model\Channel) { $aggregator->addChannel($entity); } elseif ($entity instanceof Model\Aggregator) { $aggregator->addAggregator($entity); } } else { // create new aggregator throw new \Exception('You have to specifiy a uuid to add'); } } else { $aggregator = new Model\Aggregator('group'); // TODO support for other aggregator types foreach ($this->view->request->getParameters() as $parameter => $value) { if (Model\PropertyDefinition::exists($parameter)) { $aggregator->setProperty($parameter, $value); } } $this->em->persist($aggregator); } $this->em->flush(); return $aggregator; } /** * Delete Aggregator or remove entity from aggregator */ public function delete($identifier) { if (isset($identifier) && $uuid = $this->view->request->getParameter('uuid')) { // remove entity from aggregator $aggregator = $this->get($identifier); if ($uuid) { $ec = new EntityController($this->view, $this->em); $entity = $ec->get($uuid); if ($entity instanceof Model\Channel) { $aggregator->removeChannel($entity); } elseif ($entity instanceof Model\Aggregator) { $aggregator->removeAggregator($entity); } $this->em->flush(); } else { // remove aggregator throw new \Exception('You have to specifiy a uuid to remove'); } } else { parent::delete($identifier); } return $aggregator; } } ?>