function load(ObjectManager $manager)
 {
     $usedSymbols = array();
     $repository = $manager->getRepository('WealthbotAdminBundle:Security');
     $securities = $this->getCsvData('securities.csv');
     foreach ($securities as $index => $item) {
         if ($index === 0) {
             continue;
         }
         $name = trim($item[0]);
         $symbol = trim($item[1]);
         $typeString = 'security-type-' . (trim($item[2]) === 'ETF' ? 'EQ' : 'MU');
         $expenseRatio = round((double) str_replace(',', '.', trim($item[3])), 2);
         /** @var SecurityType $securityType */
         $securityType = $this->getReference($typeString);
         $exist = $repository->findOneBySymbol($symbol);
         if (!$exist && !in_array($symbol, $usedSymbols)) {
             $usedSymbols[] = $symbol;
             $security = new Security();
             $security->setName($name);
             $security->setSymbol($symbol);
             $security->setSecurityType($securityType);
             $security->setExpenseRatio($expenseRatio);
             $manager->persist($security);
         }
     }
     $manager->flush();
 }
示例#2
0
 private function loadSecurities(ObjectManager $manager)
 {
     $repository = $manager->getRepository('WealthbotAdminBundle:Security');
     foreach ($this->securities as $item) {
         $security = $repository->findOneBySymbol($item['symbol']);
         if (!$security) {
             /** @var SecurityType $securityType */
             $securityType = $this->getReference('security-type-' . $item['security_type']);
             $security = new Security();
             $security->setName($item['name']);
             $security->setSymbol($item['symbol']);
             $security->setSecurityType($securityType);
             $security->setExpenseRatio($item['exp_ratio']);
             $manager->persist($security);
         }
         $this->addReference('security-' . $item['symbol'], $security);
     }
 }
 /**
  * @see Command
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $em = $this->getContainer()->get('doctrine')->getEntityManager();
     $em->getConnection()->getConfiguration()->setSQLLogger(null);
     $securityRepo = $em->getRepository('WealthbotAdminBundle:Security');
     $securityTypeRepo = $em->getRepository('WealthbotAdminBundle:SecurityType');
     $i = 0;
     $typeHash = array();
     $securities = $this->loadCsvData('security_full.csv', $maxLength = 10000, $delimiter = ',');
     foreach ($securities as $index => $item) {
         if ($index === 0) {
             continue;
         }
         $type = trim($item[0]);
         $type = $type === 'ETF' ? 'EQ' : 'MU';
         $symbol = trim($item[1]);
         $name = trim($item[2]);
         $ratio = round((double) str_replace(',', '.', trim($item[3])), 2);
         if (isset($typeHash[$type])) {
             $securityType = $typeHash[$type];
         } else {
             $securityType = $securityTypeRepo->findOneByName($type);
             if ($securityType) {
                 $typeHash[$type] = $securityType;
             }
         }
         $security = $securityRepo->findOneBySymbol($symbol);
         if (!$security && $securityType) {
             if (++$i % 100 == 0) {
                 $security = new Security();
                 $security->setName($name);
                 $security->setSymbol($symbol);
                 $security->setSecurityType($securityType);
                 $security->setExpenseRatio($ratio);
                 $em->persist($security);
                 $output->writeln("Security items [{$i}] has been loaded.");
             }
         }
     }
     $em->flush();
     $em->clear();
     $output->writeln("Security items [{$i}] has been loaded.");
     $output->writeln("Success!");
 }