<?php

namespace App\ViewModels\Pet\PetUpdateViewModel;
use App\Utils\Builder;
use App\Utils\ResponseException;
use Config\CustomRules;
use Exception;

class PetUpdateViewModelBuilder implements Builder
{
    protected $foto;
    protected $data_nascimento;
    protected $cor;
    protected $sexo;
    protected $castrado;
    protected $numero_chip;
    protected $rga_pedigree;
    protected $doado;
    protected $id_raca;
    protected $id_pet_status;
    protected $id_cliente;
    protected $nome;
    protected $porte;
    protected $observacoes;
    protected $peso;

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

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

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

    /**
     * @param mixed $foto
     * @return PetUpdateViewModelBuilder
     */
    public function setFoto($foto)
    {
        $this->foto = $foto;
        return $this;
    }

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

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

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

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

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

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

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

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

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

    /**
     * @param mixed $id_cliente
     * @return PetUpdateViewModelBuilder
     */
    public function setIdCliente($id_cliente)
    {
        $this->id_cliente = $id_cliente;
        return $this;
    }

    public function build () {
        $pet_view_model = new PetUpdateViewModel();
        $pet_view_model->setDataNascimento($this->data_nascimento);
        $pet_view_model->setIdRaca($this->id_raca);
        $pet_view_model->setCor($this->cor);
        $pet_view_model->setIdPetStatus($this->id_pet_status);
        $pet_view_model->setSexo($this->sexo);
        $pet_view_model->setCastrado($this->castrado);
        $pet_view_model->setNumeroChip($this->numero_chip);
        $pet_view_model->setRgaPedigree($this->rga_pedigree);
        $pet_view_model->setDoado($this->doado);
        $pet_view_model->setFoto($this->foto);
        $pet_view_model->setIdCliente($this->id_cliente);
        $pet_view_model->setNome($this->nome);
        $pet_view_model->setPorte($this->porte);
        $pet_view_model->setPeso($this->peso);
        $pet_view_model->setObservacoes($this->observacoes);
        if (isset($this->foto)) {
            $pet_view_model->setFoto($this->foto);
        }
        return $pet_view_model;
    }
}
