| Server IP : 54.94.228.101 / 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 : |
<?php
namespace App\Http\Controllers\Website;
use App\Http\Requests;
use App\Services\OfertaService;
use Illuminate\Http\Request;
use App\Http\Controllers\BaseController;
use App\Modules\Produto\Models\Produto;
use App\Modules\Cadastro\Models\Cadastro;
use App\Modules\ConfrariaConvite\Models\ConfrariaConvite;
use App\Modules\ConfrariaMembro\Models\ConfrariaMembro;
use App\Modules\ConfrariaConfig\Models\ConfrariaConfig;
use App\Modules\PedidoVenda\Models\PedidoVenda;
use App\Modules\ContaCorrente\Models\ContaCorrente;
use App\Modules\Oferta\Models\Oferta;
use App\Modules\CondicaoComercial\Models\CondicaoComercial;
use App\Modules\CadastroCartao\Models\CadastroCartao;
use App\Modules\Pais\Models\Pais;
use App\Modules\CadastroEndereco\Models\CadastroEndereco;
use App\Modules\PedidoEntrega\Models\PedidoEntrega;
use App\Modules\PedidoEntregaHasStatus\Models\PedidoEntregaHasStatus;
use App\Modules\Frete\Models\Frete;
use App\Modules\Cidade\Models\Cidade;
use App\Modules\Estado\Models\Estado;
use App\Modules\ProdutoAvaliacao\Models\ProdutoAvaliacao;
use App\Modules\AdegaViradaParticipanteIndicacao\Models\AdegaViradaParticipanteIndicacao;
use App\Modules\Empresa\Models\Empresa;
use Illuminate\Support\Str;
use App\Modules\Confraria\Services\ConfrariaService;
use App\Services\GeralService;
use App\Services\CepService;
use App\Services\CartService;
use App\Modules\AdegaVirada\Services\AdegaViradaService;
use App\User;
use App\BasicInfo;
use Cart;
use DB;
use Sentinel;
class PerfilController extends BaseController
{
private $apiKey; // 'ak_test_SIQg7rtzZFTpJx0ZqXQhVua1dPA5X8'
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
setlocale(LC_ALL, 'pt_BR', 'pt_BR.utf-8', 'pt_BR.utf-8', 'portuguese');
date_default_timezone_set('America/Sao_Paulo');
$this->apiKey = GeralService::getApiKeyPagarMe();
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$data = array();
$data['cliente'] = GeralService::buscarClienteLogado();
$data['titulo_pagina'] = 'Meus';
$data['subtitulo_pagina'] = 'Dados';
$data['cupomIndicado'] = CartService::buscarCupomIndicado();
$data['configMenuLateral'] = GeralService::configMenuLateral();
return view('perfil/index', $data);
}
public function meusVinhos(){
$data = array();
$adegaAberta = GeralService::buscarAdegaAberta();
$data['meusVinhos'] = GeralService::buscarMeusVinhos(['somar' => true]);
$data['meusVinhosPendentes'] = GeralService::buscarMeusVinhosPendentes();
$data['meusVinhosPreVenda'] = GeralService::buscarMeusVinhosPreVenda();
$totalDesconto = 0;
$totalCashback = 0;
$id_pedido_venda = 0;
foreach ($data['meusVinhosPendentes'] as $produto) {
if($id_pedido_venda != $produto->id_pedido_venda){
$totalDesconto += $produto->total_desconto_pedido;
$id_pedido_venda = $produto->id_pedido_venda;
if($produto->total_desconto_pedido == 0){
$Cashback = ContaCorrente::where('pedido_venda_id', $produto->id_pedido_venda)->where('tipo_movimento', 'E')->first();
if($Cashback){
$totalCashback += $Cashback->valor;
}
}
}
}
$data['total_desconto_pedido'] = $totalDesconto;
$data['total_cashback'] = $totalCashback;
$data['cadastro'] = GeralService::buscarClienteLogado();
if(!$data['cadastro'])
return redirect('/');
$data['tentativasCartao'] = CadastroCartao::where('cadastro_id', $data['cadastro']->id)->where('empresa_id', $data['cadastro']->empresa_id)->whereDate('data_cadastro', date('Y-m-d'))->where('ativo', 0)->count();
if($data['cadastro'] && $adegaAberta){
GeralService::recalcularAdega($data['cadastro']->id, FALSE, $adegaAberta->id, $adegaAberta->confraria_id);
$adegaAberta = GeralService::buscarAdegaAberta();
}
$pagarMe = new \PagarMe\Sdk\PagarMe($this->apiKey);
foreach ($data['cadastro']->cartoes as $key => $cadastroCartao) {
try {
$cadastroCartao->info = $pagarMe->card()->get($cadastroCartao->cartao_id);
} catch (\Exception $e) {
unset($data['cadastro']->cartoes[$key]);
}
}
$data['informacoesBasicasAdega'] = GeralService::buscarInformacoesBasicasAdegaAberta();
$data['listaPaises'] = Pais::orderBy('nome', 'ASC')->get();
$params = [
'id_cliente' => $data['cadastro'] ? $data['cadastro']->id : null,
'adega' => $adegaAberta
];
$data['enderecos'] = GeralService::buscarEnderecosCliente($params);
$data['titulo_pagina'] = 'Adega';
$data['subtitulo_pagina'] = 'Virtual';
$data['configMenuLateral'] = GeralService::configMenuLateral();
$data['horas_retirada'] = ['09:00', '09:30', '10:00', '10:30', '11:00', '11:30', '13:30', '14:00', '14:30', '15:00', '15:30', '16:00', '16:30', '17:00'];
$data['data_retirada'] = GeralService::calculaDataRetirada();
$data['retirada_local'] = CadastroEndereco::select('id')->where('cadastro_id', $data['cadastro']->id)->where('estado_id', 23)->first();
$data['idTipoMasterclass'] = DB::table('tipo_de_produto')
->where('slug', 'masterclass')
->value('id');
return view('perfil/meus-vinhos', $data);
}
public function meusCartoes(){
$data = [];
$cadastro = GeralService::buscarClienteLogado();
$data['cartoes'] = CartService::buscarCartoesCliente();
$data['tentativasCartao'] = CadastroCartao::where('cadastro_id', $cadastro->id)->where('empresa_id', $cadastro->empresa_id)->whereDate('data_cadastro', date('Y-m-d'))->where('ativo', 0)->count();
$data['titulo_pagina'] = 'Meus';
$data['subtitulo_pagina'] = 'Cartões';
$data['configMenuLateral'] = GeralService::configMenuLateral();
return view('perfil/meus-cartoes', $data);
}
public function meusEnderecos(){
$data = array();
$data['cadastro'] = GeralService::buscarClienteLogado();
$data['listaPaises'] = Pais::orderBy('nome', 'ASC')->get();
$data['titulo_pagina'] = 'Meus';
$data['subtitulo_pagina'] = 'Endereços';
$data['configMenuLateral'] = GeralService::configMenuLateral();
return view('perfil/meus-enderecos', $data);
}
public function meuCashback(){
$data = array();
$data['info'] = \App\BasicInfo::find(1);
if($data['info']->validade_cashback <= 0){
return redirect('/');
}
$data['cadastro'] = GeralService::buscarClienteLogado();
$data['titulo_pagina'] = 'Meu';
$data['subtitulo_pagina'] = 'Cashback';
$data['configMenuLateral'] = GeralService::configMenuLateral();
return view('perfil/meu-cashback', $data);
}
public function minhaCarteira(){
$data = array();
$data['info'] = \App\BasicInfo::find(1);
if($data['info']->validade_creditos <= 0){
return redirect('/');
}
$data['cadastro'] = GeralService::buscarClienteLogado();
$data['titulo_pagina'] = 'Minha';
$data['subtitulo_pagina'] = 'Carteira';
$data['configMenuLateral'] = GeralService::configMenuLateral();
return view('perfil/minha-carteira', $data);
}
public function minhaConfraria(){
$data = array();
$data['cadastro'] = GeralService::buscarClienteLogado();
$data['confraria'] = $data['cadastro']->confraria;
$data['membro'] = $data['cadastro']->confrariaMembro;
$data['convites'] = $data['cadastro']->confrariaConvites;
$data['titulo_pagina'] = 'Confraria';
$data['subtitulo_pagina'] = '';
$data['configMenuLateral'] = GeralService::configMenuLateral();
$data['link'] = '';
if($data['confraria']){
$data['link'] = ConfrariaService::gerarUrlConvite($data['confraria']->codigo);
}
return view('perfil/minha-confraria', $data);
}
public function salvarConviteConfraria(Request $request){
$clienteLogado = GeralService::buscarClienteLogado();
if($clienteLogado->confrariaMembro){
return response()->json(array(
'status' => false,
'message' => "Você já faz parte de uma Confraria: {$clienteLogado->confrariaMembro->confraria->nome}!"
));
}
$ConfrariaConvite = ConfrariaConvite::where('id', $request->input('convite_id'))->first();
$confraria = $ConfrariaConvite->confraria;
$basicInfo = \App\BasicInfo::first();
if(count($confraria->membros) >= $basicInfo->max_membros_confraria){
$ConfrariaConvite->situacao = 'E'; //Erro
$ConfrariaConvite->observacao = 'Confraria Lotada!';
$ConfrariaConvite->save();
return response()->json(array(
'status' => false,
'message' => "Esta confraria já atingiu o máximo de membros!"
));
}
$ConfrariaConvite->situacao = 'A'; //Aceito
$ConfrariaConvite->save();
$ConfrariaMembro = new ConfrariaMembro;
$ConfrariaMembro->confraria_id = $ConfrariaConvite->confraria_id;
$ConfrariaMembro->cadastro_id = $clienteLogado->id;
$ConfrariaMembro->confraria_convite_id = $ConfrariaConvite->id;
$ConfrariaMembro->data_cadastro = date('Y-m-d H:i:s');
$ConfrariaMembro->origem = $ConfrariaConvite->origem;
$ConfrariaMembro->elegivel_kit = $ConfrariaConvite->elegivel_kit;
$ConfrariaMembro->save();
return response()->json(array(
'status' => true,
'message' => 'Convite aceito com sucesso!'
));
}
public function minhasEntregas(){
$data = array();
$data['entregas'] = GeralService::buscarMinhasEntregas();
$data['titulo_pagina'] = 'Minhas';
$data['subtitulo_pagina'] = 'Entregas';
$data['configMenuLateral'] = GeralService::configMenuLateral();
return view('perfil/minhas-entregas', $data);
}
public function meusCupons(){
$usuario = GeralService::buscarClienteLogado();
$data = [];
$data['cupons'] = GeralService::buscarMeusCupons();
$data['titulo_pagina'] = 'Meus';
$data['subtitulo_pagina'] = 'Cupons';
$data['configMenuLateral'] = GeralService::configMenuLateral();
return view('perfil/meus-cupons', $data);
}
public function cuponsAdegaDaVirada(){
$anoEdicao = 2022;
$adegaViradaInfo = AdegaViradaService::buscarAdegaVirada($anoEdicao, TRUE);
if(!$adegaViradaInfo || (($adegaViradaInfo) && (!$adegaViradaInfo->ativo || date('Y-m-d H:i:s') < $adegaViradaInfo->data_ativacao))){
return redirect('/');
}
$usuario = GeralService::buscarClienteLogado();
if(!$usuario)
return redirect('/login?redirect=' . url('/perfil/cupons-adega-da-virada'));
$data = [];
$data['cupons'] = GeralService::buscarMeusCupons();
$anoEdicao = 2022;
$data['participando'] = isset($usuario->adegaViradaParticipante) && $usuario->adegaViradaParticipante->participando ? true : false;
$data['titulo_pagina'] = 'Cupons';
$data['subtitulo_pagina'] = 'Adega da Virada';
$data['adegaVirada'] = $adegaViradaInfo;
$data['adegaViradaParticipante'] = $usuario->adegaViradaParticipante;
$data['ofertaDia'] = GeralService::buscarOfertaDia();
$data['configMenuLateral'] = GeralService::configMenuLateral();
$data['regulamentoStatus'] = AdegaViradaService::regulamentoStatus();
$data['indicacoes'] = AdegaViradaService::buscarIndicacoes();
$data['codigo'] = isset($usuario->adegaViradaParticipante) ? $usuario->adegaViradaParticipante->codigo : '';
// Se o usuário logado foi indicado por um amigo, mostrar o código para ele usar
$data['amigoQueIndicou'] = AdegaViradaParticipanteIndicacao::where('cadastro_id', $usuario->id)
->with('participante.cadastro')
->first();
if(!$data['participando'])
$data['cuponsCliente'] = [];
else
$data['cuponsCliente'] = AdegaViradaService::buscarCuponsCliente(false, $anoEdicao);
return view('perfil/cupons-adega-da-virada', $data);
}
public function meusPagamentos($pedido_id = FALSE){
$data = array();
$data['pedido_id'] = $pedido_id;
$data['pagamentos'] = GeralService::buscarMeusPagamentos();
$empresas = Empresa::all();
$pagarMe = [];
foreach ($empresas as $empresa) {
$apiKey = $empresa->api_key_pagar_me;
$pagarMe[$empresa->id] = new \PagarMe\Sdk\PagarMe($apiKey);
}
foreach ($data['pagamentos'] as $pagamento) {
if($pagamento->transacao_id){
$pagamento->transaction = $pagarMe[$pagamento->empresa_id]->transaction()->get($pagamento->transacao_id);
}
$pagamento->quantidade_produtos = 0;
foreach ($pagamento->produtos as $produto) {
$pagamento->quantidade_produtos += $produto->quantidade;
}
switch ($pagamento->tipo_deposito) {
case 'D': $pagamento->tipo = 'Depósito'; break;
case 'DOC': $pagamento->tipo = 'DOC'; break;
case 'TED': $pagamento->tipo = 'TED'; break;
case 'PIX': $pagamento->tipo = 'PIX'; break;
case 'CASH': $pagamento->tipo = 'CASH'; break;
case 'BRD': $pagamento->tipo = 'BRINDE'; break;
case 'INT': $pagamento->tipo = 'INTERNO'; break;
}
//print_r($pagamento->transaction->getCard());die();
}
$data['titulo_pagina'] = 'Meus';
$data['subtitulo_pagina'] = 'Pagamentos';
$data['configMenuLateral'] = GeralService::configMenuLateral();
return view('perfil/meus-pagamentos', $data);
}
public function meuHistorico(){
$data = array();
$data['titulo_pagina'] = 'Meu';
$data['subtitulo_pagina'] = 'Histórico';
$data['pedidosPaises'] = GeralService::buscarComprasPais();
$data['pedidosTipos'] = GeralService::buscarComprasTipo();
$data['pedidosSafras'] = GeralService::buscarComprasSafra();
$data['totalGarrafas'] = $data['pedidosPaises']['quantidadeTotalPorPais'];
// + $data['pedidosTipos']['quantidadeTotalPorTipo'] + $data['pedidosSafras']['quantidadeTotalPorSafra'];
$data['valorTotal'] = $data['pedidosPaises']['valorTotalPorPais'];
// + $data['pedidosTipos']['valorTotalPorTipo'] + $data['pedidosSafras']['valorTotalPorSafra'];
$data['valorTotalEconomizado'] = $data['pedidosPaises']['valorTotalEconomizadoPorPais'];
// + $data['pedidosTipos']['valorTotalPorTipo'] + $data['pedidosSafras']['valorTotalPorSafra'];
$data['listaProdutosComprados'] = GeralService::buscarMeuHistorico();
$data['configMenuLateral'] = GeralService::configMenuLateral();
return view('perfil/meu-historico', $data);
}
public function buscarHistoricoAvaliacao(Request $request){
$post = $request->input();
$data['listaProdutosComprados'] = GeralService::buscarMeuHistorico($post['query']);
$data['configMenuLateral'] = GeralService::configMenuLateral();
return view('perfil/meu-historico-avaliacao', $data);
}
public function salvarAvaliacao(Request $request){
$post = $request->input();
$user = Sentinel::getUser();
$cadastroId = DB::table('cadastro')
->where('user_id', $user->id)
->value('id');
DB::table('produto_avaliacao')->insert([
'id_cadastro' => $cadastroId,
'id_produto' => $post['id_produto'],
'valor' => $post['valor'],
'experiencia' => $post['experiencia']
]);
return response()->json(array(
'status' => true,
'message' => 'Avaliação salva com sucesso!'
));
}
public function excluirCartao(Request $request){
$post = $request->input();
$cadastro = GeralService::buscarClienteLogado();
$cartao = CadastroCartao::where('cadastro_id', $cadastro->id)->where('id', $post['id'])->where('ativo', 1)->first();
if($cartao){
$cartao->ativo = 0;
$cartao->retorno = 'Excluído';
$cartao->data_exclusao = date('Y-m-d H:i:s');
$cartao->save();
return response()->json(array(
'status' => true,
'message' => 'Cartão removido com sucesso!'
));
}else{
return response()->json(array(
'status' => false,
'message' => 'Cartão inválido'
));
}
}
public function excluirEndereco(Request $request){
$post = $request->input();
$cadastro = GeralService::buscarClienteLogado();
$numeroPde = PedidoEntrega::where('id_cadastro_endereco', $post['id'])->count();
if($numeroPde > 0){
CadastroEndereco::where('id', $post['id'])
->update([
'deletado' => 1,
'deleted_at' => date('Y-m-d H:i:s')
]);
return response()->json(array(
'status' => true,
'message' => 'Endereço removido com sucesso!'
));
}
$endereco = CadastroEndereco::where('cadastro_id', $cadastro->id)->where('id', $post['id'])->first();
if($endereco){
$endereco->delete();
return response()->json(array(
'status' => true,
'message' => 'Endereço removido com sucesso!'
));
}else{
return response()->json(array(
'status' => false,
'message' => 'Endereço inválido'
));
}
}
public function confirmarEntrega(Request $request){
$post = $request->input();
$user = Sentinel::getUser();
$cadastro = Cadastro::where('user_id', $user->id)->first();
if($cadastro->bloqueio_cliente){
return response()->json(array(
'status' => false,
'message' => 'Infelizmente não foi possível concluir a sua solicitação. Em caso de dúvidas favor entrar em contato <a href="'.url('/contato').'" style="color: blue">clicando aqui</a>.'
));
}
if(isset($post['endereco_id']) && $post['endereco_id']){
$endereco = CadastroEndereco::where('cadastro_id', $cadastro->id)->where('id', $post['endereco_id'])->first();
if(!$endereco && $post['endereco_id'] != 0){
return response()->json(array(
'status' => false,
'message' => 'Endereço inválido'
));
}
}elseif(!isset($post['endereco_id'])){
if(!isset($post['nome']) || !$post['nome']){
return response()->json(array(
'status' => false,
'message' => 'Endereço inválido'
));
}
if(!isset($post['cep']) || !$post['cep']){
return response()->json(array(
'status' => false,
'message' => 'CEP inválido'
));
}
if(!isset($post['bairro']) || !$post['bairro']){
return response()->json(array(
'status' => false,
'message' => 'Bairro inválido'
));
}
if(!isset($post['logradouro']) || !$post['logradouro']){
return response()->json(array(
'status' => false,
'message' => 'Logradouro inválido'
));
}
if(!isset($post['estado_id']) || !$post['estado_id']){
return response()->json(array(
'status' => false,
'message' => 'Estado inválido'
));
}
if(!isset($post['cidade_id']) || !$post['cidade_id']){
return response()->json(array(
'status' => false,
'message' => 'Cidade inválida'
));
}
if(!isset($post['numero']) || !$post['numero']){
return response()->json(array(
'status' => false,
'message' => 'Número inválido'
));
}
$endereco = new CadastroEndereco();
$endereco->cadastro_id = $cadastro->id;
$endereco->fill($post);
$endereco->save();
}
$adegaAberta = GeralService::buscarAdegaAberta();
if(!$adegaAberta){
return response()->json(array(
'status' => false,
'message' => 'Sua adega virtual está vazia.'
));
}
//Valida Disponibilidade Produtos x Adega
$meusVinhos = GeralService::buscarMeusVinhos(['somar' => true]);
$data_fechamento = date('Y-m-d', strtotime("-15 days",strtotime(date('Y-m-d'))));
$disponibilidadeEntrega = TRUE;
if(count($meusVinhos['produtos']) > 0){
foreach ($meusVinhos['produtos'] as $oferta):
//Se Data PedidoVenda for > 15 últimos dias segue adiante
if($oferta->data_pedido_venda > $data_fechamento):
continue;
endif;
foreach ($oferta->produtos as $item):
if($item->produto->disponibilidade < 0):
$disponibilidadeEntrega = FALSE;
endif;
endforeach;
endforeach;
}
$pedidoEntrega = new PedidoEntrega();
$pedidoEntrega->unidade_negocio_id = GeralService::checkUnidadeNegocio($pedidoEntrega, 'pedido-entrega', $adegaAberta->id);
$pedidoEntrega->id_adega = $adegaAberta->id;
$pedidoEntrega->data_solicitacao = date('Y-m-d H:i:s');
if(!empty($adegaAberta->cliente->empresa_id)){
$pedidoEntrega->empresa_id = $adegaAberta->cliente->empresa_id;
}
if(isset($endereco) && $endereco){
$pedidoEntrega->id_cadastro_endereco = $endereco->id;
}elseif(!isset($post['data_retirada']) || (isset($post['data_retirada']) && empty($post['data_retirada']))){
return response()->json(array(
'status' => false,
'message' => 'Endereço ou Data de Retirada no Local não informado!'
));
}else{
$data_filtro_retirada = date('Y-m-d', strtotime("+5 days",strtotime(date('Y-m-d'))));
$data_retirada = date("Y-m-d", GeralService::dataToTimestamp($post['data_retirada']));
if($data_retirada < $data_filtro_retirada){
return response()->json(array(
'status' => false,
'message' => 'A Data de Retirada deve ser maior ou igual: ' . date('d/m/Y', strtotime($data_filtro_retirada))
));
}
$checkDiasUteis = GeralService::checkDiasUteis($post['data_retirada']);
if(!$checkDiasUteis){
return response()->json(array(
'status' => false,
'message' => 'A Data de Retirada deve ser um dia útil!'
));
}
if($cadastro->enderecoPrincipal){
$pedidoEntrega->id_cadastro_endereco = $cadastro->enderecoPrincipal->id;
}
$pedidoEntrega->retirada_local = 1;
$pedidoEntrega->data_retirada = date("Y-m-d", GeralService::dataToTimestamp($post['data_retirada'])) . ' ' . $post['hora_retirada'] . ':00';
}
$pedidoEntrega->disponibilidade = ($disponibilidadeEntrega ? 1 : 0);
$pedidoEntrega->observacoes = isset($post['observacoes']) ? $post['observacoes'] : '';
if(isset($post['tipo_deposito']) && $post['tipo_deposito']){
if(!isset($post['nome_depositante']) || !$post['nome_depositante']){
return response()->json(array(
'status' => false,
'message' => 'Você deve preencher o nome do depositante.'
));
}
$pedidoVenda = new PedidoVenda();
$pedidoVenda->unidade_negocio_id = $pedidoEntrega->unidade_negocio_id;
if($request->hasFile('fileUpload')) {
$file = $request->file('fileUpload');
$size = $file->getClientSize();
if($size > 5000000){
return response()->json(array(
'status' => false,
'message' => 'Tamanho excedido. O tamanho máximo do arquivo deve ser de 5 MB.'
));
}
$comprovante = GeralService::uploadFile($file, 'pedido-venda/comprovante');
$pedidoVenda->comprovante = $comprovante->filename;
}
$pedidoVenda->subtotal = $post['valor_frete'];
$pedidoVenda->total = $post['valor_frete'];
$pedidoVenda->data_fechamento = date('Y-m-d H:i:s');
$pedidoVenda->nm_referencia = 'Intenção de pagamento de frete realizada por '.$cadastro->nome.' '.$cadastro->sobrenome;
$pedidoVenda->assunto = 'Pagamento de frete realizado através da plataforma.';
$pedidoVenda->id_condicao_comercial = 1; // 1x
$pedidoVenda->id_cliente = $cadastro->id;
$pedidoVenda->tipo_deposito = $post['tipo_deposito'];
$pedidoVenda->nome_depositante = $post['nome_depositante'];
$pedidoVenda->id_status_pedido_venda = 1; // Pendente
$pedidoVenda->frete = 1; // Pendente
$pedidoVenda->save();
}else{
if($post['valor_frete'] > 0){
if(env('APP_ENV') != 'production'){
return response()->json(array(
'status' => false,
'message' => 'Pagamento Cartão desabilitado para este ambiente! (Homologação)'
));
}
$pagarMe = new \PagarMe\Sdk\PagarMe($this->apiKey);
$customer = null;
if($cadastro->customer_id){
$customer = GeralService::buscarCustomerPagarme($cadastro);
}
if(!$customer){
$cadastroEndereco = CadastroEndereco::where('cadastro_id', $cadastro->id)->where('principal', 1)->first();
if(!$cadastroEndereco){
return response()->json(array(
'status' => false,
'message' => 'Você não possui um endereço principal definido. Defina um na página de seu perfil antes de finalizar a compra.'
));
}
$cidade = Cidade::find($cadastroEndereco->cidade_id);
if(!$cidade){
return response()->json(array(
'status' => false,
'message' => 'Cidade do seu endereço não é válida. Por favor, verifique se se endereço principal está cadastro corretamente.'
));
}
$estado = Estado::find($cadastroEndereco->estado_id);
if(!$estado){
return response()->json(array(
'status' => false,
'message' => 'Estado do seu endereço não é válido. Por favor, verifique se se endereço principal está cadastro corretamente.'
));
}
$pais = Pais::find($cadastroEndereco->pais_id);
if(!$pais){
return response()->json(array(
'status' => false,
'message' => 'País do seu endereço não é válido. Por favor, verifique se se endereço principal está cadastro corretamente.'
));
}
try {
$address = new \PagarMe\Sdk\Customer\Address([
'street' => $cadastroEndereco->logradouro,
'streetNumber' => $cadastroEndereco->numero,
'neighborhood' => $cadastroEndereco->bairro,
'zipcode' => str_replace(['-', '.'],'',$cadastroEndereco->cep),
'complementary' => $cadastroEndereco->complemento,
'city' => $cidade->nome,
'state' => $estado->nome,
'country' => $pais->nome,
]);
} catch (\Exception $e) {
return response()->json(array(
'status' => false,
'message' => 'Não foi possível cadastrar seu endereço na plataforma de pagamento. Por favor, tente novamente mais tarde.'
));
}
try {
$telefone = (int) $res = preg_replace("/[^0-9]/", "", $cadastro->telefone);
$phone = new \PagarMe\Sdk\Customer\Phone(['ddd' => substr($telefone,0,2), 'number' => substr($telefone,2), 'ddi' => '55']);
} catch (\Exception $e) {
return response()->json(array(
'status' => false,
'message' => 'Não foi possível cadastrar seu telefone na plataforma de pagamento. Por favor, verifique se seu perfil está preenchido devidamente.'
));
}
$errors = [
'address[street_number]' => 'Número <strong>inválido</strong>.',
'address[street]' => 'Logradouro <strong>inválido</strong>.',
'address[neighborhood]' => 'Bairro <strong>inválido</strong>.',
'address[zipcode]' => 'CEP <strong>inválido</strong>.',
'phone[number]' => 'Telefone <strong>inválido</strong>. Por favor, ajuste seu cadastro ná pagina de seu perfil.',
'phone[ddd]' => 'O seu DDD é inválido. Por favor verifique se o seu <b>Telefone</b> está preenchido corretamente no seu perfil.',
];
try {
$customer = $pagarMe->customer()->create(
$cadastro->nome,
$user->email,
$cadastro->cpf,
/** @var $address \PagarMe\Sdk\Customer\Address */
$address,
/** @var $phone \PagarMe\Sdk\Customer\Phone */
$phone
);
} catch (\Exception $e) {
$exceptionErrors = json_decode(json_decode($e->getMessage()));
if ($exceptionErrors != null){
$message = (isset($errors[$exceptionErrors->errors[0]->parameter_name])) ? $errors[$exceptionErrors->errors[0]->parameter_name] : $exceptionErrors->errors[0]->message;
} else {
$message = $e->getMessage();
}
return response()->json(array(
'status' => false,
'message' => $message
));
}
$cadastro->customer_id = $customer->getId();
$cadastro->save();
}
if(isset($post['cartao_id']) && $post['cartao_id']){ // Se está usando um cartão já cadastrado
$cartao = CadastroCartao::where('cadastro_id', $cadastro->id)->where('id', $post['cartao_id'])->where('ativo', 1)->first();
if(!$cartao){
return response()->json(array(
'status' => false,
'message' => 'Cartão selecionado é inválido.'
));
}
$card = $pagarMe->card()->get($cartao->cartao_id);
}else{
$tentativasCartao = CadastroCartao::where('cadastro_id', $cadastro->id)->where('empresa_id', $cadastro->empresa_id)->whereDate('data_cadastro', date('Y-m-d'))->where('ativo', 0)->count();
$cartoesCliente = CadastroCartao::where('cadastro_id', $cadastro->id)->where('empresa_id', $cadastro->empresa_id)->where('ativo', 1)->count();
if($tentativasCartao >= 3){
return response()->json(array(
'status' => false,
'message' => 'Tentativas Excedidas. Entre em contato com nossa equipe de suporte.'
));
}elseif($cartoesCliente >= 3){
return response()->json(array(
'status' => false,
'message' => 'Por razões de segurança são permitidos apenas 3 (três) cartões cadastrados.'
));
}elseif($tentativasCartao >= 2 && (!isset($post['g-recaptcha-response']) || (isset($post['g-recaptcha-response']) && empty($post['g-recaptcha-response'])))){
return response()->json(array(
'status' => false,
'message' => 'ReCaptcha inválido'
));
}
$cadastroCartao = new CadastroCartao();
$cadastroCartao->cadastro_id = $cadastro->id;
$cadastroCartao->empresa_id = $cadastro->empresa_id;
$cadastroCartao->data_cadastro = date('Y-m-d H:i:s');
$cadastroCartao->principal = 0;
try {
$card = $pagarMe->card()->create(
$post['number'],
$post['name'],
substr($post['expiry'],0,2).substr($post['expiry'],5,2)
);
if($card->getValid()){
if(isset($post['salvar_cartao']) && $post['salvar_cartao']){
$cadastroCartao->cartao_id = $card->getId();
if(count($cadastro->cartoes) == 0){
$cadastroCartao->principal = 1;
}
$cadastroCartao->save();
}
}else{
$cadastroCartao->retorno = 'Cartão Inválido';
$cadastroCartao->ativo = 0;
$cadastroCartao->save();
return response()->json(array(
'status' => false,
'tentativasCartao' => ($tentativasCartao+1),
'message' => 'Dados do cartão são <strong>inválidos</strong>. Tente novamente.'
));
}
} catch (\Exception $e) {
$errors = json_decode(json_decode($e->getMessage()));
$cadastroCartao->retorno = isset($errors->errors) ? json_encode($errors->errors[0]->message) : 'Erro cartão checkout';
$cadastroCartao->ativo = 0;
$cadastroCartao->save();
return response()->json(array(
'status' => false,
'tentativasCartao' => ($tentativasCartao+1),
'message' => 'Dados do cartão são <strong>inválidos</strong>. Tente novamente.',
));
}
}
$transaction = $pagarMe->transaction()->creditCardTransaction(
$post['valor_frete'] * 100,
$card,
$customer,
1, // parcelas
true // captura
//'http://requestb.in/pkt7pgpk', // postbackURL
//['idProduto' => 13933139] //metadata
);
$pedidoVenda = new PedidoVenda();
$pedidoVenda->unidade_negocio_id = $pedidoEntrega->unidade_negocio_id;
$pedidoVenda->subtotal = $post['valor_frete'];
$pedidoVenda->total = $post['valor_frete'];
$pedidoVenda->data_fechamento = date('Y-m-d H:i:s');
$pedidoVenda->nm_referencia = 'Pagamento de frete realizado por '.$cadastro->nome.' '.$cadastro->sobrenome;
$pedidoVenda->assunto = 'Pagamento de frete realizado através da plataforma.';
$pedidoVenda->transacao_id = $transaction->getId();
$pedidoVenda->id_condicao_comercial = 1;
$pedidoVenda->id_cliente = $cadastro->id;
$pedidoVenda->id_status_pedido_venda = 2; // Aprovado
$pedidoVenda->frete = 1; // Pendente
$pedidoVenda->save();
}
}
/* Atualiza id_pedido_venda_frete do pedido de entrega */
if(isset($pedidoVenda) && isset($pedidoVenda->id)){
$pedidoEntrega->id_pedido_venda_frete = @$pedidoVenda->id;
}
$pedidoEntrega->save();
// envia e-mail
/*if(!$disponibilidadeEntrega):
$envioMensagem = GeralService::enviarMensagem($cadastro, $pedidoEntrega);
endif;*/
return response()->json(array(
'status' => true,
'message' => 'Entrega solicitada com sucesso',
'id' => $pedidoEntrega->id
));
}
public function confirmacaoCompra($id){
$data = [];
$vinhos = GeralService::buscarMeusVinhos();
$clienteLogado = GeralService::buscarClienteLogado();
$data['informacoesBasicasAdega'] = GeralService::buscarInformacoesBasicasAdegaAberta();
$pedidoVenda = PedidoVenda::where('id', $id)->first();
$pedidoVenda->integracao_analytics = 1;
$pedidoVenda->save();
$data['pedidoVenda'] = $pedidoVenda;
$data['clienteLogado'] = $clienteLogado;
$data['valorTotal'] = CartService::calcularValorTotalPedidoVenda($pedidoVenda);
$data['titulo_pagina'] = 'Confirmação';
$data['subtitulo_pagina'] = 'Compra';
$data['cupomIndicacao'] = CartService::buscarCupomIndicacao();
$data['regioes'] = GeralService::buscarFretesPorRegiao();
$fretes = Frete::select('frete.*', DB::raw('(SELECT count(f.id) FROM frete as f WHERE f.regiao_id = frete.regiao_id) as quantidade_fretes '))->orderBy('valor_inicial', 'ASC')->groupBy('frete.regiao_id', 'custo')->get();
$data['max_fretes'] = $fretes->max('quantidade_fretes');
$data['info'] = \App\BasicInfo::find(1);
foreach ($fretes as $frete) {
$data['fretes'][$frete->regiao_id][] = $frete;
}
return view('perfil/confirmacao-compra', $data);
}
public function confirmacaoEntrega($id){
$data = [];
$clienteLogado = GeralService::buscarClienteLogado();
$data['clienteLogado'] = $clienteLogado;
//$vinhos = GeralService::buscarMeusVinhos();
//$data['informacoesBasicasAdega'] = GeralService::buscarInformacoesBasicasAdegaAberta();
$data['pedidoEntrega'] = PedidoEntrega::where('id', $id)->first();
$data['basic'] = BasicInfo::first();
$data['titulo_pagina'] = 'Confirmação';
$data['subtitulo_pagina'] = 'Entrega';
$data['cupomIndicacao'] = CartService::buscarCupomIndicacao();
return view('perfil/confirmacao-entrega', $data);
}
public function confirmacaoEntregaAnalise(Request $request){
$data = [];
$data['titulo_pagina'] = 'Confirmação';
$data['subtitulo_pagina'] = 'Entrega';
return view('perfil/confirmacao-entrega-analise', $data);
}
public function detalhesEntrega(Request $request){
$post = $request->input();
$entrega = PedidoEntrega::find($post['id']);
if($entrega){
$data['listaHistorico'] = PedidoEntregaHasStatus::where('id_pedido_entrega', $entrega->id)->orderBy('data', 'DESC')->with(/*'colaborador',*/ 'status')->get();
$data['vinhosAdega'] = GeralService::buscarVinhosAdega(['id_adega' => $entrega->id_adega]);
$data['vinhosAdega'] = GeralService::buscarProdutosAdega(['id_adega' => $entrega->id_adega]);
$view = view('perfil/detalhes-adega', $data);
return response()->json(array(
'status' => true,
'message' => 'Detalhes da adega buscados com sucesso!',
'html' => $view->render()
));
}else{
return response()->json(array(
'status' => false,
'message' => 'Entrega inválida'
));
}
}
public function detalhesPagamento(Request $request){
$data = $request->input();
$pagamento = PedidoVenda::find($data['id']);
if($pagamento){
$data['vinhos'] = GeralService::buscarOfertasPagamento(['id_pedido_venda' => $pagamento->id]);
$data['pagamento'] = $pagamento;
$view = view('perfil/detalhes-pagamento', $data);
return response()->json(array(
'status' => true,
'message' => 'Detalhes do pagamento buscados com sucesso!',
'html' => $view->render()
));
}else{
return response()->json(array(
'status' => false,
'message' => 'ID do pagamento é inválido.'
));
}
}
public function salvarCartao(Request $request){
$post = $request->input();
$user = Sentinel::getUser();
$cadastro = Cadastro::where('user_id', $user->id)->first();
$tentativasCartao = CadastroCartao::where('cadastro_id', $cadastro->id)->where('empresa_id', $cadastro->empresa_id)->whereDate('data_cadastro', date('Y-m-d'))->where('ativo', 0)->count();
$cartoesCliente = CadastroCartao::where('cadastro_id', $cadastro->id)->where('empresa_id', $cadastro->empresa_id)->where('ativo', 1)->count();
if($tentativasCartao >= 3){
return response()->json(array(
'status' => false,
'message' => 'Tentativas Excedidas. Entre em contato com nossa equipe de suporte.'
));
}elseif($cartoesCliente >= 3){
return response()->json(array(
'status' => false,
'message' => 'Por razões de segurança são permitidos apenas 3 (três) cartões cadastrados.'
));
}elseif($tentativasCartao >= 2 && (!isset($post['g-recaptcha-response']) || (isset($post['g-recaptcha-response']) && empty($post['g-recaptcha-response'])))){
return response()->json(array(
'status' => false,
'message' => 'ReCaptcha inválido'
));
}
$apiKey = $this->apiKey;
$pagarMe = new \PagarMe\Sdk\PagarMe($apiKey);
// $expiryDate = substr($post['expiry'],0,2).substr($post['expiry'],5,2); // Format MMAA
$post['expiry'] = str_replace(" ", "", $post['expiry']);
$expiryDate = substr($post['expiry'],0,2).substr($post['expiry'],3,2); // Format MMAA
$cadastroCartao = new CadastroCartao();
$cadastroCartao->cadastro_id = $cadastro->id;
$cadastroCartao->empresa_id = $cadastro->empresa_id;
$cadastroCartao->data_cadastro = date('Y-m-d H:i:s');
$cadastroCartao->principal = 0;
if(strlen($expiryDate) < 4){
$cadastroCartao->retorno = "Data do Cartão Inválida: (expiryDate: {$expiryDate})";
$cadastroCartao->ativo = 0;
$cadastroCartao->save();
return response()->json(array(
'status' => false,
'message' => "Data do Cartão Inválida"
));
}
try {
$card = $pagarMe->card()->create(
$post['number'],
$post['name'],
$expiryDate,
$post['cvc']
);
if($card->getValid()){
$cadastroCartao->cartao_id = $card->getId();
if(count($cadastro->cartoes) == 0){
$cadastroCartao->principal = 1;
}
$cadastroCartao->save();
}else{
$cadastroCartao->cartao_id = ($card->getId() ? $card->getId() : '');
$cadastroCartao->retorno = "Cartão Inválido: (expiryDate: {$expiryDate})";
$cadastroCartao->ativo = 0;
$cadastroCartao->save();
return response()->json(array(
'status' => false,
'tentativasCartao' => ($tentativasCartao+1),
'message' => 'Dados do cartão são <strong>inválidos</strong>. Tente novamente.'
));
}
} catch (\Exception $e) {
$errors = json_decode(json_decode($e->getMessage()));
$cadastroCartao->retorno = isset($errors->errors) ? json_encode($errors->errors[0]->message) : 'Erro cartão checkout';
$cadastroCartao->ativo = 0;
$cadastroCartao->save();
return response()->json(array(
'status' => false,
'tentativasCartao' => ($tentativasCartao+1),
'message' => 'Dados do cartão são <strong>inválidos</strong>. Tente novamente.'
));
}
$data['cartao'] = $cadastroCartao;
$data['cartao']->info = $pagarMe->card()->get($cadastroCartao->cartao_id);
return response()->json(array(
'status' => true,
'message' => 'Cartão adicionado com sucesso!',
'html' => view('perfil/cartao-item', $data)->render()
));
}
public function salvarEndereco(Request $request){
$post = $request->input();
$cadastro = GeralService::buscarClienteLogado();
$contadorEnderecos = CadastroEndereco::where('cadastro_id', $cadastro->id)->count();
$cadastroEndereco = new CadastroEndereco();
$cadastroEndereco->fill($post);
$cadastroEndereco->cadastro_id = $cadastro->id;
if ($contadorEnderecos == 0) {
$cadastroEndereco->principal = 1;
}
$cadastroEndereco->save();
$data['endereco'] = $cadastroEndereco;
if(isset($post['no_view'])){
return response()->json(array(
'status' => true,
'message' => 'Endereço adicionado com sucesso!'
));
}
return response()->json(array(
'status' => true,
'message' => 'Endereço adicionado com sucesso!',
'html' => view('perfil/endereco-item', $data)->render()
));
}
public function calcularFrete(Request $request){
$post = $request->input();
$data = [];
$cep = $post['cep'];
$resultado = CepService::buscar($cep);
$adega = GeralService::buscarAdegaAberta();
$frete = Frete::join('regiao as r', 'r.id', '=', 'frete.regiao_id')->join('estado as e', 'e.regiao_id', '=', 'r.id')->where('e.sigla', $resultado->uf)->where('valor_final', '>=', $adega->valor_total)->orWhere('valor_final', '=', '0')->where('valor_inicial', '<=', $adega->valor_total)->first();
$freteMaximo = Frete::join('regiao as r', 'r.id', '=', 'frete.regiao_id')->join('estado as e', 'e.regiao_id', '=', 'r.id')->where('e.sigla', $resultado->uf)->where('custo', '=', 0)->first();
if($frete){
$html = 'R$ '.number_format($frete->custo,2,',','.');
$frete_existente = 1;
}else{
$html = 'Não há fretes para esse endereço.';
$frete_existente = 0;
}
$endereco = new \stdClass();
$endereco->cep = $post['cep'];
$endereco->cep_formatado = $post['cep_formatado'];
$endereco->logradouro = $resultado->logradouro;
$endereco->bairro = $resultado->bairro;
$endereco->cidade = Cidade::where('nome', $resultado->cidade)->first();
$endereco->estado = Estado::where('sigla', $resultado->uf)->first();
$endereco->principal = 1;
$endereco->custo_frete = $frete->custo;
$endereco->valor_final_frete = $freteMaximo->valor_inicial;
$endereco->nome = 'Novo endereço';
$data['endereco'] = $endereco;
return response()->json(array(
'status' => true,
'message' => 'Frete calculado com sucesso!',
'html' => view('perfil/calcular-frete', $data)->render(),
'frete_existente' => $frete_existente,
'result' => $resultado
));
}
public function definirCartaoPrincipal(Request $request){
$post = $request->input();
$cadastro = GeralService::buscarClienteLogado();
CadastroCartao::where('cadastro_id', $cadastro->id)->where('empresa_id', $cadastro->empresa_id)->where('principal', 1)->update(['principal' => 0]);
$cartao = CadastroCartao::find($post['id']);
$cartao->principal = 1;
$cartao->save();
return response()->json(array(
'status' => true,
'message' => 'Cartão principal alterado com sucesso!'
));
}
public function definirEnderecoPrincipal(Request $request){
$post = $request->input();
$cadastro = GeralService::buscarClienteLogado();
CadastroEndereco::where('cadastro_id', $cadastro->id)->where('principal', 1)->update(['principal' => 0]);
$endereco = CadastroEndereco::find($post['id']);
$endereco->principal = 1;
$endereco->save();
return response()->json(array(
'status' => true,
'message' => 'Endereço principal alterado com sucesso!'
));
}
public function editarPerfil(Request $request){
$input = $request->input();
$cadastro = GeralService::buscarClienteLogado();
if($cadastro->tipo_pessoa == 'F'){
$validate = $this->validate($request, [
'cpf' => 'required|cpf'
]);
}
if(!isset($input['nome']) || !$input['nome']){
return response()->json(array(
'status' => false,
'message' => 'O nome é obrigatório.'
));
}
if((!isset($input['sobrenome']) || !$input['sobrenome']) && $cadastro->tipo_pessoa == 'F'){
return response()->json(array(
'status' => false,
'message' => 'O sobrenome é obrigatório.'
));
}
if(!isset($input['data_nascimento']) || !$input['data_nascimento']){
return response()->json(array(
'status' => false,
'message' => $cadastro->tipo_pessoa == 'J' ? 'A data de fundação é obrigatória' : 'A data de nascimento é obrigatória.'
));
}
if((!isset($input['cpf']) || !$input['cpf']) && $cadastro->tipo_pessoa == 'F'){
return response()->json(array(
'status' => false,
'message' => 'O cpf é obrigatório.'
));
}
if((!isset($input['cnpj']) || !$input['cnpj']) && $cadastro->tipo_pessoa == 'J'){
return response()->json(array(
'status' => false,
'message' => 'O cpf é obrigatório.'
));
}
if((!isset($input['genero']) || !$input['genero']) && $cadastro->tipo_pessoa == 'F'){
return response()->json(array(
'status' => false,
'message' => 'O campo sexo é obrigatório.'
));
}
if(!isset($input['email']) || !$input['email']){
return response()->json(array(
'status' => false,
'message' => 'O e-mail é obrigatório.'
));
}
if(User::where('email', $input['email'])->where('id', '!=', $this->current_user->id)->count()){
return response()->json(array(
'status' => false,
'message' => 'Já existe um usuário com esse e-mail.'
));
}
if(!isset($input['telefone']) || !$input['telefone']){
return response()->json(array(
'status' => false,
'message' => 'O telefone é obrigatório.'
));
}
if($input['password'] && $input['password'] != $input['confirm_password']){
return response()->json(array(
'status' => false,
'message' => 'A senha e a confirmação de senha devem ser iguais.'
));
}
$cadastro->fill($input);
$cadastro->save();
$this->current_user->email = $input['email'];
if(isset($input['password']) && $input['password']){
$this->current_user->password = bcrypt($input['password']);
}
$this->current_user->save();
return response()->json(array(
'status' => true,
'message' => 'Perfil atualizado com sucesso!'
));
}
public function enviarComprovante(Request $request){
$post = $request->input();
$cadastro = GeralService::buscarClienteLogado();
/*if($cadastro && !$post['confraria']){
$pedidoVenda = PedidoVenda::where('id_cliente', $cadastro->id)->where('id', $post['pagamento'])->first();
}else{*/
$pedidoVenda = PedidoVenda::where('id', $post['pagamento'])->first();
// }
if($pedidoVenda){
if($request->hasFile('fileUpload')) {
$file = $request->file('fileUpload');
$size = $file->getClientSize();
if($size > 5000000){
return response()->json(array(
'status' => false,
'message' => 'Tamanho excedido. O tamanho máximo do arquivo deve ser de 5 MB.'
));
}
$filename = Str::random(14) . '.' . $file->extension();
$comprovante = GeralService::uploadFile($file, 'pedido-venda/comprovante', [], $filename);
$pedidoVenda->comprovante = $comprovante->filename;
$pedidoVenda->save();
}else{
return response()->json(array(
'status' => false,
'message' => 'Arquivo inválido.'
));
}
}else{
return response()->json(array(
'status' => false,
'message' => 'Pedido inválido.'
));
}
return response()->json(array(
'status' => true,
'message' => 'Comprovante enviado com sucesso!',
'url' => GeralService::getFile($pedidoVenda->comprovante, 'pedido-venda/comprovante')
));
}
public function infoPedido($pedido_id, Request $request){
$data = array();
$data['pedido_id'] = $pedido_id;
$data['saldo_expirado'] = ($request->input('saldo_expirado') ? $request->input('saldo_expirado') : 0);
$data['pagamentos'] = GeralService::buscarMeusPagamentos($pedido_id);
$empresas = Empresa::all();
$pagarMe = [];
foreach ($empresas as $empresa) {
$apiKey = $empresa->api_key_pagar_me;
$pagarMe[$empresa->id] = new \PagarMe\Sdk\PagarMe($apiKey);
}
foreach ($data['pagamentos'] as $pagamento) {
if($pagamento->transacao_id){
$pagamento->transaction = $pagarMe[$pagamento->empresa_id]->transaction()->get($pagamento->transacao_id);
}
$pagamento->quantidade_produtos = 0;
foreach ($pagamento->produtos as $produto) {
$pagamento->quantidade_produtos += $produto->quantidade;
}
switch ($pagamento->tipo_deposito) {
case 'D': $pagamento->tipo = 'Depósito'; break;
case 'DOC': $pagamento->tipo = 'DOC'; break;
case 'TED': $pagamento->tipo = 'TED'; break;
case 'PIX': $pagamento->tipo = 'PIX'; break;
case 'CASH': $pagamento->tipo = 'CASH'; break;
case 'BRD': $pagamento->tipo = 'BRINDE'; break;
case 'INT': $pagamento->tipo = 'INTERNO'; break;
}
}
return response()->json(array(
'status' => true,
'html' => view('perfil/lista-meus-pagamentos', $data)->render(),
));
}
public function uploadImagem(Request $request){
if(!$request->hasFile('arquivo')){
return response()->json(array(
'status' => false,
'mensagem' => 'Nenhum arquivo encontrado!',
));
}
$cadastro = GeralService::buscarClienteLogado();
$arquivo = $request->file('arquivo');
$upload = GeralService::uploadFile($arquivo, 'cadastro/' . $cadastro->id);
$cadastro->thumbnail_principal = $upload->url;
$cadastro->save();
return response()->json([
'status' => true,
'mensagem' => 'Imagem de perfil alterada com sucesso!',
'url' => $upload->url,
]);
}
public function removerImagem(Request $request){
$cadastro = GeralService::buscarClienteLogado();
$cadastro->thumbnail_principal = NULL;
$cadastro->save();
return response()->json([
'status' => true,
'mensagem' => 'Imagem de perfil removida com sucesso!',
]);
}
public function alterarStatusCashbackMembros(Request $request){
$status = (bool)$request->input('status');
$cadastro = GeralService::buscarClienteLogado();
if(!$cadastro->confraria){
return response()->json([
'status' => false,
'mensagem' => 'Você não pode alterar o status!',
]);
}
$confraria = $cadastro->confraria;
if(!$confraria->config){
DB::table('confraria_config')->insert([
[
'confraria_id' => $confraria->id,
'permitir_cashback_membros' => 0
]
]);
}
ConfrariaConfig::where('confraria_id', $cadastro->confraria->id)
->update([
'permitir_cashback_membros' => $status ? 1 : 0,
]);
return response()->json([
'status' => true,
'mensagem' => 'Status alterado com sucesso!',
]);
}
public function indicar(){
$data['configMenuLateral'] = GeralService::configMenuLateral();
$data['cupomIndicacao'] = CartService::buscarCupomIndicacao();
$data['clienteLogado'] = GeralService::buscarClienteLogado();
return view('perfil/indicar', $data);
}
public function masterclass(){
$data = [];
$data['configMenuLateral'] = GeralService::configMenuLateral();
$data['cupomIndicacao'] = CartService::buscarCupomIndicacao();
$data['clienteLogado'] = GeralService::buscarClienteLogado();
$data['produtos'] = OfertaService::buscarMeusProdutosMasterClass();
return view('perfil/masterclass', $data);
}
public function buscarMeusEnderecosLista(){
$cadastro = GeralService::buscarClienteLogado();
$adegaAberta = GeralService::buscarAdegaAberta();
$params = [
'id_cliente' => $cadastro->id,
'adega' => $adegaAberta
];
$enderecos = GeralService::buscarEnderecosCliente($params);
$view = view('perfil.enderecos-lista', ['enderecos' => $enderecos]);
return response()->json([
'status' => true,
'mensagem' => 'Lista de endereços',
'html' => $view->render()
]);
}
public function seguranca()
{
$data['configMenuLateral'] = GeralService::configMenuLateral();
$data['cupomIndicacao'] = CartService::buscarCupomIndicacao();
$data['clienteLogado'] = GeralService::buscarClienteLogado();
$data['cliente'] = $data['clienteLogado'];
if($data['clienteLogado']->bloqueio_cliente == 0){
return url('/');
}
$data['cadastro_documentos'] = DB::table('cadastro_documentos_validacao')
->where('cadastro_id', $data['clienteLogado']->id)
->get();
$status = 'N';
if($data['cadastro_documentos']->where('status', 'R')->first()){
$status = 'R';
} else if($data['cadastro_documentos']->where('status', 'A')->first()){
$status = 'A';
} else if(count($data['cadastro_documentos']) > 0) {
$status = 'V';
}
$data['status'] = $status;
return view('perfil/seguranca', $data);
}
public function solicitacaoDocumentos(Request $request)
{
$arquivos = $request->file('arquivos_docs');
$clienteLogado = GeralService::buscarClienteLogado();
if(count($arquivos) > 3 || count($arquivos) < 2){
return response()->json([
'status' => false,
'mensagem' => 'Você precisa enviar no mínimo 2 arquivos e no máximo 3!',
]);
}
// Deletar os arquivos enviados antes
DB::table('cadastro_documentos_validacao')
->where('cadastro_id', $clienteLogado->id)
->delete();
foreach($arquivos as $arquivo){
$upload = GeralService::uploadFile($arquivo, 'cadastro_docs/' . $clienteLogado->id);
DB::table('cadastro_documentos_validacao')
->insert([
'cadastro_id' => $clienteLogado->id,
'arquivo' => $upload->url,
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s')
]);
}
return response()->json([
'status' => true,
'mensagem' => 'Solicitação enviada com sucesso!',
]);
}
}