<?php

class MktProdutoRetorno extends DefaultClass{
    //parametros especificos para pós retorno do web service dos marketplaces...
    private $mktIntegrationId = null;
    private $mktStatus        = '';
    private $mktLink          = '';
    private $mktQuantity      = 0;
    private $mktPrice         = 0;
    private $mktName          = '';
    private $mktIdVIdeoYoutube;
    private $mktQtdVendido;
    private $mktTipos;
    private $mktVariations;
    private $productType;

    public function getProductType()
    {
      return $this->productType;
    }

    public function setProductType($productType)
    {
      $this->productType = $productType;
    }

    public function getmktVariations(){
        return $this->mktVariations;
    }

    public function setmktVariations($mktVariations){
        $this->mktVariations = $mktVariations;
    }

    public function getmktTipo(){
        return $this->mktTipos;
    }

    public function setmktTipo($mktTipos){
        $this->mktTipos = $mktTipos;
    }

    public function getmktIntegrationId(){
        return $this->mktIntegrationId;
    }

    public function setmktIntegrationId($mktIntegrationId){
        $this->mktIntegrationId = $mktIntegrationId;
    }

    public function getmktStatus(){
        return $this->mktStatus;
    }

    public function setmktStatus($mktStatus){
        $this->mktStatus = $mktStatus;
    }

    public function getmktLink(){
        return $this->mktLink;
    }

    public function setmktLink($mktLink){
        $this->mktLink = $mktLink;
    }

    public function getmktQuantity(){
        return $this->mktQuantity;
    }

    public function setmktQuantity($mktQuantity){
        $this->mktQuantity = $mktQuantity;
    }

    public function getmktPrice(){
        return $this->mktPrice;
    }

    public function setmktPrice($mktPrice){
        $this->mktPrice = $mktPrice;
    }

    public function getmktName(){
        return $this->mktName;
    }

    public function setmktName($mktName){
        $this->mktName = $mktName;
    }

    public function getmktIdVIdeoYoutube(){
        return $this->mktIdVIdeoYoutube;
    }

    public function setmktIdVIdeoYoutube($mktIdVIdeoYoutube){
        $this->mktIdVIdeoYoutube = $mktIdVIdeoYoutube;
    }


    public function getmktQtdVendido(){
        return $this->mktQtdVendido;
    }

    public function setmktQtdVendido($mktQtdVendido){
        $this->mktQtdVendido = $mktQtdVendido;
    }

}

class MktProduto extends DefaultClass{
    private $product_id;
    private $name;
    private $sku;
    private $model;
    private $description;
    private $pictures;
    private $departamento;
    private $grupo;
    private $subgrupo;
    private $status;
    private $currency           = Type_CodigoMoeda::Tp_MoedReal;
    private $language           = Type_CodigoLanguage::Tp_PortuguesBr;
    private $idYoutubeVideo;
    private $mktCustomTitle;
    private $price              = 0;
    private $promotional_price  = 0;
    private $desconto           = 0;
    private $quantity           = 0;
    private $weight             = 0;
    private $height             = 0;
    private $width              = 0;
    private $marca              = '';
    private $nbm                = '';
    private $codigo_barras;
    private $length             = 0;
    private $cost               = 0;
    private $qtdVendido         = 0;
    private $listaVariacoes     = array();
    private $mktRetorno;
    private $tipo;
    private $mktId;
    private $mktCodigoBarras;
    private $variation_color;
    private $variation_size;
    private $variation_specification;
    private $marketplace_price_id = null;
    private $marketplaceprice_config_md5 = null;

    public function getVariationColor(){
      return $this->variation_color;
    }

    public function setVariationColor($variation_color){
      $this->variation_color = $variation_color;
    }

    public function getVariationSize(){
      return $this->variation_size;
    }

    public function setVariationSize($variation_size){
      $this->variation_size = $variation_size;
    }

    public function getVariationSpecification(){
      return $this->variation_specification;
    }

    public function setVariationSpecification($variation_specification){
      $this->variation_specification = $variation_specification;
    }

    public function getMktId(){
      return $this->mktId;
    }

    public function setMktId($mktId){
      $this->mktId = $mktId;
    }

    public function getMktCodigoBarras(){
        return $this->mktCodigoBarras;
    }
    public function setMktCodigoBarras($mktCodigoBarras){
        $this->mktCodigoBarras = $mktCodigoBarras;
    }

    public function getTipo(){
        return $this->tipo;
    }

    public function setTipo($tipo){
        $this->tipo = $tipo;
    }

    public function setMktRetorno(MktProdutoRetorno $mktret){
        $this->mktRetorno = $mktret;
    }

    public function getMktRetorno(){
        return $this->mktRetorno;
    }

    public function setVariacao(MktVariacoes $variacao){
        $this->listaVariacoes[] = $variacao;
    }

    public function getVariacao(){
        return $this->listaVariacoes;
    }

    public function getVaricaoProductId($product_id){
        foreach ($this->listaVariacoes as $variac){
            if($variac->getProductID() == $product_id){
                return $variac;
            }
        }

        return false;
    }

    public function hasVariations(){
        return sizeof($this->listaVariacoes) > 0;
    }

    public function getProductid(){
        return $this->product_id;
    }

    public function setProductid($product_id){
        $this->product_id = $product_id;
    }

    public function getQtdVendido(){
        return $this->qtdVendido;
    }

    public function setQtdVendido($qtd){
        $this->qtdVendido = $qtd;
    }

    public function getCurrency(){
        return $this->currency;
    }

    public function getCost(){
        return $this->cost;
    }

    public function getPromotional_price(){
        return $this->promotional_price;
    }

    public function getDescription(){
        return $this->description;
    }

    public function getStatus(){
        return $this->status;
    }

    public function setStatus($status){
        $this->status = $status;
    }

    public function getPrice(){
        return $this->price;
    }

    public function getCategory(){
        return $this->category;
    }

    public function getPictures(){
        return $this->pictures;
    }

    public function setPictures($pics){
        $this->pictures = $pics;
    }

    public function getName(){
        return $this->name;
    }

    public function getSku(){
        return $this->sku;
    }

    public function getWeight(){
        return $this->weight;
    }

    public function getHeight(){
        return $this->height;
    }

    public function getWidth(){
        return $this->width;
    }

    public function getMarca(){
        return $this->marca;
    }

    public function getNbm(){
        return $this->nbm;
    }

    public function getLength(){
        return $this->length;
    }

    public function getQuantity(){
        return $this->quantity;
    }

    public function getCodigoBarra(){
      return $this->codigo_barras;
    }

    public function setCodigoBarra($codbarra){
        $this->codigo_barras = $codbarra;
    }
    public function setQuantity($quantity){
        $this->quantity = ($quantity <= 0) ? 0 : $quantity;
    }

    public function setPrice($price){
        $this->price = $price;
    }

    public function setName($name){
        $this->name = $name;
    }

    public function setDescription($description){
        $this->description = $description;
    }

    public function setImagemObj(MktProdutoImagem $pictures){
        $this->pictures = $pictures;
    }

    public function clearImagemObj(){
        $this->pictures = null;
    }

    public function setIdYoutubeVideo($idYoutubeVideo){
        $this->idYoutubeVideo = $idYoutubeVideo;
    }

    public function getIdYoutubeVideo(){
        return $this->idYoutubeVideo;
    }

    public function setCustomTitle($customTitle){
      // limite 60 caracteres
        $this->customTitle = mb_substr($customTitle, 0, 60);
    }

    public function getCustomTitle(){
        return $this->customTitle;
    }

    public function setWeight($weight){
        $this->weight = $weight;
    }

    public function setHeight($height){
        $this->height = $height;
    }

    public function setWidth($width){
        $this->width = $width;
    }

    public function setMarca($marca){
        $this->marca = $marca;
    }

    public function setLength($length){
        $this->length = $length;
    }

    public function setDepartamento(MktProdutoCategoria $departamento){
        $this->departamento = $departamento;
    }

    public function getDepartamento(){
        return $this->departamento;
    }

    public function setGrupo(MktProdutoCategoria $grupo){
        $this->grupo = $grupo;
    }

    public function getGrupo(){
        return $this->grupo;
    }

    public function setSubGrupo(MktProdutoCategoria $subGrupo){
        $this->subgrupo = $subGrupo;
    }

    public function getSubGrupo(){
        return $this->subgrupo;
    }

    public function setSku($sku){
        $this->sku = $sku;
    }

    public function getModel(){
        return $this->model;
    }

    public function setModel($model){
        $this->model = $model;
    }

    public function getMarketplacePriceId()
    {
        return $this->marketplace_price_id;
    }

    public function setMarketplacePriceId($marketplace_price_id): void
    {
        $this->marketplace_price_id = $marketplace_price_id;
    }

    public function getMarketplacepriceConfigMd5()
    {
        return $this->marketplaceprice_config_md5;
    }

    public function setMarketplacepriceConfigMd5($marketplaceprice_config_md5): void
    {
        $this->marketplaceprice_config_md5 = $marketplaceprice_config_md5;
    }

}

class MktProdutoImagem{
    private $imagem = array();

    public function addImagem($link, $imgPath, $id = 0, $mktid = null, $idFutura = 0, $mktIdFutura = 0){
        $imagem = new MktImagem();
        $imagem->setLink($link);
        $imagem->setImgPath($imgPath);
        $imagem->setId($id);
        $imagem->setImageMktId($mktid);
        $imagem->setIdFutura($idFutura);
        $imagem->setMktIdFutura($mktIdFutura);
        $this->imagem[] = $imagem;
    }

    public function getImagens(){
        return $this->imagem;
    }
}

class MktImagem{
    private $id = 0;//id da imagem na base de dados...
    private $link;
    private $imgPath;
    private $imageMktmId;//id da imagem no marketplace...
    private $imageMktFuturaId;//id da imagem no marketplace...
    private $imageMd5;
    private $idFutura; //id da imagem no futura server

    public function setId($id){
        $this->id = $id;
    }

    public function getId (){
        return $this->id;
    }

    public function setMktIdFutura($mktIdFutura){
        $this->mktIdFutura = $mktIdFutura;
    }

    public function getMktIdFutura (){
        return $this->mktIdFutura;
    }

    public function setIdFutura($idFutura){
        $this->idFutura = $idFutura;
    }

    public function getIdFutura (){
        return $this->idFutura;
    }

    public function getLink(){
        $md5_imagem = (file_exists($this->imgPath)) ? md5_file($this->imgPath) : "";
        return $this->link . '?versao=' . $md5_imagem;
    }

    public function getLinkSemMd5(){
      return $this->link;
    }

    public function getImageMd5(){
      $this->imageMd5 = (file_exists($this->imgPath)) ? md5_file($this->imgPath) : "";
      return $this->imageMd5;
    }

    public function setLink ($link){
        $this->link = $link;
    }

    public function setImgPath ($imgPath){
        $this->imgPath = $imgPath;
    }

    public function getImgPath (){
        return $this->imgPath;
    }

    public function getImageMktId(){
        return $this->imageMktmId;
    }

    public function setImageMktId($imageMktmId){
        $this->imageMktmId = $imageMktmId;
    }

}

class MktVariacoes{
    private $cor;
    private $tamanho;
    private $especificaco;
    private $template_id;
    private $template_cor;
    private $template_tamanho;
    private $template_especificacao;
    private $codigo_barras;
    private $quantity = 0;
    private $valor = 0;
    private $listaImagem;
    private $product_id;
    private $sku;
    private $mkt_variation_id;
    private $status;

    public function getStatus(){
        return $this->status;
    }

    public function getSku(){
      return $this->sku;
    }

    public function setStatus($sts){
        $this->status = $sts;
    }

    public function getCor(){
        return $this->cor;
    }

    public function setCor($cor){
        $this->cor = $cor;
    }

    public function getTemplateID(){
      return $this->template_id;
    }

    public function setTemplateID($template_id){
      $this->template_id = $template_id;
    }

    public function getTemplateCor(){
      return $this->template_cor;
    }

    public function setTemplateCor($template_cor){
        $this->template_cor = $template_cor;
    }

    public function getTemplateTamanho(){
      return $this->template_tamanho;
    }

    public function setTemplateTamanho($template_tamanho){
        $this->template_tamanho = $template_tamanho;
    }

    public function getTemplateEspecificacao(){
      return $this->template_especificacao;
    }

    public function setTemplateEspecificacao($template_especificacao){
        $this->template_especificacao = $template_especificacao;
    }

    public function getTamanho(){
        return $this->tamanho;
    }

    public function setSku($sku){
      $this->sku = $sku;
    }

    public function setTamanho($tamanho){
        $this->tamanho = $tamanho;
    }

    public function getEspecificacao(){
        return $this->especificaco;
    }

    public function setEspecificacao($especificacao){
        $this->especificaco = $especificacao;
    }

    public function getCodigoBarra(){
        return $this->codigo_barras;
    }

    public function setCodigoBarra($codbarra){
        $this->codigo_barras = $codbarra;
    }

    public function getQuantity(){
        return $this->quantity;
    }
    public function setQuantity($qtd){
        $this->quantity = ($qtd <= 0) ? 0 : $qtd;
    }

    public function getValor(){
        return $this->valor;
    }

    public function setValor($valor){
        $this->valor = $valor;
    }

    public function getImagens(){
        return $this->listaImagem;
    }

    public function setImagens(MktProdutoImagem $imagem){
        $this->listaImagem = $imagem;
    }

    public function getProductID(){
        return $this->product_id;
    }

    public function setProductID($prod_id){
        $this->product_id = $prod_id;
    }

    public function getMktVariation_id(){
        return $this->mkt_variation_id;
    }

    public function setMktVariation_id($variation_id){
        $this->mkt_variation_id = $variation_id;
    }
}

class MktProdutoCategoria{
    private $code;
    private $name;

    public function getCode(){
        return $this->code;
    }

    public function getName(){
        return $this->name;
    }

    public function setCode($code)
    {
        $this->code = $code;

        return $this;
    }

    public function setName($name)
    {
        $this->name = $name;

        return $this;
    }

}

