<?php


namespace App\Entities\Usuario;

use App\Utils\Builder;

class UsuarioBuilder implements Builder {
	private $id;
	private $email;
	private $senha;
	private $ativo;
	private $foto;
	private $email_verificado_em;
	private $criado_em;
	private $alterado_em;
	private $id_pessoa;
	private $adicionado_por;
	private $alterado_por;
	private $tipo;
	private $permissoes;
	private $senha_chamefacil;
	private $documento;

	public function setSenhaChameFacil(string $senha_chamefacil): UsuarioBuilder {

		$this->senha_chamefacil = $senha_chamefacil;
		return $this;

	}

	public function setDocumento($documento): UsuarioBuilder {

		$this->documento = $documento;
		return $this;

	}

	public function setId(int $id): UsuarioBuilder {

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

	}

	public function setEmail(string $email): UsuarioBuilder {

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

	}

	public function setSenha(string $senha): UsuarioBuilder {

		$this->senha = $senha;
		return $this;

	}

	public function setAtivo(int $ativo): UsuarioBuilder {

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

	}

	public function setFoto(string $foto): UsuarioBuilder {

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

	}

	public function setEmailVerificadoEm(?string $email_verificado_em): UsuarioBuilder {

		$this->email_verificado_em = $email_verificado_em;
		return $this;

	}

	public function setCriadoEm(?string $criado_em): UsuarioBuilder {

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

	}

	public function setAlteradoEm(?string $alterado_em): UsuarioBuilder {

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

	}

	public function setIdPessoa(int $id_pessoa): UsuarioBuilder {

		$this->id_pessoa = $id_pessoa;
		return $this;

	}

	public function setAdicionadoPor(?int $adicionado_por): UsuarioBuilder {

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

	}

	public function setAlteradoPor(?int $alterado_por): UsuarioBuilder {

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

	}

	/**
	 *
	 * @return mixed
	 */
	public function getTipo() {

		return $this->tipo;

	}

	/**
	 *
	 * @param mixed $tipo
	 */
	public function setTipo($tipo): UsuarioBuilder {

		$this->tipo = $tipo;
		return $this;

	}

	/**
	 *
	 * @param array $permissoes
	 * @return UsuarioBuilder
	 */
	public function setPermissoes(array $permissoes): UsuarioBuilder {

		$this->permissoes = $permissoes;
		return $this;

	}

	public function build(): Usuario {

		$usuario = new Usuario();
		if (isset( $this->id )) {
			$usuario->setId( $this->id );
		}
		if (isset( $this->email )) {
			$usuario->setEmail( $this->email );
		}
		if (isset( $this->senha )) {
			$usuario->setSenha( $this->senha );
		}
		if (isset( $this->tipo )) {
			$usuario->setTipo( $this->tipo );
		}
		if (isset( $this->ativo )) {
			$usuario->setAtivo( $this->ativo );
		}
		if (isset( $this->foto )) {
			$usuario->setFoto( $this->foto );
		}
		if (isset( $this->email_verificado_em )) {
			$usuario->setEmailVerificadoEm( $this->email_verificado_em );
		}
		if (isset( $this->criado_em )) {
			$usuario->setCriadoEm( $this->criado_em );
		}
		if (isset( $this->alterado_em )) {
			$usuario->setAlteradoEm( $this->alterado_em );
		}
		if (isset( $this->id_pessoa )) {
			$usuario->setIdPessoa( $this->id_pessoa );
		}
		if (isset( $this->adicionado_por )) {
			$usuario->setAdicionadoPor( $this->adicionado_por );
		}
		if (isset( $this->alterado_por )) {
			$usuario->setAlteradoPor( $this->alterado_por );
		}
		if (isset( $this->permissoes )) {
			$usuario->setPermissoes( $this->permissoes );
		}
		if (isset( $this->senha_chamefacil )) {
			$usuario->setSenhaChameFacil( $this->senha_chamefacil );
		}
		if (isset( $this->documento )) {
			$usuario->setDocumento( $this->documento );
		}
		return $usuario;

	}

}
