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

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/vinumday2_0/app/Console/Commands/AtualizaConsumoCliente.php
<?php

namespace App\Console\Commands;

use Symfony\Component\Console\Output\ConsoleOutput;
use Symfony\Component\Console\Helper\ProgressBar;

use Intervention\Image\Exception\NotReadableException;

use Illuminate\Console\Command;
use App\Modules\Cadastro\Models\Cadastro;
use App\Modules\Produto\Models\Produto;
use App\Modules\Oferta\Models\Oferta;
use App\Modules\PedidoVenda\Models\PedidoVenda;
use App\Modules\CadastroConsumo\Models\CadastroConsumo;
use App\Modules\CadastroConsumoPais\Models\CadastroConsumoPais;
use App\Services\GeralService;
use App\Services\ConsumoService;
use Illuminate\Support\Facades\Log;
use Image;
use DB;

class AtualizaConsumoCliente extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'atualiza_consumo_cliente';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Atualiza Consumo Clientes';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
        $this->output = new ConsoleOutput;
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        $this->info(date('d/m/Y H:i:s') . " - START");

        $clientes        = ConsumoService::buscarConsumoCliente();
        $total           = count($clientes);
        $progressBar     = new ProgressBar($this->output, count($clientes));
        $distanciaPaises = ConsumoService::buscarDistanciasPaises();
        if($total > 0){
            $consumoTipos  = ConsumoService::buscarConsumoTipo(FALSE, $clientes[($total-1)]->id_cliente);
            $consumoPaises = ConsumoService::buscarConsumoPais(FALSE, $clientes[($total-1)]->id_cliente);
        }else{
            $consumoTipos  = ConsumoService::buscarConsumoTipo();
            $consumoPaises = ConsumoService::buscarConsumoPais();
        }

        $imagens_primeiro_vinho = CadastroConsumo::selectRaw("DISTINCT thumbnail_primeiro_vinho 'thumb'")->whereRaw('thumbnail_primeiro_vinho IS NOT NULL')->get();
        $thumbs = [];
        foreach ($imagens_primeiro_vinho as $primeiro_vinho) {
            $thumbs[$primeiro_vinho->thumb] = $primeiro_vinho->thumb;
        }

        foreach ($clientes as $cliente){

            $this->info(date('d/m/Y H:i:s') . " - START CLIENT: {$cliente->id_cliente}");

            //Cadastra o Consumo se não existir
            $created_at = date('Y-m-d H:i:s');

            $qtde_vinhos = !empty($cliente->qtde_vinhos) ? $cliente->qtde_vinhos : 0;

            try {
                
                DB::beginTransaction();

                $sql = "INSERT INTO cadastro_consumo (cadastro_id, data_cadastro, qtde_vinhos, created_at) 
                    SELECT cadastro.id, u.created_at, {$qtde_vinhos}, '{$created_at}' FROM cadastro, sis_users u WHERE cadastro.user_id = u.id AND cadastro.id = {$cliente->id_cliente} AND NOT EXISTS (SELECT 1 FROM cadastro_consumo cs WHERE cs.cadastro_id = cadastro.id);";

                DB::insert($sql);

                $Consumo = CadastroConsumo::where('cadastro_id', $cliente->id_cliente)->first();

                if(empty($Consumo->produto_id_primeiro_vinho)){
                    
                    $thumbnail   = FALSE;
                    $url_produto = trim($cliente->produto->thumbnail_principal);
                    if(empty($url_produto)){
                        $url_produto = trim($cliente->oferta->thumbnail_principal);
                    }

                    if(!empty($url_produto)){

                        $thumbnail = explode("/", $url_produto);
                        $thumbnail = end($thumbnail);
                        $thumbnail = str_replace([" ", "%20"], "_", $thumbnail);
                        $thumbnail = GeralService::cleanString($thumbnail);
                        $url_produto = str_replace(" ", "%20", $url_produto);

                        try {
                            
                            if(!isset($thumb[$thumbnail])){
                                if(!file_exists(public_path("/uploads/produto/birth/{$thumbnail}"))){
                                    $img = Image::make($url_produto)->save("public/uploads/produto/birth/{$thumbnail}");
                                }
                                $thumb[$thumbnail] = $thumbnail;
                            }

                        } catch (NotReadableException $e) {
                            Log::info("NotReadableException Produto {$cliente->id_produto} to: " . $url_produto);
                            $thumbnail = FALSE;
                        }

                        if(!$thumbnail){

                            $url_produto = trim($cliente->oferta->thumbnail_principal);

                            if(!empty($url_produto)){

                                $thumbnail = explode("/", $url_produto);
                                $thumbnail = end($thumbnail);
                                $thumbnail = str_replace([" ", "%20"], "_", $thumbnail);
                                $thumbnail = GeralService::cleanString($thumbnail);
                                $url_produto = str_replace(" ", "%20", $url_produto);

                                try {
                                    
                                    if(!isset($thumb[$thumbnail])){
                                        if(!file_exists(public_path("/uploads/produto/birth/{$thumbnail}"))){
                                            $img = Image::make($url_produto)->save("public/uploads/produto/birth/{$thumbnail}");
                                        }
                                        $thumb[$thumbnail] = $thumbnail;
                                    }

                                } catch (NotReadableException $e) {
                                    Log::info("NotReadableException Oferta {$cliente->id_oferta} to: " . $url_produto);
                                    $thumbnail = FALSE;
                                }
                            }
                        }

                    }

                    $thumbnail = (!$thumbnail ? 'vinho-pause.png' : $thumbnail);

                    $sql = "UPDATE cadastro_consumo SET produto_id_primeiro_vinho = {$cliente->id_produto}, oferta_id_primeiro_vinho = {$cliente->id_oferta}, thumbnail_primeiro_vinho = '{$thumbnail}' WHERE cadastro_id = {$cliente->id_cliente}";
                    DB::update($sql);
                }

                //Atualiza Valor Economizado na compra dos Vinhos
                $sql = "UPDATE cadastro_consumo SET valor_economizado = {$cliente->valor_economizado}, qtde_vinhos = {$qtde_vinhos} WHERE cadastro_id = {$cliente->id_cliente}";
                DB::update($sql);

                //Cadastra/Atualiza Consumo de Vinhos By Tipo
                if(isset($consumoTipos[$cliente->id_cliente])){
                    ConsumoService::calcularConsumoTipo($cliente->id_cliente, $consumoTipos[$cliente->id_cliente]);
                }

                //Cadastra/Atualiza Consumo de Vinhos By País
                if(isset($consumoPaises[$cliente->id_cliente])){
                    ConsumoService::calcularConsumoPais($cliente->id_cliente, $consumoPaises[$cliente->id_cliente]);
                }

                //Calcula Percentual Consumo País
                ConsumoService::calcularPercentualPais($cliente->id_cliente);

                ConsumoService::calcularKmPercorrido($Consumo, $distanciaPaises);

                DB::commit();

            } catch (Exception $e) {
                Log::info('Exception: ' . json_encode($e->getMessage()));
                DB::rollBack();
                dd($cliente);
            }

            $progressBar->advance();

        }

        $progressBar->finish();

        $this->info("\n");

        $this->info(date('d/m/Y H:i:s') . " - START DATA PEDIDOS X CLIENTES IMPORTADOS");

        $pedidos = PedidoVenda::selectRaw('pedido_venda.data_fechamento, pedido_venda.id_cliente')
        ->join('cadastro_consumo', 'cadastro_consumo.cadastro_id', '=', 'pedido_venda.id_cliente')
        ->whereRaw("cadastro_consumo.data_cadastro = '2018-07-08' AND pedido_venda.data_fechamento < '2018-07-08'")
        ->groupBy('pedido_venda.id_cliente')
        ->get();

        $total = count($pedidos);
        
        if($total > 0){
            $progressBar = new ProgressBar($this->output, count($pedidos));
            foreach ($pedidos as $pedido) {
                $data_cadastro = date('Y-m-d', strtotime($pedido->data_fechamento));
                $sql           = "UPDATE cadastro_consumo SET data_cadastro = '{$data_cadastro}' WHERE cadastro_id = {$pedido->id_cliente}";
                DB::update($sql);
                $progressBar->advance();
            }
            $progressBar->finish();
        }

        $this->info("\n");

        $this->info(date('d/m/Y H:i:s') . " - DONE");

    }

}

Youez - 2016 - github.com/yon3zu
LinuXploit