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)));
         }
     }
 }