public function onBind(FormEvent $event) { $form = $event->getForm(); /** @var CeModelEntity $data */ $data = $event->getData(); $stock = 0; $bond = 0; /** @var \Wealthbot\AdminBundle\Repository\CeModelEntityRepository $modelRepo */ $modelRepo = $this->em->getRepository('WealthbotAdminBundle:CeModel'); $modelEntities = $this->em->getRepository('WealthbotAdminBundle:CeModelEntity')->findBy(array('modelId' => $this->portfolioModel->getId())); foreach ($modelEntities as $entity) { if (!$data->getId() || $data->getId() != $entity->getId()) { if ($entity->getAssetClass()->getType() == 'Stocks') { $stock += $entity->getPercent(); } if ($entity->getAssetClass()->getType() == 'Bonds') { $bond += $entity->getPercent(); } } } $overAll = $stock + $bond + $data->getPercent(); if ($this->portfolioModel->isStrategy()) { $percentage = BaselinePortfolio::$modelPercentage[$this->portfolioModel->getParent()->getSlug()]; $overAllStock = $data->getPercent() + $stock; $overAllBond = $data->getPercent() + $bond; if ($data->getAssetClass()->getType() == 'Stocks') { if ($overAllStock > $percentage['stock']) { $form->get('percent')->addError(new \Symfony\Component\Form\FormError('Sum of the stocks percents must be equal :value.', array(':value' => $percentage['stock']))); } } if ($data->getAssetClass()->getType() == 'Bonds') { if ($overAllBond > $percentage['bond']) { $form->get('percent')->addError(new \Symfony\Component\Form\FormError('Sum of the bonds percents must be equal :value.', array(':value' => $percentage['bond']))); } } } if ($overAll > 100) { $form->get('percent')->addError(new \Symfony\Component\Form\FormError('Sum of the percents must be equal 100.')); } }
protected function updateMuniSubstitution(FormInterface $form, $subclass) { if (!$subclass instanceof Subclass) { $subclass = $this->em->getRepository('WealthbotAdminBundle:Subclass')->find($subclass); } if ($this->user->hasRole('ROLE_ADMIN') || $this->user->hasRole('ROLE_SUPER_ADMIN') || $this->user->hasRole('ROLE_RIA') && $this->user->getRiaCompanyInformation()->getUseMunicipalBond()) { /** @var SecurityAssignmentRepository $repo */ $repo = $this->em->getRepository('WealthbotAdminBundle:SecurityAssignment'); $parentModel = $this->ceModel->getParent(); $existMuniSubstitution = $repo->hasMuniSubstitution($parentModel, $subclass, $this->user); if ($existMuniSubstitution) { $queryBuilder = $repo->getAvailableMuniSubstitutionsQuery($parentModel->getId(), $subclass->getId()); $form->add($this->factory->createNamed('muniSubstitution', 'entity', null, array('class' => 'WealthbotAdminBundle:SecurityAssignment', 'property' => 'security.name', 'required' => false, 'empty_value' => 'Choose Muni Substitution', 'query_builder' => $queryBuilder))); } } }