File manager - Edit - /var/www/html/portalHomolog/app/Models/Sei/SeiAlerta.php
Back
<?php namespace App\Models\Sei; use App\Models\User; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; class SeiAlerta extends Model { public const SINGLETON_ID = 1; protected $table = 'sei_alerta'; protected $primaryKey = 'id'; public $incrementing = false; protected $keyType = 'int'; protected $fillable = [ 'conteudo', 'ativo', 'publicado_em', 'exibir_ate', 'user_id', ]; protected $casts = [ 'ativo' => 'boolean', 'publicado_em' => 'datetime', 'exibir_ate' => 'datetime', ]; public function usuario(): BelongsTo { return $this->belongsTo(User::class, 'user_id', 'id'); } /** * Alerta elegível para exibição no portal público SEI. */ public function scopeVisivelNoPortal(Builder $query): Builder { $now = now(); return $query ->where('ativo', true) ->whereNotNull('conteudo') ->where('conteudo', '!=', '') ->where('publicado_em', '<=', $now) ->where(function (Builder $sub) use ($now) { $sub->whereNull('exibir_ate') ->orWhere('exibir_ate', '>=', $now); }); } public function estaProgramado(): bool { if (! $this->ativo || $this->publicado_em === null) { return false; } return $this->publicado_em->isFuture(); } public function estaExpirado(): bool { if (! $this->ativo || $this->exibir_ate === null) { return false; } return $this->exibir_ate->isPast(); } public function estaExibindoNoPortal(): bool { if (! $this->ativo || trim((string) $this->conteudo) === '') { return false; } if ($this->publicado_em === null || $this->publicado_em->isFuture()) { return false; } if ($this->exibir_ate !== null && $this->exibir_ate->isPast()) { return false; } return true; } /** * Situação atual do aviso para exibição no admin. * * @return 'inativo'|'programado'|'exibindo'|'expirado' */ public function situacaoExibicao(): string { if (! $this->ativo) { return 'inativo'; } if ($this->estaProgramado()) { return 'programado'; } if ($this->estaExpirado()) { return 'expirado'; } if ($this->estaExibindoNoPortal()) { return 'exibindo'; } return 'inativo'; } public function getSituacaoExibicaoLabelAttribute(): string { return match ($this->situacaoExibicao()) { 'programado' => __('Programado'), 'exibindo' => __('Exibindo'), 'expirado' => __('Expirado'), default => __('Inativo'), }; } public function getPublicadoEmFormatadoAttribute(): string { if ($this->publicado_em === null) { return ''; } return $this->publicado_em ->locale('pt_BR') ->translatedFormat('d \d\e F \d\e Y • H:i'); } public function getExibirAteFormatadoAttribute(): string { if ($this->exibir_ate === null) { return ''; } return $this->exibir_ate ->locale('pt_BR') ->translatedFormat('d \d\e F \d\e Y • H:i'); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings