File manager - Edit - /var/www/html/portalHomolog/app/Models/User.php
Back
<?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use App\Models\CastracaoAnimal\Tutor; use App\Models\Saude\Fibromialgia\FibromialgiaMensagem; use Laravel\Sanctum\HasApiTokens; use Illuminate\Support\Str; use DateTimeInterface; class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable; protected $connection = 'mysql'; public $incrementing = false; protected $keyType = 'string'; protected $table = 'users'; const CREATED_AT = 'created_at'; const UPDATED_AT = 'updated_at'; protected $fillable = [ 'id', 'created_at', 'updated_at', 'structure_id', 'firstName', 'lastName', 'cpf', 'matriculation', 'phoneNumber', 'email', 'password', 'email_verified_at', 'remember_token', 'govbr_sub', 'govbr_access_token', 'govbr_refresh_token', 'govbr_id_token', 'govbr_email', 'photo', 'status', 'isPasswordDefault', 'isServidorPublico', 'isWhatsapp', ]; /** * The attributes that should be hidden for serialization. * * @var array<int, string> */ protected $hidden = [ 'password', 'remember_token', ]; /** * The attributes that should be cast. * * @var array<string, string> */ protected $casts = [ 'email_verified_at' => 'datetime', 'password' => 'hashed', 'isWhatsapp' => 'boolean', ]; private function formatarNome(string $nome): string { $nome = mb_strtolower($nome); $particulas = ['da', 'de', 'do', 'dos', 'das']; $nome = explode(' ', $nome); foreach ($nome as &$palavra) { if (!in_array($palavra, $particulas)) { $palavra = ucfirst($palavra); } } return implode(' ', $nome); } private function formatarTelefone(?string $numero): ?string { if (empty($numero)) { return null; } // Remove tudo que não for número $digits = preg_replace('/\D/', '', $numero); $len = strlen($digits); // CASOS SEM DDD if ($len === 8) { // Fixo: XXXX-XXXX return preg_replace('/(\d{4})(\d{4})/', '$1-$2', $digits); } elseif ($len === 9) { // Celular: 9XXXX-XXXX return preg_replace('/(\d{1})(\d{4})(\d{4})/', '$1$2-$3', $digits); } // CASOS COM DDD if ($len === 10) { // Fixo com DDD: (XX) XXXX-XXXX return preg_replace('/(\d{2})(\d{4})(\d{4})/', '($1) $2-$3', $digits); } elseif ($len === 11) { // Celular com DDD: (XX) 9XXXX-XXXX return preg_replace('/(\d{2})(\d{1})(\d{4})(\d{4})/', '($1) $2$3-$4', $digits); } // Caso não bata com nenhum padrão conhecido return $numero; } private function formatarCPF(?string $value): ?string { if (empty($value)) { return $value; } // Remove tudo que não seja número $value = preg_replace('/\D/', '', $value); // CPF deve ter exatamente 11 dígitos if (strlen($value) !== 11) { return $value; // retorna sem formatar se tamanho for inválido } // Aplica a máscara ###.###.###-## return preg_replace( '/(\d{3})(\d{3})(\d{3})(\d{2})/', '$1.$2.$3-$4', $value ); } public function getNameAttribute(): string { $first = trim((string) ($this->firstName ?? '')); $last = trim((string) ($this->lastName ?? '')); $full = trim("{$first} {$last}"); if ($full === '') { return ''; } return $this->formatarNome($full); } public function getEmailAttribute(): ?string { $email = $this->attributes['email'] ?? null; if ($email === null || $email === '') { return null; } return mb_strtolower($email); } public function getPhoneNumberAttribute() { return $this->formatarTelefone($this->attributes["phoneNumber"]); } public function getCpfAttribute() { return $this->formatarCPF($this->attributes["cpf"]);; } public function setCpfAttribute($value) { $this->attributes['cpf'] = preg_replace('/[^0-9]/', '', $value); } public function pertence() { return $this->belongsTo(Structure::class, "structure_id"); } public function unidades() { return $this->belongsToMany(\App\Models\UnidadeOrganizacional::class, 'user_unidade_organizacional', 'user_id', 'unidade_organizacional_id') ->withTimestamps(); } public function empresas() { return $this->belongsToMany(Empresa::class, 'user_empresa', 'user_id', 'empresa_id') ->withTimestamps(); } public static function boot() { parent::boot(); static::creating(function ($model) { $model->id = Str::uuid(); }); } public function permissoes() { return $this->hasMany(\App\Models\Permissao::class, 'user_id', 'id'); } public function listaPermissoes(): array { return $this->permissoes()->pluck('permissao')->toArray(); } public function listaPermissoesAtivas(): array { return $this->permissoes() ->where('status', 'ATIVADO') ->pluck('permissao') ->toArray(); } public function getPermissaoDetalhes(string $permissao): array { $registro = $this->permissoes() ->where('permissao', $permissao) ->first(); if (!$registro) { return [ 'visualizar' => false, 'adicionar' => false, 'editar' => false, 'excluir' => false, ]; } return [ 'visualizar' => (bool) $registro->visualizar, 'adicionar' => (bool) $registro->adicionar, 'editar' => (bool) $registro->editar, 'excluir' => (bool) $registro->excluir, ]; } public function guia() { return $this->hasOne(\App\Models\TurisAngra\Guias\Guia::class, 'owner_id', 'id'); } public function tutor() { return $this->hasOne(\App\Models\MeioAmbiente\CastracaoAnimal\Tutor::class, 'owner_id', 'id'); } public function FluxoOnibus() { return $this->hasOne(\App\Models\FluxoOnibus::class, 'owner_id', 'id'); } public function fibromialgia() { return $this->hasOne(\App\Models\Saude\Fibromialgia\Fibromialgia::class, 'user_id', 'id'); } public function musicos() { return $this->hasMany(\App\Models\Cultura\Credenciamento\Musico::class, 'user_id', 'id'); } /** @deprecated Use musicos() for multiple credenciamentos. Retorna o primeiro credenciamento para compatibilidade. */ public function musico() { return $this->hasOne(\App\Models\Cultura\Credenciamento\Musico::class, 'user_id', 'id')->oldest(); } public function pessoa() { return $this->hasOne(Pessoa::class, 'user_id'); } public function laudosFibromialgia() { return $this->hasMany(FibromialgiaLaudo::class, 'user_id'); } public function fibromialgiamensagens() { return $this->hasMany(FibromialgiaMensagem::class); } public function criadoPor() { return $this->belongsTo(Endereco::class, 'user_id', 'id'); } public function endereco() { return $this->hasOne(Endereco::class, 'owner_id', 'id') ->orderBy('created_at', 'desc'); } public function enderecos() { return $this->hasMany(Endereco::class, 'owner_id', 'id'); } public function dono() { return $this->belongsTo(User::class, 'owner_id', 'id'); } public function enderecosComoDono() { return $this->hasMany(Endereco::class, 'owner_id', 'id'); } protected function serializeDate(DateTimeInterface $date) { return $date->format('Y-m-d H:i:s'); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings