File manager - Edit - /var/www/html/portal/app/Models/Cultura/Credenciamento/Musico.php
Back
<?php namespace App\Models\Cultura\Credenciamento; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Notifications\Notifiable; use Laravel\Sanctum\HasApiTokens; use Illuminate\Support\Str; use DateTimeInterface; use App\Models\Endereco; //use App\Enums\EsfCadastro; class Musico extends Model { use HasApiTokens, HasFactory, Notifiable; protected $connection = 'mysql'; public $incrementing = false; protected $keyType = 'string'; protected $table = 'musicos'; const CREATED_AT = 'created_at'; const UPDATED_AT = 'updated_at'; protected $fillable = [ 'id', 'created_at', 'updated_at', 'user_id', 'registroMusico', 'dtaExpedicaoRegistroMusico', 'carteirinha', 'statusCadastro', 'biografiaArtistica', 'status', 'tipo_pessoa', 'empresa_id', 'grupo_nome', 'data_credenciamento', 'data_expiracao', 'filePortfolio', 'fileRepertorio', 'fileIntegrantes', 'fileAnexoIV', 'fileAnexoV', 'fileAnexoVI', ]; public function user() { return $this->belongsTo(\App\Models\User::class); } public function chamados() { return $this->hasMany(\App\Models\Accounts\Chamados\Chamado::class, 'credenciamento_id', 'id') ->orderByDesc('created_at'); } public function endereco() { return $this->hasOne(Endereco::class, 'owner_id', 'id') ->orderBy('created_at', 'desc'); } public function grupos() { return $this->hasMany(MusicoGrupo::class); } public function integrantes() { return $this->hasMany(MusicoIntegrante::class); } public function avaliacao() { return $this->hasOne(MusicoAvaliacao::class); } public function links() { return $this->hasMany(MusicoLink::class); } public function aprovacoes() { return $this->hasMany(MusicoAprovacao::class); } public function estilos() { return $this->belongsToMany(EstiloMusical::class, 'musico_estilos', 'musico_id', 'estilo_id') ->withTimestamps(); } public function empresas() { return $this->belongsToMany(\App\Models\Empresa::class, 'musico_empresas', 'musico_id', 'empresa_id') ->withTimestamps(); } public function documentosCredenciamento() { return $this->hasMany(DocumentoCredenciamento::class, 'musico_id'); } public function convocacoes() { return $this->hasMany(ConvocacaoCredenciamento::class, 'musico_id')->orderByDesc('created_at'); } /** Credenciamento está com status Expirado (por data ou statusCadastro). */ public function isExpirado(): bool { if ($this->statusCadastro === 'Expirado') { return true; } if ($this->data_expiracao) { return \Carbon\Carbon::parse($this->data_expiracao)->isPast(); } return false; } /** Dias até data_expiracao; null se não houver data. */ public function diasParaExpiracao(): ?int { if (!$this->data_expiracao) { return null; } return (int) now()->startOfDay()->diffInDays(\Carbon\Carbon::parse($this->data_expiracao)->startOfDay(), false); } /** Verdadeiro se data_expiracao está dentro dos próximos $dias dias (e não expirado). */ public function vencimentoProximo(int $dias = 30): bool { if ($this->isExpirado()) { return false; } $d = $this->diasParaExpiracao(); return $d !== null && $d >= 0 && $d <= $dias; } /** Credenciados elegíveis para convocação: Artista Credenciado e não expirado. */ public function scopeElegivelConvocacao($query) { return $query->where('statusCadastro', 'Artista Credenciado') ->where(function ($q) { $q->whereNull('data_expiracao') ->orWhere('data_expiracao', '>=', now()->toDateString()); }); } // public function laudos() { // return $this->hasMany(FibromialgiaLaudo::class, 'fibromialgia_id', 'id') // ->orderBy('created_at', 'desc'); // } public static function boot() { parent::boot(); static::creating(function ($model) { $model->id = Str::uuid(); }); } 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.01 |
proxy
|
phpinfo
|
Settings