<?php

namespace App\Entities\Usuario;

use App\Entities\Paciente\Paciente;
use App\Entities\Perfil\Perfil;
use App\Models\PacienteModel;
use App\Models\PessoaModel;
use App\Models\UsuarioModel;
use App\Utils\Entity;

class Usuario extends Entity {
	protected $id;
	protected $email;
	protected $senha;
	protected $ativo;
	protected $foto;
	protected $email_verificado_em;
	protected $criado_em;
	protected $alterado_em;
	protected $id_pessoa;
	protected $adicionado_por;
	protected $alterado_por;
	protected $tipo;
	protected $permissoes;
	protected $senha_chamefacil;
	protected $documento;

	public static function builder(): UsuarioBuilder {

		return new UsuarioBuilder();

	}

	public function getSenhaChameFacil(): string {

		return $this->senha_chamefacil;

	}

	public function setSenhaChameFacil(string $senha_chamefacil): void {

		$this->senha_chamefacil = $senha_chamefacil;

	}

	public function getDocumento(): string {

		return $this->documento;

	}

	public function setDocumento($documento): void {

		$this->documento = $documento;

	}

	public function getId(): int {

		return $this->id;

	}

	public function getEmail(): string {

		return $this->email;

	}

	public function getTipo(): string {

		return $this->tipo;

	}

	public function getSenha(): string {

		return $this->senha;

	}

	public function getAtivo(): int {

		return $this->ativo;

	}

	public function getFoto(): string {

		return $this->foto;

	}

	public function getEmailVerificadoEm(): ?string {

		return $this->email_verificado_em;

	}

	public function getCriadoEm(): ?string {

		return $this->criado_em;

	}

	public function getAlteradoEm(): ?string {

		return $this->alterado_em;

	}

	public function getIdPessoa(): int {

		return $this->id_pessoa;

	}

	public function getAdicionadoPor(): ?int {

		return $this->adicionado_por;

	}

	public function getAlteradoPor(): ?int {

		return $this->alterado_por;

	}

	public function setId(int $id): void {

		$this->id = $id;

	}

	public function setEmail(string $email): void {

		$this->email = $email;

	}

	public function setSenha(string $senha): void {

		$this->senha = $senha;

	}

	public function setAtivo(int $ativo): void {

		$this->ativo = $ativo;

	}

	public function setFoto($foto): void {

		$this->foto = $foto;

	}

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

		$this->email_verificado_em = $email_verificado_em;

	}

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

		$this->criado_em = $criado_em;

	}

	public function setTipo($tipo): void {

		$this->tipo = $tipo;

	}

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

		$this->alterado_em = $alterado_em;

	}

	public function setIdPessoa(int $id_pessoa): void {

		$this->id_pessoa = $id_pessoa;

	}

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

		$this->adicionado_por = $adicionado_por;

	}

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

		$this->alterado_por = $alterado_por;

	}

	/**
	 *
	 * @return array
	 */
	public function getPermissoes(): array {

		return $this->permissoes;

	}

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

		$this->permissoes = $permissoes;

	}

}
