/** * Импортирует курсы сразу для всех индексов */ public function actionCandels() { $rows = Stock::query()->all(); foreach ($rows as $row) { $stock_id = $row['id']; $this->log('Попытка получить данные для: ' . $row['name']); $importer = ['params' => ['market' => $row['finam_market'], 'em' => $row['finam_em'], 'code' => $row['finam_code']]]; $class = new \app\service\DadaImporter\Finam($importer); $date = new \DateTime(); $date->sub(new \DateInterval('P7D')); $data = $class->importCandels($date->format('Y-m-d')); // стратегия: Если данные есть то, они не трогаются $dateArray = ArrayHelper::getColumn($data, 'date'); sort($dateArray); $rows2 = StockKurs::query(['between', 'date', $dateArray[0], $dateArray[count($dateArray) - 1]])->andWhere(['stock_id' => $stock_id])->all(); $dateArrayRows = ArrayHelper::getColumn($rows2, 'date'); $new = []; foreach ($data as $row) { if (!in_array($row['date'], $dateArrayRows)) { $new[] = [$stock_id, $row['date'], $row['open'], $row['high'], $row['low'], $row['close'], $row['volume'], $row['close']]; } } if (count($new) > 0) { \Yii::info('Импортированы данные: ' . VarDumper::dumpAsString($new), 'cap\\importer\\index'); $this->log('Импортированы данные: ' . VarDumper::dumpAsString($new)); StockKurs::batchInsert(['stock_id', 'date', 'open', 'high', 'low', 'close', 'volume', 'kurs'], $new); } else { $this->log('Нечего импортировать'); } } }
public function actionIndex() { $items = Stock::query()->all(); $red = StockPrognosisRed::query()->select(['stock_id', 'MIN(`date`) as min', 'MAX(`date`) as max'])->groupBy('stock_id')->all(); $blue = StockPrognosisBlue::query()->select(['stock_id', 'MIN(`date`) as min', 'MAX(`date`) as max'])->groupBy('stock_id')->all(); $kurs = StockKurs::query()->select(['stock_id', 'MIN(`date`) as min', 'MAX(`date`) as max'])->groupBy('stock_id')->all(); return $this->render(['items' => $items, 'red' => $red, 'blue' => $blue, 'kurs' => $kurs]); }
public function view($id) { $stock = Stock::query()->find($id); $stockProducts = $stock->stockProducts; $products = []; foreach ($stockProducts as $sp) { $products[] = ['productId' => $sp->product->id, 'ammount' => $sp->ammount, 'name' => $sp->product->name, 'unit_price' => $sp->product->unit_price]; } $response = ['stock' => $stock, 'products' => $products]; return view('pages.stock_products', $response); }
public function up() { $this->execute('ALTER TABLE galaxysss_4.cap_stock CHANGE finam_code finam_code varchar(20);'); $arr = \app\models\Stock::query()->all(); foreach ($arr as $item) { $stock = new \app\models\Stock($item); foreach (\app\service\DadaImporter\Data::$importerData as $data) { if ($item['id'] == $data['stock_id']) { $params = $data['params']; $stock->update(['finam_em' => $params['em'], 'finam_market' => $params['market'], 'finam_code' => $params['code']]); } } } }
public function actionStock_list() { $items = Stock::query()->orderBy(['name' => SORT_ASC])->all(); $dateFinishList = UserStock::query(['user_id' => \Yii::$app->user->getId()])->select(['stock_id', 'date_finish'])->all(); for ($i = 0; $i < count($items); $i++) { $item =& $items[$i]; foreach ($dateFinishList as $row) { if ($row['stock_id'] == $item['id']) { $item['date_finish'] = $row['date_finish']; } } if (!isset($item['date_finish'])) { $item['date_finish'] = null; } } return $this->render(['items' => $items]); }
?> <div class="list-group"> <a href="<?php echo Url::to(['cabinet/stock_list']); ?> " class="list-group-item"> Курсы </a> </div> <div class="list-group"> <?php $items = \app\models\Stock::query()->orderBy(['name' => SORT_ASC])->all(); $dateFinishList = \app\models\UserStock::query(['user_id' => \Yii::$app->user->getId()])->select(['stock_id', 'date_finish'])->all(); for ($i = 0; $i < count($items); $i++) { $item =& $items[$i]; foreach ($dateFinishList as $row) { if ($row['stock_id'] == $item['id']) { $item['is_paid'] = \Yii::$app->user->identity->isPaid($item['id']); } } if (!isset($item['is_paid'])) { $item['is_paid'] = false; } } for ($i = 0; $i < count($items); $i++) { $item =& $items[$i]; $url = Url::to(['cabinet/stock_item3', 'id' => $item['id']]);