File manager - Edit - /var/www/html/portalHomolog/app/Models/Mobiangra/MobiangraAlerta.php
Back
<?php namespace App\Models\Mobiangra; use App\Enums\MobiangraAlertaCategoria; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Str; class MobiangraAlerta extends Model { public const TITULO_RESUMO_LIMITE = 72; public const MENSAGEM_RESUMO_LIMITE = 160; protected $table = 'mobiangra_alertas'; protected $fillable = [ 'categoria', 'titulo', 'mensagem', 'publicado_em', 'exibir_ate', 'publicado', ]; protected $casts = [ 'categoria' => MobiangraAlertaCategoria::class, 'publicado_em' => 'datetime', 'exibir_ate' => 'datetime', 'publicado' => 'boolean', ]; /** * Alertas elegíveis para exibição no portal público. */ public function scopeVisivelNoPortal(Builder $query): Builder { $now = now(); return $query ->where('publicado', true) ->where('publicado_em', '<=', $now) ->where(function (Builder $sub) use ($now) { $sub->whereNull('exibir_ate') ->orWhere('exibir_ate', '>=', $now); }); } public function getDataFormatadaAttribute(): 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 getExibirAteFormatadaAttribute(): string { if ($this->exibir_ate === null) { return ''; } return $this->exibir_ate ->locale('pt_BR') ->translatedFormat('d \d\e F \d\e Y • H:i'); } public function getTituloResumidoAttribute(): string { return Str::limit((string) $this->titulo, self::TITULO_RESUMO_LIMITE); } public function mensagemEhDistintaDoTitulo(): bool { $mensagem = $this->normalizarTextoAlerta($this->mensagem); $titulo = $this->normalizarTextoAlerta($this->titulo); return $mensagem !== '' && $mensagem !== $titulo; } public function getMensagemExibicaoAttribute(): string { if (! $this->mensagemEhDistintaDoTitulo()) { return ''; } return $this->normalizarTextoAlerta($this->mensagem); } public function getMensagemResumidaExibicaoAttribute(): string { $mensagem = $this->mensagem_exibicao; if ($mensagem === '') { return ''; } return Str::limit($mensagem, self::MENSAGEM_RESUMO_LIMITE); } public function getMensagemResumidaAttribute(): string { return $this->mensagem_resumida_exibicao; } private function normalizarTextoAlerta(?string $texto): string { return trim(preg_replace('/\s+/u', ' ', strip_tags((string) $texto))); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.01 |
proxy
|
phpinfo
|
Settings