/**
  * @Deprecated
  * Create new securityAssignment
  *
  * @param \Wealthbot\UserBundle\Entity\User $ria
  * @param \Wealthbot\AdminBundle\Entity\Security $security
  * @return SecurityAssignment
  */
 protected function createSecurity(User $ria, Security $security)
 {
     $securityAssignment = new SecurityAssignment();
     //        $securityAssignment->setRia($ria); Deprecated
     $securityAssignment->setSecurity($security);
     $securityAssignment->setIsPreferred(false);
     $this->em->persist($securityAssignment);
     $this->em->flush();
     return $securityAssignment;
 }
Example #2
0
 /**
  * Save Client Subclasses
  * This method is needed for save a snapshot of RIA subclasses.
  *
  * @param User $client
  * @param User $ria
  * @throws EntityNotFoundException
  */
 public function saveClientSubclasses(User $client, User $ria)
 {
     $em = $this->getEntityManager();
     $selectedModel = $ria->getRiaCompanyInformation()->getPortfolioModel();
     //$riaSubClasses = $this->findDefaultsByModelId($selectedModel);
     $riaSubClasses = $this->findRiaSubclasses($ria->getId());
     if (!$riaSubClasses) {
         $riaSubClasses = $this->findDefaultsByModelId($selectedModel);
     }
     // When subclasses for RIA are defined in system ?
     if (!$riaSubClasses) {
         throw new EntityNotFoundException("Ria doesn't have subclasses, logic error please check!");
     }
     foreach ($riaSubClasses as $riaSubClass) {
         $clientSubClass = new Subclass();
         $clientSubClass->setAssetClass($riaSubClass->getAssetClass());
         $clientSubClass->setAccountType($riaSubClass->getAccountType());
         $clientSubClass->setOwner($client);
         $clientSubClass->setSource($riaSubClass);
         $clientSubClass->setName($riaSubClass->getName());
         $clientSubClass->setExpectedPerformance($riaSubClass->getExpectedPerformance());
         /** @var Subclass $riaSubClass */
         foreach ($riaSubClass->getSecurityAssignments() as $securityAssignment) {
             $newSecurityAssignment = new SecurityAssignment();
             $newSecurityAssignment->setIsPreferred($securityAssignment->getIsPreferred());
             $newSecurityAssignment->setModel($clientSubClass->getAssetClass()->getModel());
             $newSecurityAssignment->setMuniSubstitution($securityAssignment->getMuniSubstitution());
             //$newSecurityAssignment->setRia($ria); Deprecated
             $newSecurityAssignment->setSecurity($securityAssignment->getSecurity());
             $newSecurityAssignment->setSecurityTransaction($securityAssignment->getSecurityTransaction());
             $newSecurityAssignment->setSubclass($clientSubClass);
             $em->persist($newSecurityAssignment);
         }
         $em->persist($clientSubClass);
     }
     $em->flush();
 }
Example #3
0
 /**
  * Copy model with model entities, asset classes and subclasses
  *
  * @param CeModelInterface $model
  * @param User $owner
  * @param array $assetClasses
  * @param array $subclasses
  * @return CeModelInterface
  */
 private function copyModelWithRelationsForOwner(CeModelInterface $model, User $owner, array &$assetClasses, array &$subclasses)
 {
     $clone = $model->getCopy();
     $clone->setOwner($owner);
     if ($owner->hasRole('ROLE_CLIENT')) {
         $commissions = $this->objectManager->getRepository('WealthbotAdminBundle:SecurityAssignment')->findMinAndMaxTransactionFeeForModel($model->getParentId());
         $commissions = array_filter($commissions);
         $clone->setCommissionMin(isset($commissions['minimum']) ? $commissions['minimum'] : 0);
         $clone->setCommissionMax(isset($commissions['maximum']) ? $commissions['maximum'] : 0);
     }
     /** @var $modelEntity CeModelEntityInterface */
     foreach ($model->getModelEntities() as $modelEntity) {
         /** @var $cloneModelEntity CeModelEntityInterface */
         $cloneModelEntity = $modelEntity->getCopy();
         $subclass = $modelEntity->getSubclass();
         if (!isset($subclasses[$subclass->getId()])) {
             $cloneSubclass = $subclass->getCopy();
             $cloneSubclass->setOwner($owner);
             $subclasses[$subclass->getId()] = $cloneSubclass;
             $assetClass = $subclass->getAssetClass();
             if (isset($assetClasses[$assetClass->getId()])) {
                 $cloneAssetClass = $assetClasses[$assetClass->getId()];
             } else {
                 $cloneAssetClass = $assetClass->getCopy();
                 $assetClasses[$assetClass->getId()] = $cloneAssetClass;
             }
             $cloneAssetClass->addSubclasse($cloneSubclass);
             $cloneSubclass->setAssetClass($cloneAssetClass);
         } else {
             $cloneSubclass = $subclasses[$subclass->getId()];
         }
         if ($securityAssignment = $modelEntity->getSecurityAssignment()) {
             $found = null;
             #Searching one SA that has needed subclass and security.
             foreach ($this->clonedSecurityAssignments as $sa) {
                 if ($sa->getSubclass() == $cloneSubclass && $sa->getSecurity() == $securityAssignment->getSecurity()) {
                     $found = $sa;
                     break;
                 }
             }
             if (!$found) {
                 $found = $this->objectManager->getRepository('WealthbotAdminBundle:SecurityAssignment')->findOneBy(array('security' => $securityAssignment->getSecurity(), 'subclass' => $cloneSubclass));
             }
             if (!$found) {
                 $newSecurityAssignment = new SecurityAssignment();
                 //create SecurityAssignment
                 $newSecurityAssignment->setIsPreferred($securityAssignment->getIsPreferred());
                 $newSecurityAssignment->setModel($clone);
                 $newSecurityAssignment->setMuniSubstitution($securityAssignment->getMuniSubstitution());
                 $newSecurityAssignment->setSecurity($securityAssignment->getSecurity());
                 $newSecurityAssignment->setSecurityTransaction($securityAssignment->getSecurityTransaction());
                 $newSecurityAssignment->setSubclass($cloneSubclass);
                 $newSecurityAssignment->setModelId($clone->getId());
                 $newSecurityAssignment->setSecurityId($securityAssignment->getSecurity()->getId());
                 if ($cloneSubclass) {
                     $newSecurityAssignment->setSubclassId($cloneSubclass->getId());
                 }
                 if ($cloneSubclass) {
                     $cloneSubclass->addSecurityAssignment($newSecurityAssignment);
                 }
                 $this->clonedSecurityAssignments[] = $newSecurityAssignment;
                 $found = $newSecurityAssignment;
             }
             if ($found) {
                 $cloneModelEntity->setSecurityAssignment($found);
             }
         }
         $cloneModelEntity->setModel($clone);
         $cloneModelEntity->setSubclass($subclasses[$subclass->getId()]);
         $clone->addModelEntity($cloneModelEntity);
     }
     return $clone;
 }