protected function setWidgtedDetalhes($layout)
 {
     $html = '';
     if ($this->ecommerce_options->produto_detalhes == 1) {
         $detalhes = unserialize($this->ecommerce_options->produto_detalhe_options);
         $categoria = Categorias::findById($layout['categoria_id']);
         $ids = array();
         $subcategorias = Categorias::getChildrensIds($categoria);
         if (!empty($subcategorias)) {
             foreach ($subcategorias as $value) {
                 $ids[] = (string) $value;
             }
         }
         $ids[] = (string) $categoria->_id;
         $produtos = Produtos::find($this->getConditions($ids));
         foreach ($detalhes as $value) {
             $array = array();
             for ($i = 0; $i < count($produtos); $i++) {
                 foreach ($produtos[$i]['detalhes'] as $key => $valor) {
                     if (isset($valor[$value['label']])) {
                         $array[] = $valor[$value['label']];
                     }
                 }
             }
             $html .= $this->getWidgtedDetalhes($layout, array_unique($array), $value);
         }
     }
     return $html;
 }
 public function indexAction()
 {
     $this->view->numeros = array('produtos' => count(Produtos::find()), 'pedidos' => Pedidos::count(), 'total_vendas' => Pedidos::sum(array("column" => "total", "conditions" => "status_id in (3,4,5)")), 'usuarios' => Usuarios::count('nivel_id = 3'));
     $this->view->ultimos_pedidos = Pedidos::find(array('limit' => 10, 'order' => 'data desc'));
     $this->view->pedidos = Pedidos::getEstatisticas('pedido');
     $this->view->mais_vendidos = PedidoItens::getMaisVendidos();
 }
 public function searchAction()
 {
     if ($this->request->isPost()) {
         $this->view->disable();
         $arr = array();
         $param = $this->request->getPost('q');
         $produtos = Produtos::find(array('conditions' => array('nome' => new \MongoRegex("/{$param}/i"))));
         foreach ($produtos as $key => $value) {
             $arr[$key]['id'] = (string) $value->_id;
             $arr[$key]['name'] = $value->nome;
         }
         $this->response->setHeader("Content-Type", "application/json");
         return $this->response->setContent(json_encode($arr));
     }
 }
 public function searchAction()
 {
     if ($this->request->isPost()) {
         if (isset($_POST['q'])) {
             $this->view->disable();
             $arr = array();
             $param = $this->request->getPost('q');
             $produtos = Produtos::find(array('conditions' => array('nome' => new \MongoRegex("/{$param}/i"))));
             foreach ($produtos as $key => $value) {
                 $arr[$key]['id'] = (string) $value->_id;
                 $arr[$key]['name'] = $value->nome;
                 $arr[$key]['imagem'] = $this->ecommerce_options->url_base . Imagens::findFirst($value->imagens[0])->url;
                 $arr[$key]['url'] = $this->base->generateUrl($value->nome, $value->_id, 'produto');
             }
             $this->response->setHeader("Content-Type", "application/json");
             return $this->response->setContent(json_encode($arr));
         } else {
             $this->view->indice = 0;
             $this->view->pagina = 0;
             $this->view->filtros = array();
             $this->view->search = true;
         }
     }
 }
 protected function getData($array)
 {
     $arr = array();
     if (isset($array['relacionados'])) {
         if (!empty($array['relacionados'])) {
             $ids = array();
             foreach ($array['relacionados'] as $value) {
                 $ids[] = new \MongoId($value);
             }
             $arr['conditions'] = array('_id' => array('$in' => $ids));
         } else {
             $arr['conditions'] = array('categoria' => (string) $array['categoria'], '_id' => array('$ne' => $this->options['produto']->_id));
         }
     } else {
         if ($array['search']) {
             $param = $_POST['search'];
             $arr['conditions'] = array('nome' => new \MongoRegex("/{$param}/i"));
         } else {
             if ($array['destaque']) {
                 $arr['conditions'] = array('destaque' => '1');
             } else {
                 if ($array['lancamento']) {
                     $arr['conditions'] = array('destaque' => '0');
                 } else {
                     if ($array['categoria'] != '') {
                         if (is_array($array['categoria'])) {
                             $ids = array();
                             foreach ($array['categoria'] as $value) {
                                 $ids[] = (string) $value;
                             }
                             $arr['conditions'] = array('categoria' => array('$in' => $ids));
                         } else {
                             $arr['conditions'] = array('categoria' => $array['categoria']);
                         }
                     }
                 }
             }
             if (!empty($array['filtros'])) {
                 $filtros = array();
                 foreach ($array['filtros'] as $key => $value) {
                     if ($key != 'valor') {
                         $filtros['$elemMatch']["{$key}"] = array('$in' => $value);
                     } else {
                         $valores = explode(';', $value[0]);
                         $filtros['$elemMatch']["{$key}"] = array('$gte' => floatval($valores[0]), '$lte' => floatval($valores[1]));
                     }
                 }
                 $arr['conditions']['detalhes'] = $filtros;
             }
         }
     }
     if ($array['destaque']) {
         $arr['limit'] = $this->ecommerce_options->produtos_destaque;
     } else {
         $arr['limit'] = $this->ecommerce_options->produtos_por_pagina;
     }
     $arr['conditions']['ativo'] = '1';
     if ($array['pagina'] != 0) {
         $arr['skip'] = intval($this->ecommerce_options->produtos_por_pagina) * $array['pagina'];
     }
     $arr['sort'] = array('created_at' => -1);
     return Produtos::find($arr);
 }