public function actionBuscar() { //ini_set('memory_limit', '-1'); //ini_set('memory_limit', '1024M'); //$term = Yii::app()->getRequest()->getPost('busqueda', ''); $term = trim(Yii::app()->request->getParam('busqueda', '')); $codigosArray = GSASearch($term); $codigosStr = implode(",", $codigosArray); $objSectorCiudad = null; if (isset(Yii::app()->session[Yii::app()->params->sesion['sectorCiudadEntrega']])) { $objSectorCiudad = Yii::app()->session[Yii::app()->params->sesion['sectorCiudadEntrega']]; } $codigoPerfil = Yii::app()->shoppingCart->getCodigoPerfil(); if (empty($codigosArray)) { try { Busquedas::registrarBusqueda(array('idenficacionUsuario' => Yii::app()->user->isGuest ? null : Yii::app()->user->name, 'tipoBusqueda' => Yii::app()->params->busqueda['tipo']['buscador'], 'msgBusqueda' => "{$term}: busqueda GSA", 'codigoCiudad' => $objSectorCiudad == null ? null : $objSectorCiudad->codigoCiudad, 'codigoSector' => $objSectorCiudad == null ? null : $objSectorCiudad->codigoSector)); } catch (Exception $exc) { Yii::log($exc->getMessage() . "\n" . $exc->getTraceAsString(), CLogger::LEVEL_ERROR, 'application'); } $this->render('listaProductos', array('listProductos' => array(), 'listCombos' => array(), 'msgCodigoEspecial' => array(), 'listCodigoEspecial' => array(), 'imagenBusqueda' => Yii::app()->params->busqueda['imagen']['noExito'], 'objSectorCiudad' => $objSectorCiudad, 'codigoPerfil' => $codigoPerfil, 'nombreBusqueda' => $term)); Yii::app()->end(); } $formFiltro = new FiltroForm(); $formOrdenamiento = new OrdenamientoForm(); if (isset($_POST['OrdenamientoForm'])) { $formOrdenamiento->attributes = $_POST['OrdenamientoForm']; } if (isset($_POST['FiltroForm'])) { $formFiltro->attributes = $_POST['FiltroForm']; $formFiltro->listCategoriasTiendaCheck = $formFiltro->listCategoriasTienda; } $parametrosProductos = array(); $listCombos = array(); if ($objSectorCiudad == null) { $parametrosProductos = array('order' => 't.orden', 'with' => array('listImagenes', 'objCodigoEspecial', 'listCalificaciones', 'objCategoriaBI' => array('with' => 'listCategoriasTienda')), 'condition' => "t.activo=:activo AND t.codigoProducto IN ({$codigosStr})", 'params' => array(':activo' => 1)); } else { $parametrosProductos = array('order' => 't.orden', 'with' => array('listImagenes', 'objCodigoEspecial', 'listCalificaciones', 'objCategoriaBI' => array('with' => 'listCategoriasTienda'), 'listSaldos' => array('condition' => '(listSaldos.saldoUnidad>:saldo AND listSaldos.codigoCiudad=:ciudad AND listSaldos.codigoSector=:sector) OR (listSaldos.saldoUnidad IS NULL AND listSaldos.codigoCiudad IS NULL AND listSaldos.codigoSector IS NULL)'), 'listPrecios' => array('condition' => '(listPrecios.codigoCiudad=:ciudad AND listPrecios.codigoSector=:sector) OR (listPrecios.codigoCiudad IS NULL AND listPrecios.codigoSector IS NULL)'), 'listSaldosTerceros' => array('condition' => '(listSaldosTerceros.codigoCiudad=:ciudad AND listSaldosTerceros.codigoSector=:sector) OR (listSaldosTerceros.codigoCiudad IS NULL AND listSaldosTerceros.codigoSector IS NULL)')), 'condition' => "t.activo=:activo AND t.codigoProducto IN ({$codigosStr}) AND ( (listSaldos.saldoUnidad IS NOT NULL AND listPrecios.codigoCiudad IS NOT NULL) OR listSaldosTerceros.codigoCiudad IS NOT NULL)", 'params' => array(':activo' => 1, ':saldo' => 0, ':ciudad' => $objSectorCiudad->codigoCiudad, ':sector' => $objSectorCiudad->codigoSector)); $fecha = new DateTime(); $listCombos = Combo::model()->findAll(array('with' => array('listComboSectorCiudad', 'listProductos' => array('condition' => "listProductos.codigoProducto IN ({$codigosStr})")), 'condition' => 't.estadoCombo=:estado AND t.fechaInicio<=:fecha AND t.fechaFin>=:fecha AND listComboSectorCiudad.saldo>:saldo AND listComboSectorCiudad.codigoCiudad=:ciudad AND listComboSectorCiudad.codigoSector=:sector', 'params' => array(':estado' => 1, ':fecha' => $fecha->format('Y-m-d H:i:s'), 'saldo' => 0, ':ciudad' => $objSectorCiudad->codigoCiudad, ':sector' => $objSectorCiudad->codigoSector))); } if ($formOrdenamiento->orden != null) { if ($formOrdenamiento->orden == 1) { $parametrosProductos['order'] = "((CASE WHEN listPrecios.precioUnidad IS NULL THEN 0 ELSE listPrecios.precioUnidad END) + (CASE WHEN listSaldosTerceros.precioUnidad IS NULL THEN 0 ELSE listSaldosTerceros.precioUnidad END)) ASC"; } else { if ($formOrdenamiento->orden == 2) { $parametrosProductos['order'] = "((CASE WHEN listPrecios.precioUnidad IS NULL THEN 0 ELSE listPrecios.precioUnidad END) + (CASE WHEN listSaldosTerceros.precioUnidad IS NULL THEN 0 ELSE listSaldosTerceros.precioUnidad END)) DESC"; } else { if ($formOrdenamiento->orden == 3) { $parametrosProductos['order'] = "t.descripcionProducto"; } else { if ($formOrdenamiento->orden == 4) { $parametrosProductos['order'] = "t.presentacionProducto"; } } } } } if ($formFiltro->listCategoriasTiendaCheck != null && !empty($formFiltro->listCategoriasTiendaCheck)) { $codigosCategorias = implode(",", $formFiltro->listCategoriasTiendaCheck); $parametrosProductos['condition'] = $parametrosProductos['condition'] . " AND listCategoriasTienda.idCategoriaTienda IN ({$codigosCategorias})"; } $listProductos = Producto::model()->findAll($parametrosProductos); $listCodigoEspecial = CodigoEspecial::model()->findAll(array('condition' => 'codigoEspecial<>0')); $msgCodigoEspecial = array(); $formFiltro->listCategoriasTienda = array(); foreach ($listProductos as $objProducto) { if ($objProducto->codigoEspecial != null && $objProducto->codigoEspecial != 0) { $msgCodigoEspecial[$objProducto->codigoEspecial] = $objProducto->objCodigoEspecial; } foreach ($objProducto->objCategoriaBI->listCategoriasTienda as $objCategoriaTienda) { $formFiltro->listCategoriasTienda[$objCategoriaTienda->idCategoriaTienda] = $objCategoriaTienda->nombreCategoriaTienda; } } $parametrosVista = array('listProductos' => $listProductos, 'listCombos' => $listCombos, 'msgCodigoEspecial' => $msgCodigoEspecial, 'listCodigoEspecial' => $listCodigoEspecial, 'objSectorCiudad' => $objSectorCiudad, 'codigoPerfil' => $codigoPerfil, 'formFiltro' => $formFiltro, 'tipoBusqueda' => Yii::app()->params->busqueda['tipo']['buscador'], 'nombreBusqueda' => $term); $imagenBusqueda = null; if (empty($listProductos)) { $imagenBusqueda = Yii::app()->params->busqueda['imagen']['noExito']; if ($objSectorCiudad != null) { try { Busquedas::registrarBusqueda(array('idenficacionUsuario' => Yii::app()->user->isGuest ? null : Yii::app()->user->name, 'tipoBusqueda' => Yii::app()->params->busqueda['tipo']['buscador'], 'msgBusqueda' => "{$term}: busqueda local", 'codigoCiudad' => $objSectorCiudad == null ? null : $objSectorCiudad->codigoCiudad, 'codigoSector' => $objSectorCiudad == null ? null : $objSectorCiudad->codigoSector)); } catch (Exception $exc) { Yii::log($exc->getMessage() . "\n" . $exc->getTraceAsString(), CLogger::LEVEL_ERROR, 'application'); } } } else { $parametrosVista['formOrdenamiento'] = $formOrdenamiento; } $parametrosVista['imagenBusqueda'] = $imagenBusqueda; $this->render('listaProductos', $parametrosVista); }
public function actionBuscar() { if (!Yii::app()->request->isPostRequest) { throw new CHttpException(404, 'Solicitud inválida.'); } $busqueda = Yii::app()->getRequest()->getPost('busqueda'); $compra = Yii::app()->getRequest()->getPost('compra'); if ($busqueda === null || $compra === null) { throw new CHttpException(404, 'Solicitud inválida.'); } $busqueda = trim($busqueda); if (empty($busqueda)) { throw new CHttpException(404, 'Búsqueda no puede estar vacío.'); } $objCompra = Compras::model()->findByPk($compra); if ($objCompra === null) { throw new CHttpException(404, 'Compra no existe.'); } $listProductos = array(); $listCombos = array(); $codigosArray = GSASearch($busqueda); //$codigosArray = array(10670, 21461, 22159, 410760, 301280, 10192, 30128, 36085); $codigosStr = implode(",", $codigosArray); if (!empty($codigosArray)) { $listProductos = Producto::model()->findAll(array('with' => array('listImagenes', 'objCodigoEspecial', 'listCalificaciones', 'objCategoriaBI', 'listSaldos' => array('condition' => '(listSaldos.saldoUnidad>:saldo AND listSaldos.codigoCiudad=:ciudad AND listSaldos.codigoSector=:sector) OR (listSaldos.saldoUnidad IS NULL AND listSaldos.codigoCiudad IS NULL AND listSaldos.codigoSector IS NULL)'), 'listPrecios' => array('condition' => '(listPrecios.codigoCiudad=:ciudad AND listPrecios.codigoSector=:sector) OR (listPrecios.codigoCiudad IS NULL AND listPrecios.codigoSector IS NULL)'), 'listSaldosTerceros' => array('condition' => '(listSaldosTerceros.codigoCiudad=:ciudad AND listSaldosTerceros.codigoSector=:sector) OR (listSaldosTerceros.codigoCiudad IS NULL AND listSaldosTerceros.codigoSector IS NULL)')), 'condition' => "t.activo=:activo AND t.codigoProducto IN ({$codigosStr}) AND ( (listSaldos.saldoUnidad IS NOT NULL AND listPrecios.codigoCiudad IS NOT NULL) OR listSaldosTerceros.codigoCiudad IS NOT NULL)", 'params' => array(':activo' => 1, ':saldo' => 0, ':ciudad' => $objCompra->codigoCiudad, ':sector' => $objCompra->codigoSector))); $fecha = new DateTime(); $listCombos = Combo::model()->findAll(array('with' => array('listComboSectorCiudad', 'listProductos' => array('condition' => "listProductos.codigoProducto IN ({$codigosStr})")), 'condition' => 't.estadoCombo=:estado AND t.fechaInicio<=:fecha AND t.fechaFin>=:fecha AND listComboSectorCiudad.saldo>:saldo AND listComboSectorCiudad.codigoCiudad=:ciudad AND listComboSectorCiudad.codigoSector=:sector', 'params' => array(':estado' => 1, ':fecha' => $fecha->format('Y-m-d H:i:s'), 'saldo' => 0, ':ciudad' => $objCompra->codigoCiudad, ':sector' => $objCompra->codigoSector))); } $this->renderPartial('buscar', array('listProductos' => $listProductos, 'listCombos' => $listCombos, 'objSectorCiudad' => $objCompra->objSectorCiudad, 'codigoPerfil' => $objCompra->codigoPerfil, 'nombreBusqueda' => $busqueda)); }