<?php


namespace App\Entities\Pet;

use App\Utils\Builder;

class PetBuilder implements Builder
{
    private $id;
    private $data_nascimento;
    private $id_raca;
    private $cor;
    private $id_pet_status;
    private $sexo;
    private $castrado;
    private $numero_chip;
    private $rga_pedigree;
    private $doado;
    private $nome;
    private $porte;
    private $observacoes;
    private $peso;

    /**
     * @param mixed $nome
     * @return PetBuilder
     */
    public function setNome($nome)
    {
        $this->nome = $nome;
        return $this;
    }

    /**
     * @param mixed $porte
     * @return PetBuilder
     */
    public function setPorte($porte)
    {
        $this->porte = $porte;
        return $this;
    }

    /**
     * @param mixed $observacoes
     * @return PetBuilder
     */
    public function setObservacoes($observacoes)
    {
        $this->observacoes = $observacoes;
        return $this;
    }


    /**
     * @param mixed $id
     * @return PetBuilder
     */
    public function setId($id)
    {
        $this->id = $id;
        return $this;
    }

    /**
     * @param mixed $data_nascimento
     * @return PetBuilder
     */
    public function setDataNascimento($data_nascimento)
    {
        $this->data_nascimento = $data_nascimento;
        return $this;
    }

    /**
     * @param mixed $id_raca
     * @return PetBuilder
     */
    public function setIdRaca($id_raca)
    {
        $this->id_raca = $id_raca;
        return $this;
    }

    /**
     * @param mixed $cor
     * @return PetBuilder
     */
    public function setCor($cor)
    {
        $this->cor = $cor;
        return $this;
    }

    /**
     * @param mixed $id_pet_status
     * @return PetBuilder
     */
    public function setIdPetStatus($id_pet_status)
    {
        $this->id_pet_status = $id_pet_status;
        return $this;
    }

    /**
     * @param mixed $sexo
     * @return PetBuilder
     */
    public function setSexo($sexo)
    {
        $this->sexo = $sexo;
        return $this;
    }

    /**
     * @param mixed $castrado
     * @return PetBuilder
     */
    public function setCastrado($castrado)
    {
        $this->castrado = $castrado;
        return $this;
    }

    /**
     * @param mixed $numero_chip
     * @return PetBuilder
     */
    public function setNumeroChip($numero_chip)
    {
        $this->numero_chip = $numero_chip;
        return $this;
    }

    /**
     * @param mixed $rga_pedigree
     * @return PetBuilder
     */
    public function setRgaPedigree($rga_pedigree)
    {
        $this->rga_pedigree = $rga_pedigree;
        return $this;
    }

    /**
     * @param mixed $doado
     * @return PetBuilder
     */
    public function setDoado($doado)
    {
        $this->doado = $doado;
        return $this;
    }
    
    public function setPeso($peso)
    {
        $this->peso = $peso;
        return $this;
    }

    public function build() : Pet
    {
        $pet = new Pet();
        if (isset($this->id)) {
            $pet->setId($this->id);
        }
        if (isset($this->data_nascimento)) {
            $pet->setDataNascimento($this->data_nascimento);
        }
        if (isset($this->id_raca)) {
            $pet->setIdRaca($this->id_raca);
        }
        if (isset($this->cor)) {
            $pet->setCor($this->cor);
        }
        if (isset($this->id_pet_status)) {
            $pet->setIdPetStatus($this->id_pet_status);
        }
        if (isset($this->sexo)) {
            $pet->setSexo($this->sexo);
        }
        if (isset($this->castrado)) {
            $pet->setCastrado($this->castrado);
        }
        if (isset($this->numero_chip)) {
            $pet->setNumeroChip($this->numero_chip);
        }
        if (isset($this->rga_pedigree)) {
            $pet->setRgaPedigree($this->rga_pedigree);
        }
        if (isset($this->doado)) {
            $pet->setDoado($this->doado);
        }
        if (isset($this->nome)) {
            $pet->setNome($this->nome);
        }
        if (isset($this->porte)) {
            $pet->setPorte($this->porte);
        }
        if (isset($this->observacoes)) {
            $pet->setObservacoes($this->observacoes);
        }
        if (isset($this->peso)) {
            $pet->setPeso($this->peso);
        }
        return $pet;
    }

}