Exemplo n.º 1
0
 /**
  * Импортирует курсы сразу для всех индексов
  */
 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]);
 }
Exemplo n.º 3
0
 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);
 }
Exemplo n.º 4
0
 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']]);
             }
         }
     }
 }
Exemplo n.º 5
0
 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]);
 }
Exemplo n.º 6
0
    ?>

        <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']]);