<?php

namespace App\Entities\Agendamento;

use App\Utils\Builder;

class AgendamentoBuilder implements Builder {
	protected $id;
	protected $id_agenda;
	protected $id_cliente;
	protected $id_paciente;
	protected $id_requisicao;
	protected $id_procedimento;
	protected $codigo;
	protected $cancelado_em;
	protected $adicionado_por;
	protected $alterado_por;
	protected $alterado_em;
	protected $criado_em;
	protected $atrasado;

	public function build(): Agendamento {

		$agendamento = new Agendamento();
		if (isset( $this->id )) {
			$agendamento->setId( $this->id );
		}
		if (isset( $this->id_agenda )) {
			$agendamento->setIdAgenda( $this->id_agenda );
		}
		if (isset( $this->id_cliente )) {
			$agendamento->setIdCliente( $this->id_cliente );
		}
		if (isset( $this->id_paciente )) {
			$agendamento->setIdPaciente( $this->id_paciente );
		}

		if (isset( $this->id_requisicao )) {
			$agendamento->setidRequisicao( $this->id_requisicao );
		}

		if (isset( $this->id_procedimento )) {
			$agendamento->setIdProcedimento( $this->id_procedimento );
		}
		if (isset( $this->codigo )) {
			$agendamento->setCodigo( $this->codigo );
		}
		if (isset( $this->cancelado_em )) {
			$agendamento->setCanceladoEm( $this->cancelado_em );
		}
		if (isset( $this->adicionado_por )) {
			$agendamento->setAdicionadoPor( $this->adicionado_por );
		}
		if (isset( $this->alterado_por )) {
			$agendamento->setAlteradoPor( $this->alterado_por );
		}
		if (isset( $this->alterado_em )) {
			$agendamento->setAlteradoEm( $this->alterado_em );
		}
		if (isset( $this->criado_em )) {
			$agendamento->setCriadoEm( $this->criado_em );
		}
		if (isset( $this->atrasado )) {
			$agendamento->setAtrasado( $this->atrasado );
		}
		return $agendamento;

	}

	public function setId(int $id): AgendamentoBuilder {

		$this->id = $id;
		return $this;

	}

	public function setIdAgenda(int $id_agenda): AgendamentoBuilder {

		$this->id_agenda = $id_agenda;
		return $this;

	}

	public function setIdCliente(int $id_cliente): AgendamentoBuilder {

		$this->id_cliente = $id_cliente;
		return $this;

	}

	public function setIdPaciente(int $id_paciente): AgendamentoBuilder {

		$this->id_paciente = $id_paciente;
		return $this;

	}

	public function setIdRequisicao(int $id_requisicao): AgendamentoBuilder {

		$this->id_requisicao = $id_requisicao;
		return $this;

	}

	public function setIdProcedimento(int $id_procedimento): AgendamentoBuilder {

		$this->id_procedimento = $id_procedimento;
		return $this;

	}

	public function setCodigo(string $codigo): AgendamentoBuilder {

		$this->codigo = $codigo;
		return $this;

	}

	public function setCanceladoEm(string $cancelado_em): AgendamentoBuilder {

		$this->cancelado_em = $cancelado_em ? $cancelado_em : '1900-01-01 00:00:00';
		return $this;

	}

	public function setAdicionadoPor(int $adicionado_por): AgendamentoBuilder {

		$this->adicionado_por = $adicionado_por;
		return $this;

	}

	public function setAlteradoPor(int $alterado_por): AgendamentoBuilder {

		$this->alterado_por = $alterado_por;
		return $this;

	}

	public function setAlteradoEm(int $alterado_em): AgendamentoBuilder {

		$this->alterado_em = $alterado_em;
		return $this;

	}

	public function setCriadoEm(string $criado_em): AgendamentoBuilder {

		$this->criado_em = $criado_em;
		return $this;

	}

	public function setAtrasado($atrasado): AgendamentoBuilder {

		$this->atrasado = $atrasado;
		return $this;

	}

}