403Webshell
Server IP : 54.94.228.101  /  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/OfertaDoDiaController.php
<?php

namespace App\Http\Controllers\Website;

use App\Http\Requests;
use App\Modules\PedidoVenda\Models\PedidoVenda;
use Illuminate\Http\Request;
use App\Http\Controllers\BaseController;

use App\Modules\Oferta\Models\Oferta;
use App\Modules\OfertaReserva\Models\OfertaReserva;

use App\Modules\Produto\Models\Produto;
use App\Modules\Noticia\Models\Noticia;
use App\Modules\BannerFooter\Models\BannerFooter;
use App\Modules\Tema\Models\Tema;

use App\Modules\Canal\Models\Canal;
use App\Services\CartService;
use App\Services\GeralService;
use App\Services\OfertaService;
use App\BasicInfo;
use DB;

class OfertaDoDiaController extends BaseController
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $data = array();
        $data['titulo_pagina'] = 'Oferta';
        $data['subtitulo_pagina'] = 'do Dia';

        $data['oferta'] = Oferta::where('data',date('Y-m-d'))->where('tipo', 'D')->with('produtos')->first();
        foreach ($data['oferta']->produtos as $key => $produto) {
            $data['oferta']->produtos[$key]->listaImagens = $produto->produto->getListaImagens();
        }

        GeralService::checkoutTracking('oferta', ['id_tipo' => $data['oferta']->id]);

        $data['ofertasRelacionadas'] = GeralService::buscarOfertasRelacionadas([
            'limit'         => 4,
            'oferta_semana' => true
        ]);

        $data['canaisLiberados'] = BasicInfo::first()->value('liberar_canais');
        $data['clienteLogado']   = GeralService::buscarClienteLogado();
        $data['dadosAdega']      = GeralService::buscarFreteAdegaAberta();
        $data['oferta_semana']   = GeralService::buscarOfertaDaSemana();

        return view('site/oferta-do-dia',$data);
    }

    public function casada()
    {
        $data = array();
        $data['titulo_pagina'] = 'Oferta';
        $data['subtitulo_pagina'] = 'Casada';

        $data['oferta'] = Oferta::where('data',date('Y-m-d'))->where('tipo', 'CS')->with('produtos')->orderBy('oferta.id', 'DESC')->first();
        foreach ($data['oferta']->produtos as $key => $produto) {
            $data['oferta']->produtos[$key]->listaImagens = $produto->produto->getListaImagens();
        }

        GeralService::checkoutTracking('oferta', ['id_tipo' => $data['oferta']->id]);

        $data['ofertasRelacionadas'] = GeralService::buscarOfertasRelacionadas([
            'limit'         => 4,
            'oferta_semana' => true
        ]);

        $data['canaisLiberados'] = BasicInfo::first()->value('liberar_canais');
        $data['clienteLogado']   = GeralService::buscarClienteLogado();
        $data['dadosAdega']      = GeralService::buscarFreteAdegaAberta();
        $data['oferta_semana']   = GeralService::buscarOfertaDaSemana();

        return view('site/oferta-casada',$data);
    }
    
    public function detalhe($slug, Request $request){
        $tempo_reserva = OfertaReserva::dataAtual();

        $data = array();
        $data = $request->input();
        $data['bloquear_master_class'] = true;

        $data['oferta'] = Oferta::select(
            'oferta.*',
            DB::raw("(SELECT 1 FROM oferta_reserva WHERE oferta.id = oferta_reserva.oferta_id AND oferta_reserva.data_expiracao >= '{$tempo_reserva}' LIMIT 1) AS 'oferta_reserva'"),
            DB::raw("(SELECT tipo.grupo FROM oferta_has_produto ohp, produto p, tipo_de_produto tipo WHERE ohp.id_oferta = oferta.id AND p.id = ohp.id_produto AND tipo.id = p.id_tipo_produto ORDER BY ohp.ordem ASC, ohp.id ASC LIMIT 1) AS 'grupo_produto'"),
            DB::raw("(SELECT tipo.grupo FROM oferta_has_produto ohp, produto p, tipo_de_produto tipo WHERE ohp.id_oferta = oferta.id AND p.id = ohp.id_produto AND tipo.id = p.id_tipo_produto AND tipo.grupo = 'vinhos' LIMIT 1) AS 'grupo_vinho'")
        )->where('slug',$slug)
        ->first();


        if(!$data['oferta']){
            return redirect('/');
        }

        $data['valido_adega_virada'] = GeralService::validarOfertaAdegaVirada($data['oferta']);

        if(count($data['oferta']->produtos) > 0){
            foreach ($data['oferta']->produtos as $key => $produto) {
                $data['oferta']->produtos[$key]->listaImagens = $produto->produto->getListaImagens();
            }
        }

        //Ajuste Data Canal
        $canal = Canal::join('canal_has_oferta', 'canal.id', '=', 'canal_has_oferta.id_canal')->where('canal_has_oferta.id_oferta', $data['oferta']->id)->orderBy('canal_has_oferta.data_final', 'DESC')->first();
        GeralService::checkoutTracking('oferta', ['id_tipo' => $data['oferta']->id]);

        //Disponibilidad Produto
        $disponibilidade = 0;
        $variacoes       = [];
        if($data['oferta'] && $data['oferta']->produtos){
            $disponibilidade = !empty($data['oferta']->produtos[0]->produto->disponibilidade) ? $data['oferta']->produtos[0]->produto->disponibilidade : 0;
            $variacoes       = isset($data['oferta']->produtos[0]->produto->tipo->variacoes) ? GeralService::buscarVariacoesProduto($data['oferta']->produtos[0]->produto) : [];
        }
        $data['disponibilidade'] = $disponibilidade;
        $data['variacoes']       = $variacoes;
        $data['ofertasCart']     = CartService::buscarOfertasCart();

        //$data['oferta']->grupo_produto == 'acessorios' || 
        if(!empty($data['oferta']->grupo_produto) && $data['oferta']->grupo_vinho != 'vinhos' && ($data['oferta']->grupo_produto == 'vestuario')):
            $view_oferta = 'oferta-'.$data['oferta']->grupo_produto;
        elseif($data['oferta'] && $data['oferta']->tipo == 'CF'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-confraria-colecao' : 'oferta-confraria');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'PR'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-premium-colecao' : 'oferta-premium');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'R'):
            $view_oferta = 'oferta-relampago-colecao';
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'CR'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-cru-classe-colecao' : 'oferta-cru-classe');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'BF'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-black-friday-colecao' : 'oferta-black-friday');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'OU'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-outlet-colecao' : 'oferta-outlet');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && count($data['oferta']->produtos) > 1):
            $view_oferta = 'oferta-colecao';
        elseif($data['oferta'] && $data['oferta']->tipo == 'CS'):
            $view_oferta = 'oferta-casada';
        elseif($data['oferta'] && $data['oferta']->tipo == 'MC'):
            $view_oferta = 'oferta-master-class';
        else:
            $view_oferta = 'oferta-do-dia';
        endif;

        //$data['titulo_pagina'] = $canal ? $canal->nome : $data['oferta']->titulo;
        //$data['subtitulo_pagina'] = $canal ? $canal->subtitulo : $data['oferta']->sub_titulo;
        if($data['oferta']->tipo == 'D' && date('Y-m-d') == $data['oferta']->data){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Do dia';
        }elseif($data['oferta']->tipo == 'CS' && date('Y-m-d') == $data['oferta']->data){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Casada';
        }elseif($data['oferta']->tipo == 'CF'){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Confraria';
        }elseif($data['oferta']->tipo == 'S'){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Da Semana';
        }elseif($data['oferta']->tipo == 'E'){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Exclusiva';
        }elseif($data['oferta']->tipo == 'M'){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Mercado';
        }elseif($data['oferta']->tipo == 'MC'){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Master Class';
        }elseif($canal && $view_oferta == 'oferta-colecao'){
            $data['titulo_pagina'] = $canal ? $canal->nome . ' ' . $canal->subtitulo : '';
            $data['subtitulo_pagina'] = '';
        }else{
            $data['titulo_pagina'] = $canal ? $canal->nome : '';
            $data['subtitulo_pagina'] = $canal ? $canal->subtitulo : '';
        }

        $data['data_oferta_semana'] = GeralService::dataOfertaSemana();

        $data['data_oferta_confraria'] = GeralService::dataOfertaConfraria();

        $data['data_fim_oferta_confraria'] = GeralService::retornaData(date('m'), date('Y'));

        $data['data_fim_oferta'] = date('Y-m-d', strtotime("+7 days",strtotime($data['oferta']->data)));

        $data['canal'] = $canal;

        $data['ofertasRelacionadas'] = GeralService::buscarOfertasRelacionadas([
            'limit'         => 4,
            'oferta_semana' => false,
            'random'        => false
        ]);

        $data['canaisLiberados'] = BasicInfo::first()->value('liberar_canais');

        $data['date_limite_exclusiva'] = date('Y-m-d', strtotime("-5 day"));
        $data['clienteLogado']         = GeralService::buscarClienteLogado();
        $data['dadosAdega']            = GeralService::buscarFreteAdegaAberta();
        $data['oferta_semana']         = GeralService::buscarOfertaDaSemana();
        
        if($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'R'){
            $data['ofertaRelampago'] = GeralService::buscarOfertaCanalRelampago();
        }

        if($data['oferta']->tipo == 'CF'){
            $data['html_ficha_tecnica'] = view('confraria._ficha-tecnica', $data)->render();
        }

        $dataOfertaKit = GeralService::retornaData(date('m'), date('Y'));
        $oferta_kit_confraria = GeralService::buscarOfertaConfraria($dataOfertaKit);

        $data['kit_confraria'] = false;
        if(isset($oferta_kit_confraria)){
            if($oferta_kit_confraria->id == $data['oferta']->id){
                $data['kit_confraria'] = true;
            }
        }

        if(isset($data['clienteLogado']) && isset($data['oferta'])){
            $produtosMasterClass = [];

            foreach($data['oferta']->produtos as $produto){
                if($produto->produto->tipo->slug == 'masterclass'){
                    $produtosMasterClass[] = $produto->produto->id;
                }
            }

            $check = PedidoVenda::query()
                ->join('pedido_venda_has_produto', 'pedido_venda_has_produto.id_pedido_venda', 'pedido_venda.id')
                ->where('pedido_venda.id_cliente', $data['clienteLogado']->id)
                ->whereIn('pedido_venda.id_status_pedido_venda', [2, 3, 7])
                ->whereIn('pedido_venda_has_produto.id_produto', $produtosMasterClass)
                ->groupBy('pedido_venda.id')
                ->get()
                ->toArray();

            if(isset($check) && count($check) > 0){
                $data['bloquear_master_class'] = false;
            }
        }

        return view("site/{$view_oferta}",$data); 
    }

    public function previewOfertaConfraria($slug, Request $request){

        $tempo_reserva = OfertaReserva::dataAtual();

        $data = array();
        $data = $request->input();

        $data['oferta'] = Oferta::select(
            'oferta.*',
            DB::raw("(SELECT 1 FROM oferta_reserva WHERE oferta.id = oferta_reserva.oferta_id AND oferta_reserva.data_expiracao >= '{$tempo_reserva}' LIMIT 1) AS 'oferta_reserva'"),
            DB::raw("(SELECT tipo.grupo FROM oferta_has_produto ohp, produto p, tipo_de_produto tipo WHERE ohp.id_oferta = oferta.id AND p.id = ohp.id_produto AND tipo.id = p.id_tipo_produto ORDER BY ohp.ordem ASC, ohp.id ASC LIMIT 1) AS 'grupo_produto'"),
            DB::raw("(SELECT tipo.grupo FROM oferta_has_produto ohp, produto p, tipo_de_produto tipo WHERE ohp.id_oferta = oferta.id AND p.id = ohp.id_produto AND tipo.id = p.id_tipo_produto AND tipo.grupo = 'vinhos' LIMIT 1) AS 'grupo_vinho'")
        )->where('slug',$slug)
        ->first();

        if(!$data['oferta']){
            return redirect('/');
        }

        $data['data_oferta_confraria'] = GeralService::dataOfertaConfraria();

        $data['data_fim_oferta_confraria'] = GeralService::retornaData(date('m'), date('Y'));

        if($data['oferta']->data != $data['data_oferta_confraria'] && $data['oferta']->data != $data['data_fim_oferta_confraria']){
            $data['oferta']->data = date('Y-m', strtotime($data['oferta']->data)) . '-01';
        }

        if(count($data['oferta']->produtos) > 0){
            foreach ($data['oferta']->produtos as $key => $produto) {
                $data['oferta']->produtos[$key]->listaImagens = $produto->produto->getListaImagens();
            }
        }
        //Ajuste Data Canal
        $canal = Canal::join('canal_has_oferta', 'canal.id', '=', 'canal_has_oferta.id_canal')->where('canal_has_oferta.id_oferta', $data['oferta']->id)->orderBy('canal.data_inicio', 'DESC')->first();
        GeralService::checkoutTracking('oferta', ['id_tipo' => $data['oferta']->id]);

        //Disponibilidad Produto
        $disponibilidade = 0;
        $variacoes       = [];
        if($data['oferta'] && $data['oferta']->produtos){
            $disponibilidade = !empty($data['oferta']->produtos[0]->produto->disponibilidade) ? $data['oferta']->produtos[0]->produto->disponibilidade : 0;
            $variacoes       = isset($data['oferta']->produtos[0]->produto->tipo->variacoes) ? GeralService::buscarVariacoesProduto($data['oferta']->produtos[0]->produto) : [];
        }
        $data['disponibilidade'] = $disponibilidade;
        $data['variacoes']       = $variacoes;
        $data['ofertasCart']     = CartService::buscarOfertasCart();

        //$data['oferta']->grupo_produto == 'acessorios' || 
        if(!empty($data['oferta']->grupo_produto) && $data['oferta']->grupo_vinho != 'vinhos' && ($data['oferta']->grupo_produto == 'vestuario')):
            $view_oferta = 'oferta-'.$data['oferta']->grupo_produto;
        elseif($data['oferta'] && $data['oferta']->tipo == 'CF'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-confraria-colecao' : 'oferta-confraria');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'PR'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-premium-colecao' : 'oferta-premium');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'R'):
            $view_oferta = 'oferta-relampago-colecao';
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'CR'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-cru-classe-colecao' : 'oferta-cru-classe');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'BF'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-black-friday-colecao' : 'oferta-black-friday');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'OU'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-outlet-colecao' : 'oferta-outlet');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && count($data['oferta']->produtos) > 1):
            $view_oferta = 'oferta-colecao';
        elseif($data['oferta'] && $data['oferta']->tipo == 'CS'):
            $view_oferta = 'oferta-casada';
        else:
            $view_oferta = 'oferta-do-dia';
        endif;

        //$data['titulo_pagina'] = $canal ? $canal->nome : $data['oferta']->titulo;
        //$data['subtitulo_pagina'] = $canal ? $canal->subtitulo : $data['oferta']->sub_titulo;
        if($data['oferta']->tipo == 'D' && date('Y-m-d') == $data['oferta']->data){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Do dia';
        }elseif($data['oferta']->tipo == 'CS' && date('Y-m-d') == $data['oferta']->data){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Casada';
        }elseif($data['oferta']->tipo == 'CF'){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Confraria';
        }elseif($data['oferta']->tipo == 'S'){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Da Semana';
        }elseif($data['oferta']->tipo == 'E'){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Exclusiva';
        }elseif($data['oferta']->tipo == 'M'){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Mercado';
        }elseif($canal && $view_oferta == 'oferta-colecao'){
            $data['titulo_pagina'] = $canal ? $canal->nome . ' ' . $canal->subtitulo : '';
            $data['subtitulo_pagina'] = '';
        }else{
            $data['titulo_pagina'] = $canal ? $canal->nome : '';
            $data['subtitulo_pagina'] = $canal ? $canal->subtitulo : '';
        }

        $data['data_oferta_semana'] = GeralService::dataOfertaSemana();

        $data['data_fim_oferta'] = date('Y-m-d', strtotime("+7 days",strtotime($data['oferta']->data)));
        
        $data['canal'] = $canal;

        $data['ofertasRelacionadas'] = GeralService::buscarOfertasRelacionadas([
            'limit'         => 4,
            'oferta_semana' => false,
            'random'        => false
        ]);

        $data['canaisLiberados'] = BasicInfo::first()->value('liberar_canais');

        $data['date_limite_exclusiva'] = date('Y-m-d', strtotime("-5 day"));
        $data['clienteLogado']         = GeralService::buscarClienteLogado();
        $data['dadosAdega']            = GeralService::buscarFreteAdegaAberta();
        $data['oferta_semana']         = GeralService::buscarOfertaDaSemana();
        
        if($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'R'){
            $data['ofertaRelampago'] = GeralService::buscarOfertaCanalRelampago();
        }

        if($data['oferta']->tipo == 'CF'){
            $data['html_ficha_tecnica'] = view('confraria._ficha-tecnica', $data)->render();
        }

        $dataOfertaKit = GeralService::retornaData(date('m'), date('Y'));
        $oferta_kit_confraria = GeralService::buscarOfertaConfraria($dataOfertaKit);

        $data['kit_confraria'] = false;
        if(isset($oferta_kit_confraria)){
            if($oferta_kit_confraria->id == $data['oferta']->id){
                $data['kit_confraria'] = true;
            }
        }

        
        return view("site/preview-confraria-colecao", $data);
        
    }

    public function ofertaConfraria(Request $request)
    {
        $tempo_reserva = OfertaReserva::dataAtual();

        $data = array();
        $data = $request->input();

        $data['data_oferta_confraria'] = GeralService::dataOfertaConfraria();
        $data['oferta_confraria']      = GeralService::buscarOfertaConfraria($data['data_oferta_confraria']);

        if(!$data['oferta_confraria']){
            return redirect('/');
        }

        $data['oferta'] = Oferta::select(
            'oferta.*',
            DB::raw("(SELECT 1 FROM oferta_reserva WHERE oferta.id = oferta_reserva.oferta_id AND oferta_reserva.data_expiracao >= '{$tempo_reserva}' LIMIT 1) AS 'oferta_reserva'"),
            DB::raw("(SELECT tipo.grupo FROM oferta_has_produto ohp, produto p, tipo_de_produto tipo WHERE ohp.id_oferta = oferta.id AND p.id = ohp.id_produto AND tipo.id = p.id_tipo_produto ORDER BY ohp.ordem ASC, ohp.id ASC LIMIT 1) AS 'grupo_produto'"),
            DB::raw("(SELECT tipo.grupo FROM oferta_has_produto ohp, produto p, tipo_de_produto tipo WHERE ohp.id_oferta = oferta.id AND p.id = ohp.id_produto AND tipo.id = p.id_tipo_produto AND tipo.grupo = 'vinhos' LIMIT 1) AS 'grupo_vinho'")
        )->where('id', $data['oferta_confraria']->id)
        ->first();

        if(!$data['oferta']){
            return redirect('/');
        }

        if(count($data['oferta']->produtos) > 0){
            foreach ($data['oferta']->produtos as $key => $produto) {
                $data['oferta']->produtos[$key]->listaImagens = $produto->produto->getListaImagens();
            }
        }
        //Ajuste Data Canal
        $canal = Canal::join('canal_has_oferta', 'canal.id', '=', 'canal_has_oferta.id_canal')->where('canal_has_oferta.id_oferta', $data['oferta']->id)->orderBy('canal.data_inicio', 'DESC')->first();
        GeralService::checkoutTracking('oferta', ['id_tipo' => $data['oferta']->id]);

        //Disponibilidad Produto
        $disponibilidade = 0;
        $variacoes       = [];
        if($data['oferta'] && $data['oferta']->produtos){
            $disponibilidade = !empty($data['oferta']->produtos[0]->produto->disponibilidade) ? $data['oferta']->produtos[0]->produto->disponibilidade : 0;
            $variacoes       = isset($data['oferta']->produtos[0]->produto->tipo->variacoes) ? GeralService::buscarVariacoesProduto($data['oferta']->produtos[0]->produto) : [];
        }
        $data['disponibilidade'] = $disponibilidade;
        $data['variacoes']       = $variacoes;
        $data['ofertasCart']     = CartService::buscarOfertasCart();

        //$data['oferta']->grupo_produto == 'acessorios' || 
        if(!empty($data['oferta']->grupo_produto) && $data['oferta']->grupo_vinho != 'vinhos' && ($data['oferta']->grupo_produto == 'vestuario')):
            $view_oferta = 'oferta-'.$data['oferta']->grupo_produto;
        elseif($data['oferta'] && $data['oferta']->tipo == 'CF'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-confraria-colecao' : 'oferta-confraria');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'PR'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-premium-colecao' : 'oferta-premium');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'R'):
            $view_oferta = 'oferta-relampago-colecao';
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'CR'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-cru-classe-colecao' : 'oferta-cru-classe');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'BF'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-black-friday-colecao' : 'oferta-black-friday');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'OU'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-outlet-colecao' : 'oferta-outlet');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && count($data['oferta']->produtos) > 1):
            $view_oferta = 'oferta-colecao';
        elseif($data['oferta'] && $data['oferta']->tipo == 'CS'):
            $view_oferta = 'oferta-casada';
        else:
            $view_oferta = 'oferta-do-dia';
        endif;

        //$data['titulo_pagina'] = $canal ? $canal->nome : $data['oferta']->titulo;
        //$data['subtitulo_pagina'] = $canal ? $canal->subtitulo : $data['oferta']->sub_titulo;
        if($data['oferta']->tipo == 'D' && date('Y-m-d') == $data['oferta']->data){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Do dia';
        }elseif($data['oferta']->tipo == 'CS' && date('Y-m-d') == $data['oferta']->data){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Casada';
        }elseif($data['oferta']->tipo == 'CF'){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Confraria';
        }elseif($data['oferta']->tipo == 'S'){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Da Semana';
        }elseif($data['oferta']->tipo == 'E'){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Exclusiva';
        }elseif($data['oferta']->tipo == 'M'){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Mercado';
        }elseif($canal && $view_oferta == 'oferta-colecao'){
            $data['titulo_pagina'] = $canal ? $canal->nome . ' ' . $canal->subtitulo : '';
            $data['subtitulo_pagina'] = '';
        }else{
            $data['titulo_pagina'] = $canal ? $canal->nome : '';
            $data['subtitulo_pagina'] = $canal ? $canal->subtitulo : '';
        }

        $data['data_oferta_semana'] = GeralService::dataOfertaSemana();

        $data['data_oferta_confraria'] = GeralService::dataOfertaConfraria();

        $data['data_fim_oferta_confraria'] = GeralService::retornaData(date('m'), date('Y'));

        $data['data_fim_oferta'] = date('Y-m-d', strtotime("+7 days",strtotime($data['oferta']->data)));
        
        $data['canal'] = $canal;

        $data['ofertasRelacionadas'] = GeralService::buscarOfertasRelacionadas([
            'limit'         => 4,
            'oferta_semana' => false,
            'random'        => false
        ]);

        $data['canaisLiberados'] = BasicInfo::first()->value('liberar_canais');

        $data['date_limite_exclusiva'] = date('Y-m-d', strtotime("-5 day"));
        $data['clienteLogado']         = GeralService::buscarClienteLogado();
        $data['dadosAdega']            = GeralService::buscarFreteAdegaAberta();
        $data['oferta_semana']         = GeralService::buscarOfertaDaSemana();
        
        if($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'R'){
            $data['ofertaRelampago'] = GeralService::buscarOfertaCanalRelampago();
        }

        if($data['oferta']->tipo == 'CF'){
            $data['html_ficha_tecnica'] = view('confraria._ficha-tecnica', $data)->render();
        }

        $dataOfertaKit = GeralService::retornaData(date('m'), date('Y'));
        $oferta_kit_confraria = GeralService::buscarOfertaConfraria($dataOfertaKit);

        $data['kit_confraria'] = false;
        if(isset($oferta_kit_confraria)){
            if($oferta_kit_confraria->id == $data['oferta']->id){
                $data['kit_confraria'] = true;
            }
        }

        return view("site/{$view_oferta}", $data);

    }

    public function kitConfraria(Request $request)
    {
        $tempo_reserva = OfertaReserva::dataAtual();

        $data = array();
        $data = $request->input();

        $data['data_oferta_confraria'] = GeralService::retornaData(date('m'), date('Y'));
        $data['oferta_confraria']      = GeralService::buscarOfertaConfraria($data['data_oferta_confraria']);

        if(!$data['oferta_confraria']){
            return redirect('/');
        }

        $data['oferta'] = Oferta::select(
            'oferta.*',
            DB::raw("(SELECT 1 FROM oferta_reserva WHERE oferta.id = oferta_reserva.oferta_id AND oferta_reserva.data_expiracao >= '{$tempo_reserva}' LIMIT 1) AS 'oferta_reserva'"),
            DB::raw("(SELECT tipo.grupo FROM oferta_has_produto ohp, produto p, tipo_de_produto tipo WHERE ohp.id_oferta = oferta.id AND p.id = ohp.id_produto AND tipo.id = p.id_tipo_produto ORDER BY ohp.ordem ASC, ohp.id ASC LIMIT 1) AS 'grupo_produto'"),
            DB::raw("(SELECT tipo.grupo FROM oferta_has_produto ohp, produto p, tipo_de_produto tipo WHERE ohp.id_oferta = oferta.id AND p.id = ohp.id_produto AND tipo.id = p.id_tipo_produto AND tipo.grupo = 'vinhos' LIMIT 1) AS 'grupo_vinho'")
        )->where('id', $data['oferta_confraria']->id)
        ->first();

        if(!$data['oferta']){
            return redirect('/');
        }

        if(count($data['oferta']->produtos) > 0){
            foreach ($data['oferta']->produtos as $key => $produto) {
                $data['oferta']->produtos[$key]->listaImagens = $produto->produto->getListaImagens();
            }
        }
        //Ajuste Data Canal
        $canal = Canal::join('canal_has_oferta', 'canal.id', '=', 'canal_has_oferta.id_canal')->where('canal_has_oferta.id_oferta', $data['oferta']->id)->orderBy('canal.data_inicio', 'DESC')->first();
        GeralService::checkoutTracking('oferta', ['id_tipo' => $data['oferta']->id]);

        //Disponibilidad Produto
        $disponibilidade = 0;
        $variacoes       = [];
        if($data['oferta'] && $data['oferta']->produtos){
            $disponibilidade = !empty($data['oferta']->produtos[0]->produto->disponibilidade) ? $data['oferta']->produtos[0]->produto->disponibilidade : 0;
            $variacoes       = isset($data['oferta']->produtos[0]->produto->tipo->variacoes) ? GeralService::buscarVariacoesProduto($data['oferta']->produtos[0]->produto) : [];
        }
        $data['disponibilidade'] = $disponibilidade;
        $data['variacoes']       = $variacoes;
        $data['ofertasCart']     = CartService::buscarOfertasCart();

        //$data['oferta']->grupo_produto == 'acessorios' || 
        if(!empty($data['oferta']->grupo_produto) && $data['oferta']->grupo_vinho != 'vinhos' && ($data['oferta']->grupo_produto == 'vestuario')):
            $view_oferta = 'oferta-'.$data['oferta']->grupo_produto;
        elseif($data['oferta'] && $data['oferta']->tipo == 'CF'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-confraria-colecao' : 'oferta-confraria');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'PR'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-premium-colecao' : 'oferta-premium');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'R'):
            $view_oferta = 'oferta-relampago-colecao';
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'CR'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-cru-classe-colecao' : 'oferta-cru-classe');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'BF'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-black-friday-colecao' : 'oferta-black-friday');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'OU'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-outlet-colecao' : 'oferta-outlet');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && count($data['oferta']->produtos) > 1):
            $view_oferta = 'oferta-colecao';
        elseif($data['oferta'] && $data['oferta']->tipo == 'CS'):
            $view_oferta = 'oferta-casada';
        else:
            $view_oferta = 'oferta-do-dia';
        endif;

        //$data['titulo_pagina'] = $canal ? $canal->nome : $data['oferta']->titulo;
        //$data['subtitulo_pagina'] = $canal ? $canal->subtitulo : $data['oferta']->sub_titulo;
        if($data['oferta']->tipo == 'D' && date('Y-m-d') == $data['oferta']->data){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Do dia';
        }elseif($data['oferta']->tipo == 'CS' && date('Y-m-d') == $data['oferta']->data){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Casada';
        }elseif($data['oferta']->tipo == 'CF'){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Confraria';
        }elseif($data['oferta']->tipo == 'S'){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Da Semana';
        }elseif($data['oferta']->tipo == 'E'){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Exclusiva';
        }elseif($data['oferta']->tipo == 'M'){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Mercado';
        }elseif($canal && $view_oferta == 'oferta-colecao'){
            $data['titulo_pagina'] = $canal ? $canal->nome . ' ' . $canal->subtitulo : '';
            $data['subtitulo_pagina'] = '';
        }else{
            $data['titulo_pagina'] = $canal ? $canal->nome : '';
            $data['subtitulo_pagina'] = $canal ? $canal->subtitulo : '';
        }

        $data['data_oferta_semana'] = GeralService::dataOfertaSemana();

        $data['data_oferta_confraria'] = GeralService::dataOfertaConfraria();

        $data['data_fim_oferta_confraria'] = GeralService::retornaData(date('m'), date('Y'));

        $data['data_fim_oferta'] = date('Y-m-d', strtotime("+7 days",strtotime($data['oferta']->data)));
        
        $data['canal'] = $canal;

        $data['ofertasRelacionadas'] = GeralService::buscarOfertasRelacionadas([
            'limit'         => 4,
            'oferta_semana' => false,
            'random'        => false
        ]);

        $data['canaisLiberados'] = BasicInfo::first()->value('liberar_canais');

        $data['date_limite_exclusiva'] = date('Y-m-d', strtotime("-5 day"));
        $data['clienteLogado']         = GeralService::buscarClienteLogado();
        $data['dadosAdega']            = GeralService::buscarFreteAdegaAberta();
        $data['oferta_semana']         = GeralService::buscarOfertaDaSemana();
        
        if($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'R'){
            $data['ofertaRelampago'] = GeralService::buscarOfertaCanalRelampago();
        }

        if($data['oferta']->tipo == 'CF'){
            $data['html_ficha_tecnica'] = view('confraria._ficha-tecnica', $data)->render();
        }

        $dataOfertaKit = GeralService::retornaData(date('m'), date('Y'));
        $oferta_kit_confraria = GeralService::buscarOfertaConfraria($dataOfertaKit);

        $data['kit_confraria'] = false;
        if(isset($oferta_kit_confraria)){
            if($oferta_kit_confraria->id == $data['oferta']->id){
                $data['kit_confraria'] = true;
            }
        }

        return view("site/{$view_oferta}", $data);

    }

    public function ofertaConfrariaColecao($slug, Request $request)
    {
        $tempo_reserva = OfertaReserva::dataAtual();

        $data = array();
        $data = $request->input();

        $dataOferta = explode("-", $slug);
        $mesesAno   = GeralService::mesesAno();
        $mesSlug    = strtolower($dataOferta[0]);
        $mes        = 0;
        foreach ($mesesAno as $key => $mesExtenso) {
            $mesExtenso = strtolower($mesExtenso);
            if($mesSlug == $mesExtenso){
                $mes = $key;
                break;
            }
        }

        $mes = str_pad($mes, 2, "0", STR_PAD_LEFT);

        $data_fim_oferta          = $dataOferta[1] . "-" . $mes . "-01";
        $data['oferta_confraria'] = GeralService::buscarOfertaConfraria($data_fim_oferta);

        if(!$data['oferta_confraria']){
            return redirect('/');
        }

        $data['oferta'] = Oferta::select(
            'oferta.*',
            DB::raw("(SELECT 1 FROM oferta_reserva WHERE oferta.id = oferta_reserva.oferta_id AND oferta_reserva.data_expiracao >= '{$tempo_reserva}' LIMIT 1) AS 'oferta_reserva'"),
            DB::raw("(SELECT tipo.grupo FROM oferta_has_produto ohp, produto p, tipo_de_produto tipo WHERE ohp.id_oferta = oferta.id AND p.id = ohp.id_produto AND tipo.id = p.id_tipo_produto ORDER BY ohp.ordem ASC, ohp.id ASC LIMIT 1) AS 'grupo_produto'"),
            DB::raw("(SELECT tipo.grupo FROM oferta_has_produto ohp, produto p, tipo_de_produto tipo WHERE ohp.id_oferta = oferta.id AND p.id = ohp.id_produto AND tipo.id = p.id_tipo_produto AND tipo.grupo = 'vinhos' LIMIT 1) AS 'grupo_vinho'")
        )->where('id', $data['oferta_confraria']->id)
        ->first();

        if(!$data['oferta']){
            return redirect('/');
        }

        if(count($data['oferta']->produtos) > 0){
            foreach ($data['oferta']->produtos as $key => $produto) {
                $data['oferta']->produtos[$key]->listaImagens = $produto->produto->getListaImagens();
            }
        }
        //Ajuste Data Canal
        $canal = Canal::join('canal_has_oferta', 'canal.id', '=', 'canal_has_oferta.id_canal')->where('canal_has_oferta.id_oferta', $data['oferta']->id)->orderBy('canal.data_inicio', 'DESC')->first();
        GeralService::checkoutTracking('oferta', ['id_tipo' => $data['oferta']->id]);

        //Disponibilidad Produto
        $disponibilidade = 0;
        $variacoes       = [];
        if($data['oferta'] && $data['oferta']->produtos){
            $disponibilidade = !empty($data['oferta']->produtos[0]->produto->disponibilidade) ? $data['oferta']->produtos[0]->produto->disponibilidade : 0;
            $variacoes       = isset($data['oferta']->produtos[0]->produto->tipo->variacoes) ? GeralService::buscarVariacoesProduto($data['oferta']->produtos[0]->produto) : [];
        }
        $data['disponibilidade'] = $disponibilidade;
        $data['variacoes']       = $variacoes;
        $data['ofertasCart']     = CartService::buscarOfertasCart();

        //$data['oferta']->grupo_produto == 'acessorios' || 
        if(!empty($data['oferta']->grupo_produto) && $data['oferta']->grupo_vinho != 'vinhos' && ($data['oferta']->grupo_produto == 'vestuario')):
            $view_oferta = 'oferta-'.$data['oferta']->grupo_produto;
        elseif($data['oferta'] && $data['oferta']->tipo == 'CF'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-confraria-colecao' : 'oferta-confraria');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'PR'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-premium-colecao' : 'oferta-premium');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'R'):
            $view_oferta = 'oferta-relampago-colecao';
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'CR'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-cru-classe-colecao' : 'oferta-cru-classe');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'BF'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-black-friday-colecao' : 'oferta-black-friday');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'OU'):
            $view_oferta = (count($data['oferta']->produtos) > 1 ? 'oferta-outlet-colecao' : 'oferta-outlet');
        elseif($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && count($data['oferta']->produtos) > 1):
            $view_oferta = 'oferta-colecao';
        elseif($data['oferta'] && $data['oferta']->tipo == 'CS'):
            $view_oferta = 'oferta-casada';
        else:
            $view_oferta = 'oferta-do-dia';
        endif;

        //$data['titulo_pagina'] = $canal ? $canal->nome : $data['oferta']->titulo;
        //$data['subtitulo_pagina'] = $canal ? $canal->subtitulo : $data['oferta']->sub_titulo;
        if($data['oferta']->tipo == 'D' && date('Y-m-d') == $data['oferta']->data){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Do dia';
        }elseif($data['oferta']->tipo == 'CS' && date('Y-m-d') == $data['oferta']->data){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Casada';
        }elseif($data['oferta']->tipo == 'CF'){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Confraria';
        }elseif($data['oferta']->tipo == 'S'){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Da Semana';
        }elseif($data['oferta']->tipo == 'E'){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Exclusiva';
        }elseif($data['oferta']->tipo == 'M'){
            $data['titulo_pagina'] = 'Oferta';
            $data['subtitulo_pagina'] = 'Mercado';
        }elseif($canal && $view_oferta == 'oferta-colecao'){
            $data['titulo_pagina'] = $canal ? $canal->nome . ' ' . $canal->subtitulo : '';
            $data['subtitulo_pagina'] = '';
        }else{
            $data['titulo_pagina'] = $canal ? $canal->nome : '';
            $data['subtitulo_pagina'] = $canal ? $canal->subtitulo : '';
        }

        $data['data_oferta_semana'] = GeralService::dataOfertaSemana();

        $data['data_oferta_confraria'] = GeralService::dataOfertaConfraria();

        $data['data_fim_oferta_confraria'] = GeralService::retornaData(date('m'), date('Y'));

        $data['data_fim_oferta'] = date('Y-m-d', strtotime("+7 days",strtotime($data['oferta']->data)));
        
        $data['canal'] = $canal;

        $data['ofertasRelacionadas'] = GeralService::buscarOfertasRelacionadas([
            'limit'         => 4,
            'oferta_semana' => false,
            'random'        => false
        ]);

        $data['canaisLiberados'] = BasicInfo::first()->value('liberar_canais');

        $data['date_limite_exclusiva'] = date('Y-m-d', strtotime("-5 day"));
        $data['clienteLogado']         = GeralService::buscarClienteLogado();
        $data['dadosAdega']            = GeralService::buscarFreteAdegaAberta();
        $data['oferta_semana']         = GeralService::buscarOfertaDaSemana();
        
        if($data['oferta'] && isset($data['oferta']->canalHasOferta->canal) && $data['oferta']->canalHasOferta->canal->tipo == 'R'){
            $data['ofertaRelampago'] = GeralService::buscarOfertaCanalRelampago();
        }

        if($data['oferta']->tipo == 'CF'){
            $data['html_ficha_tecnica'] = view('confraria._ficha-tecnica', $data)->render();
        }

        $dataOfertaKit = GeralService::retornaData(date('m'), date('Y'));
        $oferta_kit_confraria = GeralService::buscarOfertaConfraria($dataOfertaKit);

        $data['kit_confraria'] = false;
        if(isset($oferta_kit_confraria)){
            if($oferta_kit_confraria->id == $data['oferta']->id){
                $data['kit_confraria'] = true;
            }
        }

        return view("site/{$view_oferta}", $data);

    }

    public function detalheModal($slug, Request $request){

        $tempo_reserva = OfertaReserva::dataAtual();

        $data = [];
        $data = $request->input();

        $data['oferta'] = Oferta::select(
            'oferta.*',
            DB::raw("(SELECT 1 FROM oferta_reserva WHERE oferta.id = oferta_reserva.oferta_id AND oferta_reserva.data_expiracao >= '{$tempo_reserva}' LIMIT 1) AS 'oferta_reserva'"),
            DB::raw("(SELECT tipo.grupo FROM oferta_has_produto ohp, produto p, tipo_de_produto tipo WHERE ohp.id_oferta = oferta.id AND p.id = ohp.id_produto AND tipo.id = p.id_tipo_produto ORDER BY ohp.ordem ASC, ohp.id ASC LIMIT 1) AS 'grupo_produto'"),
            DB::raw("(SELECT tipo.grupo FROM oferta_has_produto ohp, produto p, tipo_de_produto tipo WHERE ohp.id_oferta = oferta.id AND p.id = ohp.id_produto AND tipo.id = p.id_tipo_produto AND tipo.grupo = 'vinhos' LIMIT 1) AS 'grupo_vinho'")
        )->where('slug',$slug)
        ->first();

        if(!$data['oferta']){
            return response()->json(['success' => false]);
        }

        if(count($data['oferta']->produtos) > 0){
            foreach ($data['oferta']->produtos as $key => $produto) {
                $data['oferta']->produtos[$key]->listaImagens = $produto->produto->getListaImagens();
            }
        }

        GeralService::checkoutTracking('oferta', ['id_tipo' => $data['oferta']->id]);

        //Disponibilidad Produto
        $disponibilidade = 0;
        $variacoes       = [];
        if($data['oferta'] && $data['oferta']->produtos){
            $disponibilidade = !empty($data['oferta']->produtos[0]->produto->disponibilidade) ? $data['oferta']->produtos[0]->produto->disponibilidade : 0;
            $variacoes       = isset($data['oferta']->produtos[0]->produto->tipo->variacoes) ? GeralService::buscarVariacoesProduto($data['oferta']->produtos[0]->produto) : [];
        }
        $data['disponibilidade'] = $disponibilidade;
        $data['variacoes']       = $variacoes;

        $html = view("site/_oferta-modal-vestuario", $data)->render();

        $json = [
            'success' => true,
            'html'   => $html
        ];

        return response()->json($json);
        
    }

    public function preview($slug, Request $request){

        $data          = array();
        $dataAtual     = date('Y-m-d H:i');
        $clienteLogado = GeralService::buscarClienteLogado();

        $data = $request->input();
        $data['listaCanais'] = GeralService::buscarListaCanais();

        $data['ofertasRelacionadas'] = GeralService::buscarOfertasRelacionadas([
            'limit'         => 4,
            'oferta_semana' => true,
            'random'        => false
        ]);

        $data['listaNoticias'] = Noticia::orderBy('nome')->limit(2)->get();
        $data['bannerFooter']  = BannerFooter::first();
        $data['oferta']        = Oferta::where('slug', $slug)->where('tipo', 'D')->first();
        $data['tema']          = Tema::where('id',$data['oferta']['tema_id'])->first();

        $data['htmlPassouAqui'] = (GeralService::buscarPassouAqui())->getData()->html;

        $data['cadastroSuccess'] = false;

        $data['canaisLiberados'] = BasicInfo::first()->value('liberar_canais');

        $data['htmlMailchimpCadastro'] = ($clienteLogado ? false : GeralService::buscarHtmlMailchimpCadastro());
        $data['clienteLogado']         = $clienteLogado;
        $data['dadosAdega']            = GeralService::buscarFreteAdegaAberta();
        $data['oferta_semana']         = GeralService::buscarOfertaDaSemana();

        return view('site/preview', $data);
    }

    public function changeProdutoCombo(Request $request){
        $post = $request->input();
        $data = [];
        $data['clienteLogado'] = GeralService::buscarClienteLogado();
        $data['id_oferta'] = isset($post['id_oferta']) ? $post['id_oferta'] : null;
        $data['bloquear_master_class'] = true;

        if(isset($data['clienteLogado']) && isset( $post['id_produto'])){
            $check =  PedidoVenda::query()
                ->join('pedido_venda_has_produto', 'pedido_venda_has_produto.id_pedido_venda', 'pedido_venda.id')
                ->where('pedido_venda.id_cliente', $data['clienteLogado']->id)
                ->whereIn('pedido_venda.id_status_pedido_venda', [2, 3, 7])
                ->where('pedido_venda_has_produto.id_produto', $post['id_produto'])
                ->groupBy('pedido_venda.id')
                ->get()
                ->toArray();

            if(isset($check) && count($check) > 0){
                $data['bloquear_master_class'] = false;
            }
        }

        $data['vinho'] = Produto::with('caracteristicas','tipo','paisOrigem','fornecedor')->find($post['id_produto']);
        $html          = "";
        $view_info     = isset($post['premium']) ? 'informacoes-produto-premium' : 'informacoes-produto';
        $html          = view("site/{$view_info}", $data)->render();

        return response()->json([
            'status' => true,
            'message' => 'Informações carregadas com sucesso!',
            'html' => $html
        ]);
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit