Модели
Покупка
Владельцам
Акции
Актуальные
О нас
class TradeinController extends Controller { public function actionRubric($id=null) { if(is_numeric($id)) $rubric = Rubrics::model()->findByPk($id); $data = array( 'rubric'=>$rubric, 'title'=>$rubric->title, 'keywords'=>$rubric->keywords, 'description'=>$rubric->description, ); $params = []; // фильтры $markId = Yii::app()->request->getParam('brand_id'); $modelId = Yii::app()->request->getParam('model_id'); $filter['marks'] = Yii::app()->request->getParam('marks'); $filter['models'] = Yii::app()->request->getParam('models'); $filter['body_type'] = Yii::app()->request->getParam('body_type'); $filter['drive_type'] = Yii::app()->request->getParam('drive_type'); $filter['kpp_type'] = Yii::app()->request->getParam('kpp_type'); $filter['price_from'] = Yii::app()->request->getParam('price_from'); $filter['price_to'] = Yii::app()->request->getParam('price_to'); $filter['volume_from'] = Yii::app()->request->getParam('volume_from'); $filter['volume_to'] = Yii::app()->request->getParam('volume_to'); $data['filter'] = $filter; if($this->dealer->metacar_login && $this->dealer->metacar_pass && in_array(Yii::app()->user->getState('mark'),['bmw','mini'])) { $myCar = new MyCar(); $allcars = $myCar->getCars(); foreach($allcars as $k=>$v){ $data['marks'][$v->carMark] = (object)['name'=>$v->carMark,'metacar_id'=>$v->carMark]; $data['models'][$v->carMark][$v->carModel] = (object)['name'=>$v->carModel,'metacar_id'=>$v->carModel]; $data['engine_types'][$v->engineType->key] = (object)['name'=>$v->engineType->value,'metacar_id'=>$v->engineType->key]; $data['kpp_types'][$v->gearbox->key] = (object)['name'=>$v->gearbox->value,'metacar_id'=>$v->gearbox->key]; $data['drive_types'][$v->gear->key] = (object)['name'=>$v->gear->value,'metacar_id'=>$v->gear->key]; $data['body_types'][$v->coupeType->key] = (object)['name'=>$v->coupeType->value,'metacar_id'=>$v->coupeType->key]; $data['price_min'] = (isset($v->plannedSalePrice) && ($v->plannedSalePrice<$data['price_min'] || !$data['price_min']) ? $v->plannedSalePrice : $data['price_min']); $data['price_max'] = ($v->plannedSalePrice>$data['price_max'] || !$data['price_max'] ? $v->plannedSalePrice : $data['price_max']); $data['volume_min'] = ($v->engineVolume>=0 && ($v->engineVolume<=$data['volume_min'] || !isset($data['volume_min'])) ? $v->engineVolume : $data['volume_min']); $data['volume_max'] = ($v->engineVolume>$data['volume_max'] || !$data['volume_max'] ? $v->engineVolume : $data['volume_max']); ksort($data['models'][$v->carMark]); } ksort($data['marks']); // $markId = Yii::app()->request->getParam('brand_id'); // if($markId) // $params['carMark'] = $markId; // $bodyType = Yii::app()->request->getParam('body_type'); // if($bodyType) // $params['coupeType'] = trim($bodyType,','); // $driveType = Yii::app()->request->getParam('drive_type'); // if($driveType) // $params['gear'] = trim($driveType,','); // $kppType = Yii::app()->request->getParam('kpp_type'); // if($kppType) // $params['gearbox'] = trim($kppType,','); $cars = $myCar->getCars($params); $data['data'] = $cars; } else { $data['price_min'] = Tradein::model()->find([ 'select'=>'min(price) as price', 'condition'=>'rubric_id=:rubricId and status>=1', 'params'=>[':rubricId'=>$rubric->id], // 'order'=>'price' ])->price; $data['price_max'] = Tradein::model()->find([ 'select'=>'max(price) as price', 'condition'=>'rubric_id=:rubricId and status>=1', 'params'=>[':rubricId'=>$rubric->id], 'order'=>'price desc' ])->price; $data['volume_min'] = Tradein::model()->find([ 'select'=>'volume', 'condition'=>'rubric_id=:rubricId and status>=1', 'params'=>[':rubricId'=>$rubric->id], 'order'=>'volume' ])->volume; $data['volume_max'] = Tradein::model()->find([ 'select'=>'volume', 'condition'=>'rubric_id=:rubricId and status>=1', 'params'=>[':rubricId'=>$rubric->id], 'order'=>'volume desc' ])->volume; $marks = Tradein::model()->find([ 'select'=>'group_concat(mark_id) as mark_id', 'condition'=>'rubric_id=:rubricId and status>=1', 'params'=>[':rubricId'=>$rubric->id], ])->mark_id; if($marks) $data['marks'] = DictBrands::model()->findAll([ 'condition'=>'metacar_id IN ('.$marks.')', 'order'=>'name' ]); $ids = Tradein::model()->find([ 'select'=>'group_concat(model_id) as model_id', 'condition'=>'rubric_id=:rubricId and status>=1', 'params'=>[':rubricId'=>$rubric->id], ])->model_id; if($ids){ $data['models_array'] = DictBrands::model()->findAll([ 'condition'=>'metacar_id IN ('.$ids.')', 'order'=>'parent_id, id' ]); foreach($data['models_array'] as $k=>$v){ $data['models'][$v->parent_id][] = (object)['name'=>$v->name,'metacar_id'=>$v->name]; } } $bodyTypes = Tradein::model()->find([ 'select'=>'group_concat(body_id) as body_id', 'condition'=>'rubric_id=:rubricId and status>=1', 'params'=>[':rubricId'=>$rubric->id], ])->body_id; if($bodyTypes) $data['body_types'] = DictParams::model()->findAll([ 'condition'=>'metacar_id IN ('.$bodyTypes.')', 'order'=>'id' ]); $driveTypes = Tradein::model()->find([ 'select'=>'group_concat(drive_id) as drive_id', 'condition'=>'rubric_id=:rubricId and status>=1', 'params'=>[':rubricId'=>$rubric->id], ])->drive_id; if($driveTypes) $data['drive_types'] = DictParams::model()->findAll([ 'condition'=>'metacar_id IN ('.$driveTypes.')', 'order'=>'id' ]); $condition = 'rubric_id=:rubricId and status=1'; $params = [':rubricId'=>$rubric->id]; $order = 'pos, id'; /* $body_types = Yii::app()->request->getParam('body_type'); if($body_types){ $condition .= ' and body_id IN ('.trim($body_types,',').')'; } $drive_types = Yii::app()->request->getParam('drive_type'); if($drive_types){ $condition .= ' and drive_id IN ('.trim($drive_types,',').')'; } $volume_from = Yii::app()->request->getParam('volume_from'); $volume_to = Yii::app()->request->getParam('volume_to'); if($volume_from){ $condition .= ' and volume between :volumeFrom and :volumeTo'; $params[':volumeFrom'] = $volume_from; $params[':volumeTo'] = $volume_to; } $price_from = Yii::app()->request->getParam('price_from'); $price_to = Yii::app()->request->getParam('price_to'); if($price_from){ $condition .= ' and price between :priceFrom and :priceTo'; $params[':priceFrom'] = $price_from; $params[':priceTo'] = $price_to; } $markId = Yii::app()->request->getParam('brand_id'); if($markId){ $condition .= ' and mark_id IN ('.trim($markId,',').')'; // $params[':modelId'] = trim($modelId,','); } $modelId = Yii::app()->request->getParam('model_id'); if($modelId){ $condition .= ' and model_id IN ('.trim($modelId,',').')'; // $params[':modelId'] = trim($modelId,','); } */ $data['data'] = Tradein::model()->findAll([ 'condition'=>$condition, 'params'=>$params, 'order'=>$order ]); } $data['catalogView'] = Yii::app()->user->hasState('catalogView') ? Yii::app()->user->getState('catalogView') : 'listView'; if(Yii::app()->request->isAjaxRequest) $this->renderPartial(Yii::app()->user->getState('mark').'_data',$data); else $this->render(Yii::app()->user->getState('mark').'_rubric',$data); } public function actionSingle($id) { $rubric = Rubrics::model()->find('chpu=:chpu and dealer_id=:dealerId',[':chpu'=>'avto_s_probegom',':dealerId'=>$this->dealer->id]); $crumbs = Yii::app()->params['crumbs']; $crumbs[] = $cars; Yii::app()->params['crumbs'] = $crumbs; if($this->dealer->metacar_login && $this->dealer->metacar_pass && in_array(Yii::app()->user->getState('mark'),['bmw','mini'])){ $metaCar = new MyCar(); $car = $metaCar->getCarInfo($id); $data = [ 'rubric'=>$rubric, 'data'=>$car, 'title'=>'Автомобили с пробегом. '.Tradein::getAttr($car,'name').' '.Tradein::getAttr($car,'year'), 'keywords'=>Tradein::getAttr($car,'name').' '.Tradein::getAttr($car,'year'), 'description'=>Tradein::getAttr($car,'name').' '.Tradein::getAttr($car,'year'), ]; } else{ $car = Tradein::model()->findByPk($id); $data = [ 'data'=>$car, 'rubric'=>$car->rubric, 'title'=>'Автомобили с пробегом. '.$car->name, 'keywords'=>$car->name, 'description'=>$car->text, ]; } $this->render(Yii::app()->user->getState('mark').'_single',$data); } }