403Webshell
Server IP : 54.233.248.239  /  Your IP : 172.28.1.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/ConfrariaController.php
<?php

namespace App\Http\Controllers\Website;

use App\Http\Requests;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use App\Http\Controllers\BaseController;
use App\Modules\BannerFooter\Models\BannerFooter;
use App\Modules\Cadastro\Models\Cadastro;
use App\Modules\Confraria\Models\Confraria;
use App\Modules\ConfrariaMembro\Models\ConfrariaMembro;
use App\Modules\ConfrariaConvite\Models\ConfrariaConvite;
use App\Modules\ConfrariaPost\Models\ConfrariaPost;
use App\Modules\Produto\Models\Produto;
use App\Modules\ConfrariaProdutoAvaliacao\Models\ConfrariaProdutoAvaliacao;
use App\Modules\ConfrariaPostImagem\Models\ConfrariaPostImagem;
use App\BasicInfo;
use App\Services\GeralService;
use App\Services\CartService;
use App\Modules\Confraria\Services\ConfrariaService;
use App\Modules\Confraria\Services\ConfrariaEntregaService;

use App\Modules\PedidoVenda\Models\PedidoVenda;
use App\User;
use Sentinel;
use DB;
use Illuminate\Support\Str;

use App\Modules\ConfrariaPostComentario\Models\ConfrariaPostComentario;


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

    public function confraria()
    {
        $data = [];

        $data['ofertaAtual'] = GeralService::buscarOfertaConfraria();
        $data['ofertasAnteriores'] = GeralService::buscarOfertasConfrariaAnteriores();

        $data['clienteLogado'] = GeralService::buscarClienteLogado();
        $data['confraria']     = false;
        if($data['clienteLogado']){
            $data['confraria'] = ConfrariaService::buscarConfrariaUsuarioLogado();
        }

        $data['info'] = BasicInfo::find(1);

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

        return view('confraria/landing', $data);
    }

    public function confrariaTermos()
    {
        $data = [];
        return view('confraria/termos-de-uso', $data);
    }

    public function confrariaCadastro(Request $request)
    {
        $data['clienteLogado'] = GeralService::buscarClienteLogado();
        $data['confraria'] = false;
        if($data['clienteLogado']){
            $checkConfraria = ConfrariaService::buscarConfrariaUsuarioLogado();

            if($checkConfraria){
                return redirect('/confraria/home');
            }

            // Pessoa jurídica não pode criar uma confraria
            if($data['clienteLogado']->tipo_pessoa == 'J'){
                return redirect('/');
            }
        }

        $data = [];

        $data['codigo'] = GeralService::gerarCodigoAleatorio();

        $data['link'] = ConfrariaService::gerarUrlConvite($data['codigo']);

        $data['info'] = BasicInfo::find(1);

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

        return view('confraria/confraria-cadastro', $data);
    }

    public function confrariaCadastroBkp(Request $request)
    {
        $data['clienteLogado'] = GeralService::buscarClienteLogado();
        $data['confraria'] = false;
        if($data['clienteLogado']){
            $checkConfraria = ConfrariaService::buscarConfrariaUsuarioLogado();

            if($checkConfraria){
                return redirect('/confraria/home');
            }
        }

        $data = [];

        $data['codigo'] = GeralService::gerarCodigoAleatorio();

        $data['link'] = ConfrariaService::gerarUrlConvite($data['codigo']);

        $data['info'] = BasicInfo::find(1);

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

        return view('confraria/confraria-cadastro-bkp', $data);
    }

    public function confrariaCadastroStep01(Request $request)
    {
        $data = [];
        $data['clienteLogado'] = GeralService::buscarClienteLogado();
        $data['confraria']     = false;
        $url = false;

        if(!$data['clienteLogado']){
            return response()->json([
                'status'   => false,
                'mensagem' => 'Você precisa estar logado para cadastrar uma confraria.'
            ]);
        }

        $data['confraria'] = ConfrariaService::buscarConfrariaUsuarioLogado();

        if($data['confraria'] && $data['confraria']->cadastro_id != $data['clienteLogado']->id){
            $url = url('/confraria/home');
        }

        $html = view('confraria/confraria-cadastro-step-01', $data)->render();

        return response()->json(['status' => true, 'html' => $html, 'url' => $url]);
    }

    public function confrariaCadastroStep02(Request $request)
    {
        $data = [];
        $data['clienteLogado'] = GeralService::buscarClienteLogado();
        $data['confraria']     = false;

        $data['confraria'] = ConfrariaService::buscarConfrariaUsuarioLogado();

        $data['codigo'] = $data['confraria']->codigo;

        $data['link'] = ConfrariaService::gerarUrlConvite($data['codigo']);

        $data['info'] = BasicInfo::find(1);

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

        $html = view('confraria/confraria-cadastro-step-02', $data)->render();

        return response()->json(['status' => true, 'html' => $html]);
    }

    public function deletarConfraria(Request $request)
    {
        if(!$request->input('palavra_chave')){
            return response()->json(['status' => false, 'message' => 'Palavra-Chave não informada!']);
        }

        if($request->input('palavra_chave') != 'EXCLUIR'){
            return response()->json(['status' => false, 'message' => 'Palavra-Chave incorreta!']);
        }

        $data['clienteLogado'] = GeralService::buscarClienteLogado();
        $data['confraria']     = false;
        if(!$data['clienteLogado']){
            return response()->json(['status' => false, 'message' => 'Você precisa estar logado']);
        }

        $confraria = ConfrariaService::buscarConfrariaUsuarioLogado();

        if(!$confraria){
            return response()->json(['status' => false, 'message' => 'Confraria inexistente ou já excluída!']);
        }

        $resultado = ConfrariaService::deletarConfraria($confraria->id, $data['clienteLogado']->id);

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

    public function deletarConfrariaMembro(Request $request)
    {
        if(!$request->input('confraria_membro_id')){
            return response()->json(['status' => false, 'message' => 'Confraria Membro ID não informado!']);
        }

        if(!$request->input('palavra_chave')){
            return response()->json(['status' => false, 'message' => 'Palavra-Chave não informada!']);
        }

        if($request->input('palavra_chave') != 'EXCLUIR'){
            return response()->json(['status' => false, 'message' => 'Palavra-Chave incorreta!']);
        }

        $data['clienteLogado'] = GeralService::buscarClienteLogado();
        $data['confraria']     = false;
        if(!$data['clienteLogado']){
            return response()->json(['status' => false, 'message' => 'Você precisa estar logado']);
        }

        $confraria = ConfrariaService::buscarConfrariaUsuarioLogado();

        if(!$confraria){
            return response()->json(['status' => false, 'message' => 'Confraria inexistente ou já excluída!']);
        }

        $confraria_membro = ConfrariaMembro::where('id', $request->input('confraria_membro_id'))->first();

        if(!$confraria_membro){
            return response()->json(['status' => false, 'message' => 'Membro inexistente ou já excluído!']);
        }

        $resultado = ConfrariaService::deletarConfrariaMembro($confraria->id, $confraria_membro->cadastro_id);

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

    public function salvarConfraria(Request $request){

        if($request->input('nome_conf') == ''){
            return response()->json([
                'status'   => false,
                'mensagem' => 'Por favor informe o nome da confraria.'
            ]);
        }

        $form = $request->input();
        
        $ClienteLogado = GeralService::buscarClienteLogado();

        if(!$ClienteLogado){
            return response()->json([
                'status' => false,
                'mensagem' => 'Você precisa estar logado para cadastrar uma confraria.'  
            ]);
        }

        $confraria = ConfrariaService::buscarConfrariaUsuarioLogado();

        if($confraria && $confraria->cadastro_id != $ClienteLogado->id){
            return response()->json([
                'status'   => false,
                'mensagem' => 'Você já participa de uma confraria.'
            ]);
        }

        if($confraria){
            $Confraria = Confraria::where('id', $confraria->id)->first();
            $Confraria->nome = $form['nome_conf'];
            $Confraria->save();
            $mensagem = "Confraria salva com sucesso!";
        }else{
            $Confraria                = new Confraria();
            $Confraria->cadastro_id   = $ClienteLogado->id;    
            $Confraria->codigo        = GeralService::gerarCodigoAleatorio();
            $Confraria->data_cadastro = date('Y-m-d H:i:s');
            $Confraria->nome = $form['nome_conf'];
            $Confraria->save();

            $mensagem = "Confraria criada com sucesso!";

            $ConfrariaMembro                = new ConfrariaMembro;
            $ConfrariaMembro->confraria_id  = $Confraria->id;
            $ConfrariaMembro->cadastro_id   = $ClienteLogado->id;
            $ConfrariaMembro->data_cadastro = date('Y-m-d H:i:s');
            $ConfrariaMembro->origem        = 'FOUNDER';
            $ConfrariaMembro->save();
        }

        $data = [];

        $data['codigo'] = $Confraria->codigo;

        $data['link'] = ConfrariaService::gerarUrlConvite($Confraria->codigo);

        $data['info'] = BasicInfo::find(1);

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

        $data['confraria'] = $Confraria;

        $html = view('confraria/confraria-cadastro-step-02', $data)->render();

        return response()->json([
            'status'   => true,
            'mensagem' => $mensagem,
            'html'     => $html
        ]);

    }

    public function enviarConvites(Request $request){

        $form             = $request->input();
        $form['convites'] = array_filter($form['convites']);
        
        $ClienteLogado = GeralService::buscarClienteLogado();

        if(!$ClienteLogado){
            return response()->json([
                'status' => false,
                'mensagem' => 'Você precisa estar logado para enviar os convites.'  
            ]);
        }

        $confraria = ConfrariaService::buscarConfrariaUsuarioLogado();

        if(!$confraria){
            return response()->json([
                'status'   => false,
                'mensagem' => 'Você não participa de nenhuma confraria.'
            ]);
        }
        
        /*if(!isset($form['convites']) || (isset($form['convites']) && count($form['convites']) < 3)){
            return response()->json([
                'status'   => false,
                'mensagem' => 'Convide pelo menos 3 amigos!'
            ]);
        }*/
        
        $cadastrosExistentes = Cadastro::selectRaw('cadastro.id cadastro_id, sis_users.email, confraria_membro.id confraria_membro_id')
                                            ->join('sis_users', 'sis_users.id', '=', 'cadastro.user_id')
                                            ->leftJoin('confraria_membro', function($q)
                                            {
                                                $q->on('confraria_membro.cadastro_id', '=', 'cadastro.id')->where('confraria_membro.deleted', 0);
                                            })
                                            ->whereIn('sis_users.email', $form['convites'])
                                            ->get();

        if(count($cadastrosExistentes) > 0){
            foreach($cadastrosExistentes as $cadastroExistente){
                if($cadastroExistente->confraria_membro_id){
                    return response()->json([
                        'status' => false,
                        'mensagem' => 'Já existe um convite para o e-mail '.$cadastroExistente->email.'.'
                    ]);
                }
            }
        }
        
        $Confraria = Confraria::where('id', $confraria->id)->first();
        
        $listaCadastroExistente = [];
        if(count($cadastrosExistentes) > 0){
            foreach ($cadastrosExistentes as $cadastrosExistente) {
                $email = trim($cadastrosExistente->email);
                $listaCadastroExistente[$email] = (object)['cadastro_id' => $cadastrosExistente->cadastro_id, 'confraria_membro_id' => $cadastrosExistente->confraria_membro_id];
            }
        }
        
        if(isset($form['convites']) && count($form['convites']) > 0){

            $convites = $form['convites'];

            foreach ($convites as $conviteEmail) {

                $conviteEmail = trim($conviteEmail);

                $ConfrariaConvite               = new ConfrariaConvite;
                $ConfrariaConvite->confraria_id = $Confraria->id;
                $ConfrariaConvite->email        = $conviteEmail;
                $ConfrariaConvite->data_convite = date('Y-m-d H:i:s');

                if(!isset($listaCadastroExistente[$conviteEmail])){
                    $ConfrariaConvite->situacao = 'P'; //Pendente
                }elseif(isset($listaCadastroExistente[$conviteEmail]) && empty($listaCadastroExistente[$conviteEmail]->confraria_membro_id)){
                    $ConfrariaConvite->situacao    = 'P'; //Pendente
                    $ConfrariaConvite->cadastro_id = $listaCadastroExistente[$conviteEmail]->cadastro_id;
                }else{
                    $ConfrariaConvite->situacao   = 'E'; //Erro
                    $ConfrariaConvite->observacao = 'Este amigo já faz parte de uma Confraria!';
                    $ConfrariaConvite->cadastro_id = $listaCadastroExistente[$conviteEmail]->cadastro_id;
                }

                $ConfrariaConvite->elegivel_kit = (!isset($listaCadastroExistente[$conviteEmail]) ? 1 : 0);
                $ConfrariaConvite->save();
            }

        }

        return response()->json([
            'status'   => true,
            'mensagem' => 'Convites enviados com sucesso!',
            'redirect' => url('/confraria/cadastro/finalizado') . '/' . $Confraria->codigo
        ]);
    }

    public function confrariaCadastroFinalizado($codigo)
    {
        if(!$codigo){
            return redirect('/confraria');
        }

        $clienteLogado = GeralService::buscarClienteLogado();
        $confraria     = ConfrariaService::buscarConfrariaUsuarioLogado();

        if(!$clienteLogado || !$confraria){
            return redirect('/confraria');
        }

        $data = [];
        $data['confraria'] = $confraria;

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

        $data['info'] = BasicInfo::find(1);

        return view('confraria/confraria-cadastro-finalizado', $data);
    }

    public function confrariaConvite($codigo, Request $request)
    {
        if(!$codigo){
            return redirect('/confraria');
        }

        $confraria = Confraria::where('codigo', $codigo)->first();

        if(!$confraria){
            return redirect('/confraria');
        }

        $clienteLogado = GeralService::buscarClienteLogado();
        $cadastro      = FALSE;

        if($clienteLogado){
            $cadastro = $clienteLogado;
        }elseif($request->input('email')){
            $User     = User::where('email', $request->input('email'))->first();
            if($User){
                $cadastro = $User->cliente;
            }
        }

        //se o usuário não tiver logado e não tiver conta na VinumDay /cadastro
        //se o usuário não tiver logado e tiver conta na VinumDay /login
        //se o usuário já tiver logado e não tiver confraria /perfil/confraria
        //se o usuário já tiver logado e já tiver confraria /confraria/home

        if(!$clienteLogado && !$cadastro){
            $url = '/convite-confraria/' . $codigo . '?redirect=' . url("/confraria/convite/$codigo");
            if($request->input('email')){
                $url .= "&email=" . $request->input('email');
            }
            return redirect($url);
        }elseif(!$clienteLogado && $cadastro){
         
            return redirect('/login?redirect=' . url('/perfil/confraria'));
        }elseif($clienteLogado && !$cadastro->confrariaMembro){

            $Convite = ConfrariaConvite::where('confraria_id', $confraria->id)->where('email', $clienteLogado->user->email)->first();

            if(!$Convite){
                DB::table('confraria_convite')->insert([
                    'confraria_id' => $confraria->id,
                    'cadastro_id'  => $clienteLogado->id,
                    'email'        => $clienteLogado->user->email,
                    'origem'       => 'LINK',
                    'data_convite' => date('Y-m-d H:i:s'),
                    'situacao'     => 'P'
                ]);
            }elseif($Convite && empty($Convite->cadastro_id)){
                $Convite->cadastro_id = $clienteLogado->id;
                $Convite->save();
            }

            return redirect('/perfil/confraria');
        }elseif($clienteLogado && $cadastro->confrariaMembro){
 
            return redirect('/confraria/home');
        }else{
 
            return redirect('/confraria');
        }

    }

    public function confrariaHome()
    {
        $data = [];

        $data['cadastro']  = GeralService::buscarClienteLogado();
        $confraria         = ConfrariaService::buscarConfrariaUsuarioLogado();

        if(!$data['cadastro'] || !$confraria){
            return redirect('/confraria');
        }

        $data['confraria'] = Confraria::where('id', $confraria->id)->first(); //@marcoskubas => Devido uso cashback na página

        $data['confrariaPosts'] = ConfrariaPost::where('confraria_post.confraria_id', $data['confraria']->id)
        ->join('confraria_membro', 'confraria_membro.cadastro_id', '=', 'confraria_post.cadastro_id')
        ->with('autor', 'comentarios.respostas', 'comentarios.autor', 'comentarios.respostas.autor', 'imagens')
        ->where('confraria_membro.deleted', 0)
        ->orderBy('data', 'desc')
        ->get()
        ->toArray();

        $data['informacoesBasicasAdega'] = ConfrariaEntregaService::buscarInformacoesBasicasAdegaAberta($data['confraria']->id);

        return view('confraria.confraria-home', $data);
    }

    public function confrariaHomeMais()
    {
        $data = [];

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

        return view('confraria.confraria-home-mais', $data);
    }

    public function confrariaAdega()
    {
        $data = [];
        $data['adega'] = [];

        $clienteLogado = GeralService::buscarClienteLogado();
        $confraria     = ConfrariaService::buscarConfrariaUsuarioLogado();

        if(!$clienteLogado || !$confraria){
            return redirect('/confraria');
        }

        $data['confraria'] = Confraria::where('id', $confraria->id)->first(); //@marcoskubas => Devido uso cashback na página

        $params['status'] = 'A';
        $params['confraria_id'] = $data['confraria']->id;
        $adega = ConfrariaService::buscarAdegasConfraria($params);

        if(count($adega) > 0){
            $data['adega']      = $adega[0];
            $params['id_adega'] = $data['adega']->id;
            $data['pedidos']    = ConfrariaService::buscarPedidosMembrosConfraria($params);

            $data['informacoesBasicasAdega'] = ConfrariaEntregaService::buscarInformacoesBasicasAdegaAberta($data['confraria']->id);
        }

        return view('confraria.confraria-adega', $data);
    }

    public function confrariaHistorico()
    {
        $data = [];

        $clienteLogado = GeralService::buscarClienteLogado();
        $confraria     = ConfrariaService::buscarConfrariaUsuarioLogado();

        if(!$clienteLogado || !$confraria){
            return redirect('/confraria');
        }

        $data['confraria'] = Confraria::where('id', $confraria->id)->first(); //@marcoskubas => Devido uso cashback na página

        $data['produtos'] = ConfrariaService::buscarHistorico($confraria->id);

        $avaliacoes = ConfrariaProdutoAvaliacao::selectRaw('SUM(confraria_produto_avaliacao.avaliacao) AS total_avaliacao, COUNT(confraria_produto_avaliacao.id) AS qtd_avaliacao, confraria_produto_id')
        ->join('confraria_produto', 'confraria_produto.id', 'confraria_produto_avaliacao.confraria_produto_id')
        ->where('confraria_produto.confraria_id', $confraria->id)
        ->groupBy('confraria_produto_id')
        ->get();

        $listaAvaliacoes = [];
        if(count($avaliacoes) > 0){
            foreach ($avaliacoes as $avaliacao) {
                $listaAvaliacoes[$avaliacao->confraria_produto_id] = $avaliacao;
            }
        }
        $data['avaliacoes'] = $listaAvaliacoes;

        $data['totalGarrafas'] = 0;
        $data['valorTotal'] = 0;

        foreach($data['produtos'] as $produto){
            $data['valorTotal'] += $produto->valor_total_pedido;
            $data['totalGarrafas'] ++;
        }

        return view('confraria/confraria-historico', $data);
    }

    public function buscarAvaliacoes(Request $request){

        $confraria_produto_id = $request->input('confraria_produto_id');

        $avaliacoes = ConfrariaProdutoAvaliacao::where('confraria_produto_id', $confraria_produto_id)
        ->with('cadastro')
        ->get();

        $viewAvaliacao = '';
        foreach($avaliacoes as $avaliacao){
            $viewAvaliacao .= view('confraria.comentario-avaliacao-historico', ['avaliacao' => $avaliacao])->render();
        }

        return response()->json([
            'status' => true,
            'mensagem' => '',
            'html' => $viewAvaliacao,
        ]);
    }

    public function novoPost(Request $request){
        $data = $request->all();

        if($data['texto'] == ''){
            return response()->json([
                'status' => false,
                'mensagem' => 'O texto não pode ficar em branco!',
            ]);
        }

        $cadastro = GeralService::buscarClienteLogado();
        
        $post = new ConfrariaPost();
        $post->confraria_id = $data['confraria_id'];
        $post->cadastro_id = $cadastro->id;
        $post->mensagem = $data['texto'];
        $post->data = date('Y-m-d H:i:s');
        $post->save();

        $postCriado = ConfrariaPost::where('id', $post->id)->with('autor')->first();

        if($request->hasFile('file-0')){
            $arquivos = $request->file();

            foreach($arquivos as $arquivo){
                $filename = Str::random(12) . '.' . $arquivo->extension();

                $upload = GeralService::uploadFile($arquivo, 'confraria_post/' . $postCriado->id, ['delete' => true], $filename);

                ConfrariaPostImagem::insert([
                    'confraria_post_id' => $postCriado->id,
                    'imagem' => $upload->url,
                    'data' => date('Y-m-d H:i:s'),
                ]);
            }
        }

        $htmlPost = view('confraria/post', ['post' => $postCriado]);

        return response()->json([
            'status' => true,
            'mensagem' => 'Post criado com sucesso!',
            'html' => $htmlPost->render()
        ]);
    }

    public function novoComentario(Request $request){
        $data = $request->all();

        if($data['texto'] == ''){
            return response()->json([
                'status' => false,
                'mensagem' => 'O comentário não pode ficar em branco!',
            ]);
        }

        $cadastro = GeralService::buscarClienteLogado();
        
        $post = new ConfrariaPostComentario();
        $post->confraria_post_id = $data['confraria_post_id'];
        $post->cadastro_id = $cadastro->id;
        $post->mensagem = $data['texto'];
        $post->parent_id = isset($data['parent']) ? $data['parent'] : null;
        $post->save();

        $comentarioCriado = ConfrariaPostComentario::where('id', $post->id)->first();

        if(isset($data['parent'])){
            $htmlComentario = view('confraria.comentario-resposta', ['comentario' => $comentarioCriado, 'cadastro' => $cadastro]);

            return response()->json([
                'status' => true,
                'mensagem' => 'Comentário enviado com sucesso!',
                'html' => $htmlComentario->render(),
                'tipo' => 'comentario-resposta'
            ]);
        } else {
            $htmlComentario = view('confraria.comentario', ['comentario' => $comentarioCriado, 'cadastro' => $cadastro]);

            return response()->json([
                'status' => true,
                'mensagem' => 'Comentário enviado com sucesso!',
                'html' => $htmlComentario->render(),
                'tipo' => 'comentario'
            ]);
        }
    }

    public function deletarPost(Request $request){
        $postId = $request->input('post');
        $clienteLogado = GeralService::buscarClienteLogado();
        $confrariaMembroLogado = ConfrariaService::buscarConfrariaUsuarioLogado();
        
        $post = ConfrariaPost::where('id', $postId)->first();
        $imagens = ConfrariaPostImagem::where('confraria_post_id', $post->id)->delete();
        $comentarios = ConfrariaPostComentario::where('confraria_post_id', $post->id)->delete();
        $post->delete();

        return response()->json([
            'status' => true,
            'mensagem' => 'Postagem excluída com sucesso',
        ]);

    }

    public function modalPedido(Request $request){
        $pedido_venda_id = $request->input('pedido_id');

        $pedido = PedidoVenda::where('id', $pedido_venda_id)
        ->with('produtos.produto.caracteristicas.produtoRegiao.pais')
        ->first();


        $pedido['valorTotalEconomizado'] = 0;
        foreach($pedido->produtos as $produto){
            $oferta = DB::table('oferta')->where('id', $produto->id_oferta)->first();

            $pedido['valorTotalEconomizado'] += $oferta->preco_mercado - $oferta->preco_oferta;
        }   

        $quantidade_garrafas = 0;
        foreach($pedido['produtos'] as $key => $pedidoItem){
            $quantidade_garrafas += $pedidoItem['quantidade'];
        }

        $pedido['qtd_garrafas'] = $quantidade_garrafas;


        return response()->json([
            'status' => true,
            'mensagem' => '',
            'html' => view('confraria.modal-pedido', ['pedido' => $pedido])->render(),
        ]);

    }

    public function filtrarProdutoHistorico(Request $request){

        $clienteLogado = GeralService::buscarClienteLogado();
        $confraria     = ConfrariaService::buscarConfrariaUsuarioLogado();

        $filtro = [];
        $filtro['nome'] = $request->input('filtro');
        
        if($filtro['nome'] == '' || $filtro['nome'] == ' '){
            $data['produtos'] = ConfrariaService::buscarHistorico($confraria->id);
        } else{
            $data['produtos'] = ConfrariaService::buscarHistorico($confraria->id, $filtro);
        }

        $avaliacoes = ConfrariaProdutoAvaliacao::selectRaw('SUM(confraria_produto_avaliacao.avaliacao) AS total_avaliacao, COUNT(confraria_produto_avaliacao.id) AS qtd_avaliacao, confraria_produto_id')
        ->join('confraria_produto', 'confraria_produto.id', 'confraria_produto_avaliacao.confraria_produto_id')
        ->where('confraria_produto.confraria_id', $confraria->id)
        ->groupBy('confraria_produto_id')
        ->get();

        $listaAvaliacoes = [];
        if(count($avaliacoes) > 0){
            foreach ($avaliacoes as $avaliacao) {
                $listaAvaliacoes[$avaliacao->confraria_produto_id] = $avaliacao;
            }
        }
        $data['avaliacoes'] = $listaAvaliacoes;

        return response()->json([
            'status'   => true,
            'mensagem' => '',
            'html'     => view('confraria.produtos_historico', ['produtos' => $data['produtos'], 'avaliacoes' => $data['avaliacoes']])->render(),
        ]);

    }

    public function adicionarAvaliacao(Request $request){

        $data = $request->all();
        $clienteLogado = GeralService::buscarClienteLogado();

        $checkAvaliacao = ConfrariaProdutoAvaliacao::where('cadastro_id', $clienteLogado->id)->first();

        if($checkAvaliacao){
            return response()->json([
                'status' => false,
                'mensagem' => 'Você já avaliou este produto!',
                'html' => '',
            ]);
        }

        $avaliacao = new ConfrariaProdutoAvaliacao();
        $avaliacao->cadastro_id = $clienteLogado->id;
        $avaliacao->confraria_produto_id = $data['confraria_produto_id'];
        $avaliacao->mensagem = $data['mensagem'];
        $avaliacao->avaliacao = $data['avaliacao'];
        $avaliacao->data = date('Y-m-d H:i:s');
        $avaliacao->save();

        return response()->json([
            'status' => true,
            'mensagem' => 'Avaliação salva com sucesso!',
            'html' => '',
        ]);
    }

    public function uploadImagemConfraria(Request $request){

        $clienteLogado = GeralService::buscarClienteLogado();
        $confraria     = ConfrariaService::buscarConfrariaUsuarioLogado();

        $tipo = $request->input('tipo');

        if(!$request->hasFile('arquivo')){
            return response()->json([
                'status' => false,
                'mensagem' => 'Nenhum arquivo encontrado!',
            ]);
        }

        $arquivo = $request->file('arquivo');
        $confraria_id = $confraria->id; 
        $filename = Str::random(12) . '.' . $arquivo->extension();

        $upload = GeralService::uploadFile($arquivo, 'confraria/' . $confraria_id, ['delete' => true], $filename);

        $update = $tipo == 'imagem' ? ['imagem' => $upload->url] : ['imagem_capa' => $upload->url];

        Confraria::where('id', $confraria->id)
        ->update($update);

        return response()->json([
            'status' => true,
            'mensagem' => 'Imagem alterada com sucesso!',
            'url' => $upload->url,
        ]);
    }

    public function notificarMembros($confrariaId){
        $notificacao = ConfrariaService::notificarMembroConfraria($confrariaId);
        return redirect('/');
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit