<?php
class Produto extends UtilObjeto {

	public $categoria;

	public function __construct($params=""){
		// trata valor
		if(isset($params['valor'])) $params['valor'] = trataCampoValor($params['valor']);
		if(isset($params['valorPromo'])) $params['valorPromo'] = trataCampoValor($params['valorPromo']);
		parent::__construct(strtolower(get_class()), $params);
	}

	public function inserirCategoria($idCategoria,$destaque='n'){
		$obj = new ProdutoCategoria();
		$obj->idProduto = $this->id;
		$obj->idCategoria = $idCategoria;
		$obj->destaque = $destaque;
		if(!$obj->inserir()){
			return false;
		}
		return true;
	}
	
	public function inserirRelacionado($idProdutoRel){
		$obj = new ProdutoRelacionado();
		$obj->idProduto = $this->id;
		$obj->idProdutoRel = $idProdutoRel;
		if(!$obj->inserir()){
			return false;
		}
		return true;
	}

	public function inserirImagem($imagem,$principal='n'){
		$obj = new ProdutoImagem();
		$obj->idProduto = $this->id;
		$obj->imagem = $imagem;
		$obj->principal = $principal;
		if(!$obj->inserir()){
			return false;
		}
		return true;
	}
	
	public function inserirTag($tag){
		$obj = new ProdutoTag();
		$obj->idProduto = $this->id;
		$obj->tag = $tag;
		if(!$obj->inserir()){
			return false;
		}
		return true;
	}
	
	public function inserirTamanho($idTamanho){
		$obj = new ProdutoTamanho();
		$obj->idProduto = $this->id;
		$obj->idTamanho = $idTamanho;
		if(!$obj->inserir()){
			return false;
		}
		return true;
	}	

	public function alterarCategoria($idCategoria,$destaque='n',$principal='n'){
		global $db;
		$update = "UPDATE rz2_produto_categoria
				   SET    destaque = '".$destaque."',
				   	      principal = '".$principal."'
				   WHERE  id_categoria = ".$idCategoria."
				   AND    id_produto = ".$this->id;
		$db->query($update);
		return true;
	}

	public static function listarCategoria($idProduto){
		global $db;
        $sql = "SELECT pc.id idProdCat, pc.destaque, pc.principal, c.*
                FROM   rz2_produto_categoria pc,
                	   rz2_categoria c
                WHERE  pc.id_categoria = c.id
                AND	   pc.id_produto = ".$idProduto;
        // exit($sql);
        $rs = executaSql($sql);
        $arrLista = array();
        while($rg = $rs->fetchRow()){
			foreach($rg as $campo => $valor){
                $arrLista[$rg['id']][$campo] = $valor;
            }
        }
        return (count($arrLista) > 0) ? $arrLista : false;
	}

	public static function listarTamanho($idProduto){
		global $db;
        $sql = "SELECT pt.*, t.id idTamanho, t.nome tamanho
                FROM   rz2_produto_tamanho pt,
                	   rz2_tamanho t
                WHERE  pt.id_tamanho = t.id
                AND	   pt.id_produto = ".$idProduto;
        // exit($sql);
        $rs = executaSql($sql);
        $arrLista = array();
        while($rg = $rs->fetchRow()){
			foreach($rg as $campo => $valor){
                $arrLista[$rg['id']][$campo] = $valor;
            }
        }
        return (count($arrLista) > 0) ? $arrLista : false;
	}

	public static function listar($filtro=""){
		global $db;
        $sql = "SELECT    p.*, pc.id idProdCat, f.nome fornecedor, pi.imagem
                FROM      rz2_produto p
                LEFT JOIN rz2_produto_imagem pi
                ON        p.id = pi.id_produto
                AND		  pi.principal = 's'
                LEFT JOIN rz2_produto_categoria pc
                ON        p.id = pc.id_produto
                LEFT JOIN rz2_fornecedor f
                ON        p.id_fornecedor = f.id
                LEFT JOIN rz2_produto_tag pt
                ON        p.id = pt.id_produto
				".$filtro;
        
        $rs = executaSql($sql);
        $arrLista = array();
        while($rg = $rs->fetchRow()){
            foreach($rg as $campo => $valor){
                $arrLista[$rg['id']][$campo] = $valor;
            }
        }
        return (count($arrLista) > 0) ? $arrLista : false;
	}

	public static function buscaPorSeoLink($seoLink){
		global $db;
        $sql = "SELECT id
                FROM   rz2_produto
				WHERE  seo_link = '".$seoLink."'
				LIMIT  0,1";
        // exit($sql);
        $rs = executaSql($sql);
        $rg = $rs->fetchRow();
		return $rg['id'];
	}

	public function atualizaSeoLink(){
		global $db;
		// busca categoria principal
		$sql = "SELECT lower(p.nome) produto, lower(c.nome) categoria
				FROM   rz2_produto p,
					   rz2_produto_categoria pc,
					   rz2_categoria c
				WHERE  p.id = pc.id_produto
				AND    pc.id_categoria = c.id
				AND    pc.principal = 's'
				AND    pc.id_produto = ".$this->id;
		$rs = $db->query($sql);
		$rg = $rs->fetchRow();
		$seoCategoria = UtilObjeto::trataNomeUrl($rg['categoria']);
		$seoProduto = UtilObjeto::trataNomeUrl($rg['produto']);
		$seoLink = $seoCategoria.'/'.$seoProduto;
		$up = "UPDATE rz2_produto SET seo_link = '".$seoLink."' WHERE id = ".$this->id;
		$db->query($up);
		return true;
	}

	public function alterar(){
		if(parent::alterar()){
			return $this->atualizaSeoLink();
		}
		else{
			return false;
		}
	}

	public function upload($files){
		$extensao = UtilObjeto::getExtensao($files['name']);
		$novoNome = $this->codigo.'-'.date('YmdHis').'.'.$extensao;
		if(move_uploaded_file($files['tmp_name'], PATHPRODUTO.$novoNome)){
			return $novoNome;
		}
		else{
			return false;
		}
	}

	public function excluir(){
		if($this->permiteExcluir()){
			return parent::excluir();
		}
		else{
			return false;
		}
	}

	public function permiteExcluir(){
		global $db;
		$sql = "SELECT count(*) total
				FROM   rz2_pedido_produto
				WHERE  id_produto = ".$this->id;
		$rs = $db->query($sql);
		$rg = $rs->fetchRow();
		return ($rg['total'] > 0) ? false : true;
	}

}
?>