/** * @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; }
/** * 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(); }
/** * 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; }