/** * @param ObjectManager $manager * @param array $data * @param User $clientUser * @return ClientAccount */ private function createClientAccount(ObjectManager $manager, array $data, User $clientUser) { $securityRepository = $manager->getRepository('WealthbotAdminBundle:Security'); $account = new ClientAccount(); $account->setClient($clientUser); $account->setGroupType($this->getReference('client-account-group-type-' . $data['group_type_key'])); $account->setFinancialInstitution($data['financial_institution']); $account->setValue($data['value']); $account->setMonthlyContributions($data['monthly_contributions']); $account->setMonthlyDistributions($data['monthly_distributions']); $account->setSasCash($data['sas_cash']); $account->setProcessStep($data['process_step']); $account->setStepAction($data['step_action']); $account->setIsPreSaved($data['is_pre_saved']); $account->setUnconsolidated($data['unconsolidated']); if ($data['consolidator_index']) { $consolidator = $clientUser->getClientAccounts()->get($data['consolidator_index'] - 1); $account->setConsolidator($consolidator); } foreach ($data['owners'] as $ownerType) { $accountOwner = new ClientAccountOwner(); if ($ownerType === ClientAccountOwner::OWNER_TYPE_SELF) { $accountOwner->setClient($clientUser); } else { $accountOwner->setContact($clientUser->getAdditionalContacts()->first()); } $accountOwner->setOwnerType($ownerType); $accountOwner->setAccount($account); $account->addAccountOwner($accountOwner); } $manager->persist($account); $manager->flush(); $manager->refresh($account); if (isset($data['account_contribution'])) { $accountContribution = new AccountContribution(); $accountContribution->setAccount($account); $accountContribution->setType($data['account_contribution']['type']); $accountContribution->setTransactionFrequency($data['account_contribution']['transaction_frequency']); $account->setAccountContribution($accountContribution); $manager->persist($accountContribution); } if (isset($data['securities'])) { foreach ($data['securities'] as $securityItem) { //ToDo: CE-402. Check that code is not needed more. // $security = $securityRepository->findOneBySymbol($securityItem['symbol']); // if (!$security) { // /** @var SecurityType $securityType */ // $securityType = $this->getReference('security-type-' . $securityItem['type']); // // $security = new Security(); // $security->setName($securityItem['name']); // $security->setSymbol($securityItem['symbol']); // $security->setSecurityType($securityType); // $security->setExpenseRatio($securityItem['exp_ratio']); // } // $securityAssignment = new SecurityAssignment(); // $securityAssignment->setSecurity($security); // $securityAssignment->setRia($clientUser->getRia()); Deprecated // $accountOutsideFund = new AccountOutsideFund(); // $accountOutsideFund->setAccount($account); // $accountOutsideFund->setSecurityAssignment($securityAssignment); // $accountOutsideFund->setIsPreferred(false); // // $manager->persist($accountOutsideFund); } } $manager->persist($account); $manager->flush(); $this->addReference('client-account-' . $account->getId(), $account); return $account; }