/** * Execute the console command. * * @return mixed */ public function handle() { $this->info("Updating " . $this->option('mode') . " sector metrics. This may take several minutes..."); $listOfSectors = Stock::getListOfSectors(); array_push($listOfSectors, 'All'); if ($this->option('testMode') == 'true') { $this->info("Running in test mode. Only Banks and Telcos will be updated."); $listOfSectors = ['Banks', 'Telecommunication Services']; } foreach ($listOfSectors as $sectorName) { $stocksInSector = Stock::where('sector', $sectorName)->lists('stock_code'); if ($sectorName == 'All') { $stocksInSector = Stock::lists('stock_code'); } if (count($stocksInSector) > 0) { $totalSectorMarketCap = SectorHistoricals::getTotalSectorMarketCap($stocksInSector); if (isTradingDay()) { SectorHistoricals::updateOrCreate(['sector' => $sectorName, 'date' => date("Y-m-d")], ['sector' => $sectorName, 'date' => date("Y-m-d"), 'total_sector_market_cap' => $totalSectorMarketCap, 'day_change' => round(SectorHistoricals::getSectorPercentChange($sectorName, $stocksInSector), 2), 'average_sector_market_cap' => $totalSectorMarketCap / count($stocksInSector)]); if ($this->option('mode') == 'full') { foreach ($this->sectorMetrics as $metricName) { SectorHistoricals::updateOrCreate(['sector' => $sectorName, 'date' => date("Y-m-d")], [$metricName => round(StockMetrics::getAverageMetric($metricName, $stocksInSector, $sectorName), 2)]); } } } } } }