<?php
namespace App\Entities\Procedimento;

use App\Utils\Builder;
use App\Utils\Entity;

class ProcedimentoBuilder implements Builder
{
    protected $id;
    protected $descricao;
    protected $id_tipo_procedimento;
    protected $criado_em;
    protected $alterado_em;
    protected $criado_por;
    protected $alterado_por;

    public function setId(int $id): ProcedimentoBuilder
    {
        $this->id = $id;
        return $this;
    }

    public function setDescricao(string $descricao): ProcedimentoBuilder
    {
        $this->descricao = $descricao;
        return $this;
    }

    public function setIdTIPOPROCEDIMENTO(int $id_tipo_procedimento): ProcedimentoBuilder
    {
        $this->id_tipo_procedimento = $id_tipo_procedimento;
        return $this;
    }

    public function setCriadoEm(?string $criado_em): ProcedimentoBuilder
    {
        $this->criado_em = $criado_em;
        return $this;
    }

    public function setAlteradoEm(?string $alterado_em): ProcedimentoBuilder
    {
        $this->alterado_em = $alterado_em;
        return $this;
    }

    public function setCriadoPor(?string $criado_por): ProcedimentoBuilder
    {
        $this->criado_por = $criado_por;
        return $this;
    }

    public function setAlteradoPor(?string $alterado_por): ProcedimentoBuilder
    {
        $this->alterado_por = $alterado_por;
        return $this;
    }

    public function build() : Procedimento
    {
        $procedimento = new Procedimento();
        if (isset($this->id)) {
            $procedimento->setid($this->id);
        }
        if (isset($this->descricao)) {
            $procedimento->setdescricao($this->descricao);
        }
        if (isset($this->id_tipo_procedimento)) {
            $procedimento->setidTIPOPROCEDIMENTO($this->id_tipo_procedimento);
        }
        if (isset($this->criado_em)) {
            $procedimento->setcriadoem($this->criado_em);
        }
        if (isset($this->alterado_em)) {
            $procedimento->setalteradoem($this->alterado_em);
        }
        if (isset($this->criado_por)) {
            $procedimento->setcriadopor($this->criado_por);
        }
        if (isset($this->alterado_por)) {
            $procedimento->setalteradopor($this->alterado_por);
        }
        return $procedimento;
    }
}