File manager - Edit - /var/www/html/portal/app/Http/Services/Sei/SeiAlertaService.php
Back
<?php namespace App\Http\Services\Sei; use App\Models\Sei\SeiAlerta; use App\Models\Sei\SeiAlertaHistorico; use Illuminate\Contracts\Pagination\LengthAwarePaginator; use Illuminate\Support\Facades\DB; class SeiAlertaService { public function obterAlerta(): SeiAlerta { return SeiAlerta::query()->findOrFail(SeiAlerta::SINGLETON_ID); } public function listarHistorico(int $porPagina = 15): LengthAwarePaginator { return SeiAlertaHistorico::query() ->with('usuario') ->orderByDesc('created_at') ->paginate($porPagina) ->withQueryString(); } public function atualizar(SeiAlerta $alerta, array $dados, string $userId): SeiAlerta { return DB::transaction(function () use ($alerta, $dados, $userId): SeiAlerta { $alerta->update([ 'conteudo' => $dados['conteudo'], 'publicado_em' => $dados['publicado_em'], 'exibir_ate' => $dados['exibir_ate'] ?? null, 'ativo' => filter_var($dados['ativo'] ?? false, FILTER_VALIDATE_BOOLEAN), 'user_id' => $userId, ]); $this->registrarHistorico($alerta, SeiAlertaHistorico::ACAO_ATUALIZACAO); return $alerta->fresh(['usuario']); }); } public function alternarStatus(SeiAlerta $alerta, string $userId): SeiAlerta { return DB::transaction(function () use ($alerta, $userId): SeiAlerta { $novoStatus = ! $alerta->ativo; $dadosAtualizacao = [ 'ativo' => $novoStatus, 'user_id' => $userId, ]; if ($novoStatus && $alerta->publicado_em === null) { $dadosAtualizacao['publicado_em'] = now(); } $alerta->update($dadosAtualizacao); $this->registrarHistorico($alerta, SeiAlertaHistorico::ACAO_STATUS); return $alerta->fresh(['usuario']); }); } private function registrarHistorico(SeiAlerta $alerta, string $acao): void { if (! in_array($acao, [SeiAlertaHistorico::ACAO_ATUALIZACAO, SeiAlertaHistorico::ACAO_STATUS], true)) { return; } SeiAlertaHistorico::create([ 'user_id' => $alerta->user_id, 'conteudo' => $alerta->conteudo, 'ativo' => $alerta->ativo, 'publicado_em' => $alerta->publicado_em, 'exibir_ate' => $alerta->exibir_ate, 'acao' => $acao, 'created_at' => now(), ]); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings