<?php

/**
 * Descricao de ModelsArtigo
 *
 * @copyright (c) year, JLXIT - Editora Ediouro
 */
class ModelsArtigo {

    private $Resultado;
    private $ArtigoId;
    private $Dados;
    private $Msg;
    private $RowCount;
    private $ResultadoPaginacao;
    private $Foto;
   // private $ccc;

    function getResultado() {
        return $this->Resultado;
    }

    function getMsg() {
        return $this->Msg;
    }

    function getRowCount() {
        return $this->RowCount;
    }
    // Chamada de Encalhe 
    public function listar($PageId) {
        $Paginacao = new ModelsPaginacao(URL . 'controle-artigo/index/');
        //$Paginacao->condicao($PageId, 20);
		$Paginacao->condicao($PageId, 500);
        $this->ResultadoPaginacao = $Paginacao->paginacao('artigos');

        $Listar = new ModelsRead();
            
        $ccc=$_SESSION['customercode'];  
        $ce = $_SESSION['ce'];
        $cnpj = $_SESSION['cnpj'];
                        
         $Listar->fullRead("select art.*, cat.nome_cat_artigo categorias_artigos from artigos art 
            INNER JOIN categorias_artigos cat on cat.id = art.categorias_artigo_id  and customercode = " .  $ccc . " and cde_number = " . $ce . " and cnpj = " . $cnpj . " and status = 'A' " . "      
            ORDER BY id ASC LIMIT :limit OFFSET :offset", "limit={$Paginacao->getLimiteResultado()}&offset={$Paginacao->getOffset()}");
         
          $Listar->fullRead("select art.* from artigos art 
            where customercode = " .  $ccc . " and cde_number = " . $ce . " and cnpj = " . $cnpj . " and status = 'A' " . "      
            ORDER BY id ASC LIMIT :limit OFFSET :offset", "limit={$Paginacao->getLimiteResultado()}&offset={$Paginacao->getOffset()}");   
            
         //var_dump($Listar->getResultado());
            
            
            
        if ($Listar->getResultado()):
            $this->Resultado = $Listar->getResultado();
            return array($this->Resultado, $this->ResultadoPaginacao);
        else:
            // $Paginacao->paginaInvalida();
        
            $this->Resultado = $Listar->getResultado();
            return array($this->Resultado, $this->ResultadoPaginacao);
        endif;
    }
    // Chamada de Encalhe Fechada
    public function listar2($PageId) {
        $Paginacao = new ModelsPaginacao(URL . 'controle-artigo/index2/');
        //$Paginacao->condicao($PageId, 20);
		$Paginacao->condicao($PageId, 500);
        $this->ResultadoPaginacao = $Paginacao->paginacao('artigos');

        $Listar = new ModelsRead();
        //$Listar->fullRead("select art.*, cat.nome_cat_artigo categorias_artigos from artigos art 
        //    INNER JOIN categorias_artigos cat on cat.id = art.categorias_artigo_id             
        //    ORDER BY id ASC LIMIT :limit OFFSET :offset", "limit={$Paginacao->getLimiteResultado()}&offset={$Paginacao->getOffset()}");
        // var_dump($Listar->getResultado());
            
        $ccc=$_SESSION['customercode']; 
        $cnpj=$_SESSION['cnpj'];  
       
        //echo $_SESSION['ce']; 
        $ce = $_SESSION['ce'];
        
        
        
         //$Listar->fullRead("select art.*, cat.nome_cat_artigo categorias_artigos from artigos art 
         //   INNER JOIN categorias_artigos cat on cat.id = art.categorias_artigo_id  and customercode = " .  $ccc . " and cde_number = " . $ce .  "      
         //   ORDER BY id ASC LIMIT :limit OFFSET :offset", "limit={$Paginacao->getLimiteResultado()}&offset={$Paginacao->getOffset()}");
         //var_dump($Listar->getResultado());
                
         $Listar->fullRead("select art.*, cat.nome_cat_artigo categorias_artigos from artigos art 
            INNER JOIN categorias_artigos cat on cat.id = art.categorias_artigo_id  and customercode = " .  $ccc . " and cde_number = " . $ce . " and cnpj = " . $cnpj . " and status = 'F' " . "      
            ORDER BY id ASC LIMIT :limit OFFSET :offset", "limit={$Paginacao->getLimiteResultado()}&offset={$Paginacao->getOffset()}");
         //var_dump($Listar->getResultado());
            
         $Listar->fullRead("select art.* from artigos art 
            where customercode = " .  $ccc . " and cde_number = " . $ce . " and cnpj = " . $cnpj . " and status = 'F' " . "      
            ORDER BY id ASC LIMIT :limit OFFSET :offset", "limit={$Paginacao->getLimiteResultado()}&offset={$Paginacao->getOffset()}");
         //var_dump($Listar->getResultado());   
            
            
            
        if ($Listar->getResultado()):
            $this->Resultado = $Listar->getResultado();
            return array($this->Resultado, $this->ResultadoPaginacao);
        else:
            // $Paginacao->paginaInvalida();
        
            $this->Resultado = $Listar->getResultado();
            return array($this->Resultado, $this->ResultadoPaginacao);
        endif;
    }
    // documentos
    public function listar3($PageId) {
        $Paginacao = new ModelsPaginacao(URL . 'controle-artigo/index3/');
        $Paginacao->condicao($PageId, 500);
        $this->ResultadoPaginacao = $Paginacao->paginacao('artigos');
        
        $ccc  = $_SESSION['customercode'];  
        $ce   = $_SESSION['ce'];
        $cnpj = $_SESSION['cnpj']; 
        $tipo = $_SESSION['tipo'];
        
         $this->ResultadoPaginacao = $Paginacao->paginacao("'select art.*, cat.nome_cat_artigo categorias_artigos from doctos art 
            INNER JOIN categorias_artigos cat on cat.id = art.categorias_artigo_id  and customercode = " .  $ccc . " and cnpj = " . $cnpj . " and status = 'A' " . "      
            ORDER BY id ASC LIMIT :limit OFFSET :offset'");
        
        $Listar = new ModelsRead();
                
         $Listar->fullRead("select art.*, cat.nome_cat_artigo categorias_artigos from doctos art 
            INNER JOIN categorias_artigos cat on cat.id = art.categorias_artigo_id  "  . " and cnpj = " . $cnpj . " and tipo = '$tipo' " . " and status = 'A' " . "      
            ORDER BY data desc, foto desc LIMIT :limit OFFSET :offset", "limit={$Paginacao->getLimiteResultado()}&offset={$Paginacao->getOffset()}");
         //var_dump($Listar->getResultado());
        
         $Listar->fullRead("select art.* from doctos art 
            where cnpj = " . $cnpj . " and tipo = '$tipo' " . " and status = 'A' " . "      
            ORDER BY data desc, foto desc LIMIT :limit OFFSET :offset", "limit={$Paginacao->getLimiteResultado()}&offset={$Paginacao->getOffset()}");
         //var_dump($Listar->getResultado());   
            
            
        if ($Listar->getResultado()):
            $this->Resultado = $Listar->getResultado();
            return array($this->Resultado, $this->ResultadoPaginacao);
        else:
            // $Paginacao->paginaInvalida();
        
            $this->Resultado = $Listar->getResultado();
            return array($this->Resultado, $this->ResultadoPaginacao);
        endif;
    }
    
    // RCE POR DISTRIBUIDOR AGRUPADO
    
    public function listar4($PageId) {
        $Paginacao = new ModelsPaginacao(URL . 'controle-artigo/index4/');
        //$Paginacao->condicao($PageId, 20);
		$Paginacao->condicao($PageId, 500);
        $this->ResultadoPaginacao = $Paginacao->paginacao('carousels');
        
        $ccc  = $_SESSION['customercode'];  
        $ce   = $_SESSION['ce'];
        $cnpj = $_SESSION['cnpj']; 
        $tipo = $_SESSION['tipo'];
        $praca = $_SESSION['praca'];
        $praca = trim($praca);
        
        $Listar = new ModelsRead();
                
            
         $Listar->fullRead("select carousels.customercode,contatos.customer_name,carousels.cnpj,carousels.cde_number,sum(carousels.calculated_value) as vlr, sum(discount_calculated_value) as desconto , 
           (select  (sum(carousels.calculated_value) - sum(discount_calculated_value))) as vlrce
           from carousels, contatos
           where   contatos.customercode = carousels.customercode and cde_number = $ce  and customer_name = '$praca' "
                 . "group by carousels.customercode , carousels.cde_number order by carousels.customercode , carousels.cde_number ", "limit={$Paginacao->getLimiteResultado()}&offset={$Paginacao->getOffset()}");
         //var_dump($Listar->getResultado());   
            
            
            
        if ($Listar->getResultado()):
            $this->Resultado = $Listar->getResultado();
            return array($this->Resultado, $this->ResultadoPaginacao);
        else:
            // $Paginacao->paginaInvalida();
        
            $this->Resultado = $Listar->getResultado();
            return array($this->Resultado, $this->ResultadoPaginacao);
        endif;
    }
    
    // RCE POR DISTRIBUIDOR ANALITICO
    
    public function listar5($PageId) {
        $Paginacao = new ModelsPaginacao(URL . 'controle-artigo/index5/');
        $Paginacao->condicao($PageId, 500);
        $this->ResultadoPaginacao = $Paginacao->paginacao('artigos');
        
        $ccc  = $_SESSION['customercode'];  
        $ce   = $_SESSION['ce'];
        $cnpj = $_SESSION['cnpj']; 
        $praca = $_SESSION['praca'];
        $praca = trim($praca);
        
        
        
        $Listar = new ModelsRead();
         
         $Listar->fullRead("select carousels.customercode,contatos.customer_name,carousels.cnpj,carousels.cde_number,carousels.id_prod_Planeta as prod, carousels.price, carousels.recall_type,carousels.total_distributed,return_quantity,sales_quantity,carousels.calculated_value as vlr, discount_calculated_value as desconto , 

(select  (carousels.calculated_value) - (discount_calculated_value)) as vlrce

from carousels, contatos
where   contatos.customercode = carousels.customercode and cde_number = $ce and customer_name = '$praca' order by carousels.customercode , carousels.cde_number 
 
", "limit={$Paginacao->getLimiteResultado()}&offset={$Paginacao->getOffset()}");
                             //var_dump($Listar->getResultado());   
            
            
            
        if ($Listar->getResultado()):
            $this->Resultado = $Listar->getResultado();
            return array($this->Resultado, $this->ResultadoPaginacao);
        else:
            // $Paginacao->paginaInvalida();
        
            $this->Resultado = $Listar->getResultado();
            return array($this->Resultado, $this->ResultadoPaginacao);
        endif;
    }
    
        public function visualizar($ArtigoId) {
        $this->ArtigoId = (int) $ArtigoId;
        $Visualizar = new ModelsRead();
        $Visualizar->fullRead("select art.*, cat.nome_cat_artigo categorias_artigos from artigos art 
            INNER JOIN categorias_artigos cat on cat.id = art.categorias_artigo_id   
            WHERE art.id =:id LIMIT :limit", "id={$this->ArtigoId}&limit=1");
         $Visualizar->fullRead("select art.* from artigos art 
            WHERE art.id =:id LIMIT :limit", "id={$this->ArtigoId}&limit=1");

        //var_dump($Visualizar->getResultado());
        $this->Resultado = $Visualizar->getResultado();
        $this->RowCount = $Visualizar->getRowCount();
        return $this->Resultado;
    }

    public function listarCadastrar() {
        $Listar = new ModelsRead();
        $Listar->ExeRead('categorias_artigos');
        $CatArtigos = $Listar->getResultado();
        $this->Resultado = array($CatArtigos);
        return $this->Resultado;
    }

    public function cadastrar(array $Dados) {
        $this->Dados = $Dados;
        $this->validarDados();
        if ($this->Resultado):
            if (empty($this->Foto['name'])):
                $this->inserir();
            else:
                $SlugImagem = new ModelsValidacao();
                $SlugImagem->nomeSlug($this->Foto['name']);
                $this->Foto['name'] = $SlugImagem->getNome();
                $this->Dados['foto'] = $this->Foto['name'];
                //var_dump($this->Dados);  

                $this->inserir();

                $UploadFoto = new ModelsUpload();
                $UploadFoto->upload($this->Foto, 'artigo/' . $this->Resultado . '/', $this->Dados['foto']);
            endif;
        endif;
    }

    private function validarDados() {
        $this->Foto = $this->Dados['foto'];
        unset($this->Dados['foto']);
        $this->Dados = array_map('trim', $this->Dados);
        if (in_array('', $this->Dados)):
            $this->Resultado = false;
        else:
            $this->Resultado = true;
        endif;
       
        
    }

    private function inserir() {
        $Create = new ModelsCreate;
        $Create->ExeCreate('artigos', $this->Dados);
        if ($Create->getResultado()):
            $this->Resultado = $Create->getResultado();
        endif;
    }

    public function editar($AritgoId, array $Dados) {
        $this->ArtigoId = (int) $AritgoId;
        $this->Dados = $Dados;
        $this->ArtigoId = $this->Dados['id'];
        $this->Foto['foto_antiga'] = $this->Dados['foto_antiga'];
        unset($this->Dados['foto_antiga']);

    
        
        
        
        $this->validarDados();
        if ($this->Resultado):
            if (empty($this->Foto['name'])):
                $this->alterar();
            else:
                if (file_exists('assets/imagens/artigo/' . $this->ArtigoId . '/' . $this->Foto['foto_antiga'])):
                    unlink('assets/imagens/artigo/' . $this->ArtigoId . '/' . $this->Foto['foto_antiga']);
                
                $SlugImagem = new ModelsValidacao();
                $SlugImagem->nomeSlug($this->Foto['name']);
                $this->Foto['name'] = $SlugImagem->getNome();
                $this->Dados['foto'] = $this->Foto['name'];
                
                $this->alterar();
                
                $UploadFoto = new ModelsUpload();
                $UploadFoto->upload($this->Foto, 'artigo/' . $this->ArtigoId . '/', $this->Dados['foto']);
                
                endif;
            endif;
        endif;
    }
    
    private function alterar() {
        $Update = new ModelsUpdate();
        $Update->ExeUpdate('artigos', $this->Dados, "WHERE id = :id", "id={$this->ArtigoId }");
        if ($Update->getResultado()):
            $this->Resultado = true;
        else:
            $this->Resultado = false;
        endif;
    }
    
    public function apagar($ArtigoId) {
        $this->ArtigoId = (int) $ArtigoId;
        $this->Dados = $this->visualizar($this->ArtigoId);
        if ($this->getRowCount() >= 0):
            $ApagarArtigo = new ModelsDelete();
            $ApagarArtigo->ExeDelete('artigos', 'WHERE id =:id', "id={$this->ArtigoId}");
            $this->Resultado = $ApagarArtigo->getResultado();
             $_SESSION['msg'] = "<div class='alert alert-success'>Artigo apagado com sucesso!</div>";
        else:
            $_SESSION['msg'] = "<div class='alert alert-success'>Artigo não foi apagado com sucesso!</div>";
        endif;
    }

}
