PriceController.php 7.9 KB
<?php
    /**
     * Created by PhpStorm.
     * User: timur
     * Date: 26.06.17
     * Time: 12:56
     */
    
    /**
     * @var \common\modules\product\models\Category $categories
     */
    
    namespace console\controllers;
    
    use \yii\console\Controller;
    use common\modules\product\models\Category;
    use Yii;
    use yii\helpers\Console;
    
    class PriceController extends Controller
    {
        public function actionProcess()
        {
            $contentOfPriceXML = '';
    
//            $is_count = Yii::$app->request->get('count', false);
    
            $categories = Category::find()->all();
    
            $this->stdout('Start!' . "\n", Console::FG_RED);
            
//            set_time_limit(0);
//            header("Content-Type: text/xml");
//            $contentOfPriceXML .= '<?xml version="1.0" encoding="UTF-8" ? >';
            $contentOfPriceXML .= "<price>";
            $contentOfPriceXML .= "<date>" . date("Y-m-d h:m") . "</date>";
            $contentOfPriceXML .= "<firmName>www.linija-svitla.ua</firmName>";
            $contentOfPriceXML .= "<firmId></firmId>";
            $contentOfPriceXML .= "<rate></rate>";
            $contentOfPriceXML .= "<categories>";
    
            foreach ($categories as $category) {
                $contentOfPriceXML .= "<category>";
                $contentOfPriceXML .= "<id>" . $category->category_id . "</id>";
                $contentOfPriceXML .= "<name>" . $category->name . "</name>";
                $contentOfPriceXML .= "</category>";
            }
            $contentOfPriceXML .= "</categories>";
    
            $contentOfPriceXML .= "<items>";
    
            foreach ($categories as $category) {
                
                $this->stdout("in Process category"."\n", Console::FG_BLUE);
                
                $products = $category->getProducts()
                                     ->with(
                                         [
//                                             'filters',
                                             'filters.group'
                                         ]
                                     )
                                     ->joinWith('variant')
                                     ->where([ 'product_variant.status' => 0 ])
                                     ->andWhere('product_variant.stock<>0')
                                     ->andWhere('product_variant.price<>0')
                                     ->all();
        
//                if ($is_count) {
                    $contentOfPriceXML .= ( count($products) );
//                    continue;
//                }
        
                /** @var Product $product */
        
                foreach ($products as $product) {
                    /**
                     * Fix for emty brands 14.03.2017
                     */
    
                    $this->stdout("in Process product"."\n", Console::FG_GREEN);
                    
                    if (empty($product->brand)) {
                        continue;
                    }
            
                    $contentOfPriceXML .= "<item>";
                    $contentOfPriceXML .= "<id>" . htmlspecialchars($product->variant->product_variant_id) . "</id>";
                    $contentOfPriceXML .= "<categoryId>" . htmlspecialchars($product->category->category_id) . "</categoryId>";
                    $contentOfPriceXML .= "<vendor>" . $product->brand->name . "</vendor>";
                    $contentOfPriceXML .= "<code>" . htmlspecialchars($product->variant->sku) . "</code>";
                    $contentOfPriceXML .= "<name>" . htmlspecialchars($product->name) . " " . htmlspecialchars(
                            $product->variant->name
                        ) . " </name>";
                    $contentOfPriceXML .= "<description>" . htmlspecialchars($product->description) . "</description>";
                    $contentOfPriceXML .= "<url>http://www.linija-svitla.ua{$product->url}</url>";
                    $contentOfPriceXML .= "<image>http://www.linija-svitla.ua{$product->variant->imageUrl}</image>";
                    $contentOfPriceXML .= "<priceRUAH>" . $product->variant->price . "</priceRUAH>";
                    $contentOfPriceXML .= "<oldprice>" . $product->variant->price_old . "</oldprice>";
            
                    $type = false;
                    foreach ($product->filters as $filter) {
                
                        if ($filter->group->name == "Тип точечного освещение:") {
                            $type = true;
                            $contentOfPriceXML .= "<param name='Тип'>{$filter->name}</param>";
                        }
                        if ($filter->group->name == "Тип настенного освещения:") {
                            $type = true;
                            $contentOfPriceXML .= "<param name='Тип'>{$filter->name}</param>";
                        }
                
                        if ($filter->group->name == "Тип потолочного освещения:") {
                            $type = true;
                            $contentOfPriceXML .= "<param name='Тип'>{$filter->name}</param>";
                        }
                
                        if ($filter->group->name == "Тип уличного освещения:") {
                            $type = true;
                            $contentOfPriceXML .= "<param name='Тип'>{$filter->name}</param>";
                        }
                
                        if ($filter->group->name == "Тип лампочки:") {
                            $type = true;
                            $contentOfPriceXML .= "<param name='Тип'>{$filter->name}</param>";
                        }
                
                        if ($filter->group->name == "Назначение:") {
                            $contentOfPriceXML .= "<param name='Назначение'>{$filter->name}</param>";
                        }
                        if ($filter->group->name == "Стиль:") {
                            $contentOfPriceXML .= "<param name='Стиль'>{$filter->name}</param>";
                        }
                        if ($filter->group->name == "Количество лампочек:") {
                            $contentOfPriceXML .= "<param name='Количество источников света'>{$filter->name}</param>";
                        }
                        if ($filter->group->name == "Тип источника света:") {
                            $contentOfPriceXML .= "<param name='Тип источника освещения'>{$filter->name}</param>";
                        }
                        if ($filter->group->name == "Цоколь:") {
                            $contentOfPriceXML .= "<param name='Тип цоколя'>{$filter->name}</param>";
                        }
                        //$contentOfPriceXML .= "<param name='Монтаж'>Припотолочная</param>";
                
                    }
            
                    if (!$type) {
                        $contentOfPriceXML .= "<param name='Тип'>{$product->category->name}</param>";
                    }
            
                    $contentOfPriceXML .= "<priceRUSD></priceRUSD>";
                    $contentOfPriceXML .= "<stock>В наличии</stock>";
                    $contentOfPriceXML .= "<guarantee></guarantee>";
                    $contentOfPriceXML .= "</item>";
            
                }
        
            }
    
            //var_dump($products);die();
    
    
    
    
            $contentOfPriceXML .= "</items>";
    
            $contentOfPriceXML .= "</price>";
    
            $this->stdout('End!' . "\n", Console::FG_RED);
    
            $file = fopen(Yii::getAlias('@frontend/web/price.xml'), 'w+');
            fwrite($file, $contentOfPriceXML);
            fclose($file);
            
        }
    }