Exemple #1
0
 /**
  * Creates data provider instance with search query applied
  *
  * @param array $params
  *
  * @return ActiveDataProvider
  */
 public function search($params)
 {
     $query = Providers::find();
     $dataProvider = new ActiveDataProvider(['query' => $query]);
     $this->load($params);
     if (!$this->validate()) {
         // uncomment the following line if you do not want to return any records when validation fails
         // $query->where('0=1');
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id, 'date_last_down' => $this->date_last_down]);
     $query->andFilterWhere(['like', 'meta', $this->meta])->andFilterWhere(['like', 'name', $this->name])->andFilterWhere(['like', 'id_script', $this->id_script]);
     return $dataProvider;
 }
 private function profileTyreBitrix($mode = 'run', $priceType = null)
 {
     if ($mode == 'info') {
         return ['name' => 'Экспорт шин в Битрикс', 'description' => 'Экспорт шин в Битрикс'];
     }
     if ($mode == 'run') {
         function saveRow($curGoodId, $arOffers, &$arStrToSave)
         {
             $arrGood = Goods::getName($curGoodId, 'array');
             $arRow['good']['id'] = $curGoodId;
             $arRow['good']['heigth'] = $arrGood['values']['tyre_heigth'];
             $arRow['good']['width'] = $arrGood['values']['tyre_width'];
             $arRow['good']['dia'] = $arrGood['values']['tyre_dia'];
             $arRow['good']['i_load'] = $arrGood['values']['tyre_i_load'];
             $arRow['good']['i_speed'] = $arrGood['values']['tyre_i_speed'];
             $arRow['good']['model'] = $arrGood['values']['tyre_model'];
             $arRow['good']['rf'] = $arrGood['values']['tyre_rf'] ? 'да' : '';
             $arRow['good']['brand'] = $arrGood['values']['tyre_brand'];
             $arRow['good']['season'] = $arrGood['values']['tyre_season'];
             $arRow['good']['type_auto'] = $arrGood['values']['tyre_type_auto'];
             $arRow['good']['spike'] = $arrGood['values']['tyre_spike'] ? 'да' : '';
             $arRow['offers'] = $arOffers;
             $arStrToSave[] = serialize($arRow);
         }
         function saveOffer($arOffer, &$arStrToSave)
         {
             $curGoodId = $arOffer['goods_id'];
             if (!isset($arStrToSave[$curGoodId])) {
                 $arrGood = Goods::getName($curGoodId, 'array');
                 $arRow['id'] = $curGoodId;
                 $arRow['goods_type'] = $arOffer['goods_type_type'];
                 $arRow['name'] = Goods::getName($curGoodId);
                 $arRow['heigth'] = $arrGood['values']['tyre_heigth'];
                 $arRow['width'] = $arrGood['values']['tyre_width'];
                 $arRow['dia'] = $arrGood['values']['tyre_dia'];
                 $arRow['i_load'] = $arrGood['values']['tyre_i_load'];
                 $arRow['i_speed'] = $arrGood['values']['tyre_i_speed'];
                 $arRow['model'] = $arrGood['values']['tyre_model'];
                 $arRow['rf'] = $arrGood['values']['tyre_rf'] ? 44 : '';
                 $arRow['brand'] = $arrGood['values']['tyre_brand'];
                 $arRow['season'] = $arrGood['values']['tyre_season'];
                 $arRow['type_auto'] = $arrGood['values']['tyre_type_auto'];
                 $arRow['spike'] = $arrGood['values']['tyre_spike'] ? 3 : '';
                 $arStrToSave[$curGoodId]['g'] = $arRow;
             }
             unset($arOffer['name'], $arOffer['goods_type_type']);
             $arStrToSave[$curGoodId]['o'][$arOffer['providers_id']] = $arOffer;
         }
         function clearFiles($file)
         {
             file_put_contents($file, '');
         }
         function saveFiles($file, $arStrToSave)
         {
             return;
             foreach ($arStrToSave as $gId => $arGO) {
                 $arStrToSave[$gId] = json_encode($arGO);
             }
             print count($arStrToSave) . '<br>';
             file_put_contents($file, implode(chr(10), $arStrToSave), FILE_APPEND);
         }
         $folder_local = $_SERVER['DOCUMENT_ROOT'] . '/unload/';
         $file_name = 'tyre_bitrix.txt';
         $file = $folder_local . $file_name;
         clearFiles($file);
         // Очистить файл
         $arStrToSave = [];
         // Список поставщиков
         $arProviders = \yii\helpers\ArrayHelper::map(\app\models\Providers::find()->all(), 'id', 'name');
         // Список оферов шин
         $sql = "select * from offers as O INNER JOIN goods as G where O.goods_id = G.id and G.goods_type_type = 'tyre'";
         $arOffers = \Yii::$app->db->createCommand($sql)->queryAll();
         //            exit();
         $curGoodId = 0;
         foreach ($arOffers as $k => $arOffer) {
             print $k . '--<br>';
             saveOffer($arOffer, $arStrToSave);
             if ($k % 10 == 0) {
                 // Сохранить на диск
                 saveFiles($file, $arStrToSave);
                 $arStrToSave = [];
             }
         }
         if (count($arStrToSave) > 0) {
             saveFiles($file, $arStrToSave);
         }
         // передать на сайт
         $folder_remout = '/home/s/shina93/shincenter/public_html/upload/';
         copy($file, $folder_remout . $file_name);
         //            $host = 'brevitas.timeweb.ru';
         //            $user = '******';
         //            $password = '******';
         //            $this->sendTrouthFTP($host, $user, $password, $folder_local, $file_name, $folder_remout);
     }
 }
 public function actionDoFiler($goodsType, $goodsProvider = false)
 {
     header('Content-Type: utf-8');
     $oGoodsType = \app\models\GoodsType::findOne($goodsType);
     if (!$oGoodsType instanceof \app\models\GoodsType) {
         throw new Exception('Не верный тип товара');
     }
     $GoodsParamsName = $oGoodsType->getGoodsParamsNames()->orderBy('sort')->all();
     $arParamsType = \yii\helpers\ArrayHelper::map($GoodsParamsName, 'id', 'name');
     //                $arParamsType = [['id'=>'providers_id', 'name'=>'Поставщик']] + $arParamsType;
     $sql = 'select * from offers as O INNER JOIN goods as G INNER JOIN goods_t_' . $goodsType . ' as GT ' . 'where O.goods_id = G.id and G.id = GT.goods_id ';
     $arAnd = ['G.goods_type_type = :GT'];
     $arParams = [':GT' => $goodsType];
     if ($goodsProvider) {
         $arAnd[] = 'O.providers_id = :providers_id';
         $arParams[':providers_id'] = $goodsProvider;
     }
     foreach ($_GET as $k => $v) {
         if (strlen($v) > 0 && isset($arParamsType[$k])) {
             $arAnd[] = "GT.{$k} = :{$k}";
             $arParams[":{$k}"] = $v;
         }
     }
     $sql .= ' and ' . implode(' and ', $arAnd);
     $connection = \Yii::$app->db;
     $command = $connection->createCommand($sql);
     $command->bindValues($arParams);
     $items = $command->queryAll();
     $goodsValues = \app\models\GoodsParams::find()->all();
     //                $arrGoodsValues = \yii\helpers\ArrayHelper::toArray($goodsValues, ['app\models\GoodsParams'=>['id', 'value', 'public_value']]);
     $arrGoodsValues = \yii\helpers\ArrayHelper::map($goodsValues, 'id', 'value');
     //                print ('<pre>');print_r($arrGoodsValues);print('</pre>');exit('100');
     $providers = \app\models\Providers::find()->all();
     $arProviders = \yii\helpers\ArrayHelper::map($providers, 'id', 'name');
     $session = Yii::$app->session;
     $session->open();
     print $this->renderPartial('list', ['arParamsType' => $arParamsType, 'items' => $items, 'arrGoodsValues' => $arrGoodsValues, 'arProviders' => $arProviders, 'typePrice' => $session['typePrice']]);
 }