<?php

namespace App\ViewModels\Agendamento\AgendamentoDetailsViewModel;

use App\Utils\Builder;

class AgendamentoDetailsViewModelBuilder implements Builder {
	protected $id_procedimento;
	protected $id_agendamento;
	protected $id_paciente;
	protected $id_requisicao;
	protected $descricao_tipo_procedimento;
	protected $descricao_procedimento;
	protected $data;
	protected $hora_inicio;
	protected $hora_final;
	protected $codigo;
	protected $cpf;
	protected $rg;
	protected $nome;
	protected $genero;
	protected $data_nascimento;
	protected $telefone_1;
	protected $telefone_2;
	protected $cep;
	protected $numero;
	protected $complemento;
	protected $referencias;
	protected $estado;
	protected $cidade;
	protected $bairro;
	protected $logradouro;
	protected $email;
	protected $foto;
	protected $ativo;
	protected $profissao;
	protected $estado_civil;

	public function build(): AgendamentoDetailsViewModel {

		$agendamento_info_vm = new AgendamentoDetailsViewModel();
		$agendamento_info_vm->setIdpaciente( $this->id_paciente );
		$agendamento_info_vm->setIdAgendamento( $this->id_agendamento );
		$agendamento_info_vm->setIdProcedimento( $this->id_procedimento );
		$agendamento_info_vm->setIdRequisicao( $this->id_requisicao );
		$agendamento_info_vm->setDescricaoTipoProcedimento( $this->descricao_tipo_procedimento );
		$agendamento_info_vm->setDescricaoProcedimento( $this->descricao_procedimento );
		$agendamento_info_vm->setData( $this->data );
		$agendamento_info_vm->setHoraInicio( $this->hora_inicio );
		$agendamento_info_vm->setHoraFinal( $this->hora_final );
		$agendamento_info_vm->setCodigo( $this->codigo );
		$agendamento_info_vm->setCpf( $this->cpf );
		$agendamento_info_vm->setRg( $this->rg );
		$agendamento_info_vm->setNome( $this->nome );
		$agendamento_info_vm->setGenero( $this->genero );
		$agendamento_info_vm->setDataNascimento( $this->data_nascimento );
		$agendamento_info_vm->setTelefone1( $this->telefone_1 );
		$agendamento_info_vm->setTelefone2( $this->telefone_2 );
		$agendamento_info_vm->setCep( $this->cep );
		$agendamento_info_vm->setNumero( $this->numero );
		$agendamento_info_vm->setComplemento( $this->complemento );
		$agendamento_info_vm->setReferencias( $this->referencias );
		$agendamento_info_vm->setEstado( $this->estado );
		$agendamento_info_vm->setCidade( $this->cidade );
		$agendamento_info_vm->setBairro( $this->bairro );
		$agendamento_info_vm->setLogradouro( $this->logradouro );
		$agendamento_info_vm->setEmail( $this->email );
		$agendamento_info_vm->setFoto( $this->foto );
		$agendamento_info_vm->setAtivo( $this->ativo );
		$agendamento_info_vm->setProfissao( $this->profissao );
		$agendamento_info_vm->setEstadoCivil( $this->estado_civil );
		return $agendamento_info_vm;

	}

	public function setIdPaciente($id_paciente): AgendamentoDetailsViewModelBuilder {

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

	}

	public function setIdAgendamento($id_agendamento): AgendamentoDetailsViewModelBuilder {

		$this->id_agendamento = $id_agendamento;
		return $this;

	}

	public function setIdRequisicao(int $id_requisicao): AgendamentoDetailsViewModelBuilder {

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

	}

	public function setIdProcedimento($id_procedimento): AgendamentoDetailsViewModelBuilder {

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

	}

	public function setDescricaoTipoProcedimento($descricao_tipo_procedimento): AgendamentoDetailsViewModelBuilder {

		$this->descricao_tipo_procedimento = $descricao_tipo_procedimento;
		return $this;

	}

	public function setDescricaoProcedimento($descricao_procedimento): AgendamentoDetailsViewModelBuilder {

		$this->descricao_procedimento = $descricao_procedimento;
		return $this;

	}

	public function setData($data): AgendamentoDetailsViewModelBuilder {

		$this->data = $data;
		return $this;

	}

	public function setHoraInicio($hora_inicio): AgendamentoDetailsViewModelBuilder {

		$this->hora_inicio = $hora_inicio;
		return $this;

	}

	public function setHoraFinal($hora_final): AgendamentoDetailsViewModelBuilder {

		$this->hora_final = $hora_final;
		return $this;

	}

	public function setCodigo($codigo): AgendamentoDetailsViewModelBuilder {

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

	}

	public function setCpf($cpf): AgendamentoDetailsViewModelBuilder {

		$this->cpf = $cpf;
		return $this;

	}

	public function setRg($rg): AgendamentoDetailsViewModelBuilder {

		$this->rg = $rg;
		return $this;

	}

	public function setNome($nome): AgendamentoDetailsViewModelBuilder {

		$this->nome = $nome;
		return $this;

	}

	public function setGenero($genero): AgendamentoDetailsViewModelBuilder {

		$this->genero = $genero;
		return $this;

	}

	public function setDataNascimento($data_nascimento): AgendamentoDetailsViewModelBuilder {

		$this->data_nascimento = $data_nascimento;
		return $this;

	}

	public function setTelefone1($telefone_1): AgendamentoDetailsViewModelBuilder {

		$this->telefone_1 = $telefone_1;
		return $this;

	}

	public function setTelefone2($telefone_2): AgendamentoDetailsViewModelBuilder {

		$this->telefone_2 = $telefone_2;
		return $this;

	}

	public function setCep($cep): AgendamentoDetailsViewModelBuilder {

		$this->cep = $cep;
		return $this;

	}

	public function setNumero($numero): AgendamentoDetailsViewModelBuilder {

		$this->numero = $numero;
		return $this;

	}

	public function setComplemento($complemento): AgendamentoDetailsViewModelBuilder {

		$this->complemento = $complemento;
		return $this;

	}

	public function setReferencias($referencias): AgendamentoDetailsViewModelBuilder {

		$this->referencias = $referencias;
		return $this;

	}

	public function setEstado($estado): AgendamentoDetailsViewModelBuilder {

		$this->estado = $estado;
		return $this;

	}

	public function setCidade($cidade): AgendamentoDetailsViewModelBuilder {

		$this->cidade = $cidade;
		return $this;

	}

	public function setBairro($bairro): AgendamentoDetailsViewModelBuilder {

		$this->bairro = $bairro;
		return $this;

	}

	public function setLogradouro($logradouro): AgendamentoDetailsViewModelBuilder {

		$this->logradouro = $logradouro;
		return $this;

	}

	public function setEmail($email): AgendamentoDetailsViewModelBuilder {

		$this->email = $email;
		return $this;

	}

	public function setFoto($foto): AgendamentoDetailsViewModelBuilder {

		$this->foto = $foto;
		return $this;

	}

	public function setAtivo($ativo): AgendamentoDetailsViewModelBuilder {

		$this->ativo = $ativo;
		return $this;

	}

	public function setProfissao($profissao): AgendamentoDetailsViewModelBuilder {

		$this->profissao = $profissao;
		return $this;

	}

	public function setEstadoCivil($estado_civil): AgendamentoDetailsViewModelBuilder {

		$this->estado_civil = $estado_civil;
		return $this;

	}

}