コード例 #1
0
 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();
 }
コード例 #2
0
 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;
 }
コード例 #3
0
 public function indexAction()
 {
     $array = array();
     for ($i = 0; $i < count($this->session->get('comparacao')); $i++) {
         $array[] = Produtos::findById($this->session->get('comparacao')[$i])->toArray();
     }
     $chaves = array();
     foreach ($array[0] as $key => $value) {
         $chaves[] = $key;
     }
     $this->view->produtos = $array;
     $this->view->chaves = $chaves;
 }
コード例 #4
0
 private static function subtraiEstoque($pedido)
 {
     $itens = PedidoItens::find('pedido_id =' . $pedido);
     $base = new BaseHelper();
     foreach ($itens as $key => $value) {
         $item = PedidoItens::findFisrt('id =' . $value->id);
         $produto = Produtos::findById($value->produto_id);
         if ($value->detalhe_id != '') {
             $chave = $base->arrayMultiSearch($produto['detalhes'], 'detalhe_id', $value->detalhe_id);
             $produto['detalhes'][$chave]['estoque'] = $produto['detalhes'][$chave]['estoque'] - $value->quantidade;
             $produto->save();
         } else {
             $produto->estoque = $produto->estoque - $value->quantidade;
             $produto->save();
         }
     }
 }
コード例 #5
0
 public static function getMaisVendidos($limit = 10, $periodo = array())
 {
     $produtos = self::sum(array("column" => "quantidade", "group" => "produto_id,pedido_id", "order" => "sumatory DESC", "limit" => $limit));
     $arr = array();
     for ($i = 0; $i < count($produtos); $i++) {
         if (!empty($periodo)) {
             $pedido = Pedidos::findFirst($produtos[$i]->pedido_id)->toArray();
             if ($pedido['data'] >= $periodo['inicial'] . ' 00:00:00' && $pedido['data'] <= $periodo['final'] . ' 23:59:59') {
                 $arr[$i]['produto'] = Produtos::findById($produtos[$i]->produto_id)->nome;
                 $arr[$i]['quantidade'] = $produtos[$i]->sumatory;
             }
         } else {
             $arr[$i]['produto'] = Produtos::findById($produtos[$i]->produto_id)->nome;
             $arr[$i]['quantidade'] = $produtos[$i]->sumatory;
         }
     }
     return $arr;
 }
コード例 #6
0
 public function setCorAction()
 {
     if ($this->request->isPost()) {
         if ($this->request->isAjax()) {
             $this->view->disable();
             $produto = Produtos::findById('560433b1b440b308090001c1');
             if ($this->request->getPost('cor') != '') {
                 if (isset($produto->imagem_detalhes) && !empty($produto->imagem_detalhes)) {
                     foreach ($produto->imagem_detalhes as $key => $value) {
                         if ($this->request->getPost('cor') != $key) {
                             $arr = array_diff($produto->imagem_detalhes[$key], array($this->request->getPost('imagem')));
                             $produto->imagem_detalhes[$key] = $arr;
                         }
                     }
                 }
                 $produto->imagem_detalhes[$this->request->getPost('cor')][] = $this->request->getPost('imagem');
                 $produto->save();
             }
         }
     }
 }
コード例 #7
0
 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;
         }
     }
 }
コード例 #8
0
 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);
 }
コード例 #9
0
 private static function setDados($post)
 {
     $base = new BaseHelper();
     $pedido = Pedidos::findFirst("id = " . $post['pedido_id'] . "");
     $endereco = Enderecos::findFirst("relacao = 'pedidos' and id_relacao = " . $post['pedido_id']);
     $usuario = Usuarios::findFirst('id = ' . $pedido->usuario_id);
     $cliente = Clientes::findFirst('usuario_id =' . $pedido->usuario_id);
     $fone = explode(')', $cliente->telefone);
     $dados['email'] = self::$email;
     $dados['token'] = self::$token;
     $dados['paymentMode'] = 'default';
     $dados['receiverEmail'] = self::$email;
     $dados['currency'] = self::$currency;
     $dados['reference'] = $post['pedido_id'];
     $dados['notificationURL'] = $base->url_base . 'checkout/notificacao/pagseguro';
     //Itens
     $itens = PedidoItens::find("pedido_id = " . $post['pedido_id']);
     foreach ($itens as $key => $value) {
         $indice = $key + 1;
         $dados["itemId{$indice}"] = $value->produto_id;
         $dados["itemDescription{$indice}"] = Produtos::findById($value->produto_id)->nome;
         if ($post['paymentMethod'] == 'ONLINE_DEBIT' || $post['paymentMethod'] == 'BOLETO') {
             $dados["itemAmount{$indice}"] = $base->setDesconto($value->valor, 10);
         } else {
             $dados["itemAmount{$indice}"] = $value->valor;
         }
         $dados["itemQuantity{$indice}"] = $value->quantidade;
     }
     // Informações do pagamento
     if ($post['creditCardToken'] != '') {
         $dados['paymentMethod'] = 'creditCard';
         $dados['creditCardToken'] = $post['creditCardToken'];
         $dados['installmentQuantity'] = $post['parcelas'];
         $dados['installmentValue'] = number_format($post['installmentValue'], 2, '.', '');
         $dados['creditCardHolderName'] = $post['nome_titular'];
         $dados['creditCardHolderBirthDate'] = $post['data_nascimento'];
         $dados['creditCardHolderCPF'] = $base->limpaString($post['cpf']);
         $dados['creditCardHolderAreaCode'] = str_replace('(', '', $fone[0]);
         $dados['creditCardHolderPhone'] = str_replace('-', '', $fone[1]);
         $dados['billingAddressPostalCode'] = str_replace('-', '', $endereco->cep);
         $dados['billingAddressStreet'] = $endereco->logradouro;
         $dados['billingAddressNumber'] = $endereco->numero;
         $dados['billingAddressComplement'] = $endereco->complemento;
         $dados['billingAddressDistrict'] = $endereco->bairro;
         $dados['billingAddressCity'] = $endereco->Cidade->nome;
         $dados['billingAddressState'] = $endereco->Estado->sigla;
         $dados['billingAddressCountry'] = 'BRA';
     } else {
         if ($post['paymentMethod'] == 'ONLINE_DEBIT') {
             $dados['paymentMethod'] = 'eft';
             $dados['bankName'] = $post['bankName'] == 'BANCO_BRASIL' ? 'bancodobrasil' : strtolower($post['bankName']);
         } else {
             $dados['paymentMethod'] = 'boleto';
         }
     }
     //Hash
     $dados['senderHash'] = $post['hash'];
     //Dados do Comprador
     $dados['extraAmount'] = $pedido->frete;
     $dados['senderEmail'] = self::$producao ? $usuario->email : '*****@*****.**';
     $dados['senderName'] = $usuario->nome;
     if ($cliente->pessoa_juridica) {
         $dados['senderCNPJ'] = $cliente->documento;
     } else {
         $dados['senderCPF'] = $cliente->documento;
     }
     $dados['senderAreaCode'] = str_replace('(', '', $fone[0]);
     $dados['senderPhone'] = str_replace('-', '', $fone[1]);
     // Dados de endereco
     $dados['shippingAddressStreet'] = $endereco->logradouro;
     $dados['shippingAddressNumber'] = $endereco->numero;
     $dados['shippingAddressComplement'] = $endereco->complemento;
     $dados['shippingAddressDistrict'] = $endereco->bairro;
     $dados['shippingAddressPostalCode'] = str_replace('-', '', $endereco->cep);
     $dados['shippingAddressCity'] = $endereco->Cidade->nome;
     $dados['shippingAddressState'] = $endereco->Estado->sigla;
     $dados['shippingAddressCountry'] = 'BRA';
     return $dados;
 }
コード例 #10
0
 public function showAction($id)
 {
     $this->view->dados = Avaliacoes::findFirst("id = {$id}");
     $this->view->produto = Produtos::findById($this->view->dados->produto_id);
 }
コード例 #11
0
 private function setItem($array)
 {
     $base = new BaseHelper();
     $produto = Produtos::findById($array['produto_id'])->toArray();
     $array['id'] = $array['produto_id'];
     $array['name'] = $produto['nome'];
     $array['quantity'] = $array['quantidade'];
     if (isset($array['detalhe_id']) && $array['detalhe_id'] != '') {
         $desconto = $base->getDesconto($produto, $array['detalhe_id']);
         $chave = $base->arrayMultiSearch($produto['detalhes'], 'detalhe_id', $array['detalhe_id']);
         $array['options']['detalhe_id'] = $array['detalhe_id'];
         $array['price'] = $produto['detalhes'][$chave]['valor'] - $desconto;
         if ($desconto != 0) {
             $array['valor_real'] = $produto['detalhes'][$chave]['valor'];
         }
     } else {
         $desconto = $base->getDesconto($produto);
         $valor = isset($produto['valor']) ? $produto['valor'] : $produto['detalhes'][0]['valor'];
         $array['price'] = $valor - $desconto;
         if ($desconto != 0) {
             $array['valor_real'] = $valor;
         }
     }
     unset($array['produto_id']);
     unset($array['detalhe_id']);
     return $array;
 }
コード例 #12
0
 public function getProduto($param)
 {
     return Produtos::findById($param);
 }
コード例 #13
0
 public static function withProduto($array)
 {
     $produto_id = new \MongoId($array['produto_id']);
     $array['produto'] = Produtos::findFirst(array('conditions' => array('_id' => $produto_id)))->toArray();
     $array['nota'] = self::getStars($array['nota']);
     $array['data'] = date('d/m/Y', strtotime($array['data']));
     return $array;
 }
コード例 #14
0
 public function setComprimento()
 {
     $comprimento = array();
     foreach ($this->obj as $key => $value) {
         $produto = Produtos::findById($value->id)->toArray();
         if ($this->helper->ecommerce_options('produto_detalhes') == '1') {
             $chave = $this->helper->arrayMultiSearch($produto['detalhes'], 'detalhe_id', $value->options['detalhe_id']);
             $comprimento[] = $produto['detalhes'][$chave]['comprimento'];
         } else {
             $comprimento[] = $produto['comprimento'];
         }
     }
     return max($comprimento) > 16 ? max($comprimento) : 16;
 }
コード例 #15
0
 protected function getItens()
 {
     $html = '';
     foreach ($this->cart->contents() as $key => $value) {
         $produto = Produtos::findById($value->id)->toArray();
         $html .= "<tr class='cart-item {$this->options['item_class']}'>";
         $preco = number_format($value->price, 2, ',', '.');
         $total = number_format($value->price * $value->quantity, 2, ',', '.');
         $imagem = Imagens::findFirst($produto['imagens'][0]);
         $preco_real = $value->valor_real ? '<span class="preco-desconto">R$ ' . number_format($value->valor_real, 2, ',', '.') . '</span>' : '';
         if (!$this->options['resumo']) {
             $html .= "<td><img src='{$this->url_base}{$imagem->url}' class='img-responsive' style='width:100px'/></td>";
             if ($this->ecommerce_options->produto_detalhes == '1') {
                 $chave = parent::arrayMultiSearch($produto['detalhes'], 'detalhe_id', $value->options['detalhe_id']);
                 $variacao = '';
                 foreach (unserialize($this->ecommerce_options->produto_detalhe_options) as $c => $v) {
                     $variacao .= ucwords($v['label']) . ': ' . $produto['detalhes'][$chave]["{$v['label']}"];
                 }
             } else {
                 $variacao = '';
             }
             $html .= "<td>{$value->name}<br/> <span class='cart-variacao'>{$variacao}</span></td>";
             $select = "<select class='form-control cart-update' data-identificador='{$key}'>";
             if ($this->ecommerce_options->produto_detalhes == '0') {
                 $estoque = $produto['estoque'];
             } else {
                 $estoque = isset($value->options) ? $produto['detalhes'][$chave]['estoque'] : $produto['detalhes'][0]['estoque'];
             }
             for ($i = 1; $i <= $estoque; $i++) {
                 $selected = $value->quantity == $i ? 'selected' : '';
                 $select .= "<option value='{$i}' {$selected}>{$i}</option>";
             }
             $select .= '</select>';
             $html .= "<td style='width:18%'>{$select}</td>";
             $html .= "<td>R\$ {$preco} {$preco_real}</td>";
             $html .= "<td class='cart-item-total'>R\$ {$total}</td>";
             $link = $this->url_base . 'cart/remove/' . $key;
             $html .= "<td><a href='{$link}' class='cart-remove'><i class='fa fa-trash fa-2x'></i></a></td>";
         } else {
             $html .= "<td><img src='{$this->url_base}{$imagem->url}' class='img-responsive' style='width:100px'/></td>";
             $html .= "<td>\n\t\t\t\t\t\t\t{$value->name} <br/>\n\t\t\t\t\t\t\t<strong>{$value->quantity} x R\$ {$preco}</strong>\n\t\t\t\t\t\t\t<h5>R\$ {$total}</h5>\n\t\t\t\t</td>";
         }
         $html .= '<tr/>';
     }
     return $html;
 }