File manager - Edit - /var/www/html/portalHomolog/app/Http/Services/ParqueTecnologico/DecretosLeisService.php
Back
<?php namespace App\Http\Services\ParqueTecnologico; use App\Models\ParqueTecnologico\DecretoLei; use App\Http\Resources\ParqueTecnologico\ParqueTecResource; use Illuminate\Http\Request; use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Http\RedirectResponse; use Illuminate\Support\Facades\DB; class DecretosLeisService { /** * Lista decretos/leis com filtro e paginação. */ public function list(Request $request): LengthAwarePaginator { $q = (string) ($request->input('q') ?? ''); $query = DecretoLei::query(); if ($q !== '') { $query->where(function ($qry) use ($q) { $qry->where('titulo', 'like', "%{$q}%") ->orWhere('descricao', 'like', "%{$q}%") ->orWhere('numero_lei', 'like', "%{$q}%"); }); } return $query->orderBy('ordem')->orderByDesc('created_at')->paginate(15)->withQueryString(); } /** * Cria um novo decreto/lei. */ public function store(array $data, Request $request): RedirectResponse { try { DB::beginTransaction(); $slug = ParqueTecResource::generateUniqueSlugDecretoLei($data['slug'] ?? ($data['titulo'] ?? '')); DecretoLei::create([ 'titulo' => $data['titulo'], 'slug' => $slug, 'descricao' => $data['descricao'] ?? null, 'numero_lei' => $data['numero_lei'] ?? null, 'data_publicacao' => $data['data_publicacao'] ?? null, 'arquivo' => ParqueTecResource::getArquivoPathDecretoLei($request), 'status' => $data['status'] ?? 'ATIVADO', 'ordem' => (int) ($data['ordem'] ?? 0), ]); DB::commit(); return redirect()->route('admin.parqueTecnologico.index', ['tab' => 'decretos']) ->with('success', __('Decreto/Lei criado com sucesso.')); } catch (\Exception $e) { DB::rollBack(); return redirect()->route('admin.parqueTecnologico.decretosLeis.create') ->withInput() ->with('error', __('Erro ao cadastrar decreto/lei: ') . $e->getMessage()); } } /** * Atualiza decreto/lei existente. */ public function update(DecretoLei $decretoLei, array $data, Request $request): RedirectResponse { try { DB::beginTransaction(); $decretoLei->titulo = $data['titulo']; $decretoLei->slug = $decretoLei->slug ?: ParqueTecResource::generateUniqueSlugDecretoLei($data['slug'] ?? $data['titulo']); $decretoLei->descricao = $data['descricao'] ?? $decretoLei->descricao; $decretoLei->numero_lei = $data['numero_lei'] ?? $decretoLei->numero_lei; $decretoLei->data_publicacao = $data['data_publicacao'] ?? $decretoLei->data_publicacao; $decretoLei->status = $data['status'] ?? $decretoLei->status; $decretoLei->ordem = (int) ($data['ordem'] ?? $decretoLei->ordem); $path = ParqueTecResource::getArquivoPathDecretoLei($request, $decretoLei); if ($path !== null && $path !== $decretoLei->arquivo) { ParqueTecResource::deleteArquivoDecretoLeiStorage($decretoLei->arquivo); $decretoLei->arquivo = $path; } $decretoLei->save(); DB::commit(); return redirect()->route('admin.parqueTecnologico.index', ['tab' => 'decretos']) ->with('success', __('Decreto/Lei atualizado com sucesso.')); } catch (\Exception $e) { DB::rollBack(); return redirect()->route('admin.parqueTecnologico.decretosLeis.edit', $decretoLei->id) ->withInput() ->with('error', __('Erro ao atualizar decreto/lei: ') . $e->getMessage()); } } /** * Remove decreto/lei e arquivo do storage. */ public function destroy(DecretoLei $decretoLei): RedirectResponse { try { DB::beginTransaction(); ParqueTecResource::deleteArquivoDecretoLeiStorage($decretoLei->arquivo); $decretoLei->delete(); DB::commit(); return redirect()->route('admin.parqueTecnologico.index', ['tab' => 'decretos']) ->with('success', __('Decreto/Lei excluído com sucesso.')); } catch (\Exception $e) { DB::rollBack(); return redirect()->route('admin.parqueTecnologico.index', ['tab' => 'decretos']) ->with('error', __('Erro ao excluir decreto/lei: ') . $e->getMessage()); } } /** * Altera status do decreto/lei. * Mantém tab, paginação e filtros no redirect quando chamado da index. */ public function status(DecretoLei $decretoLei, string $status, Request $request): RedirectResponse { try { DB::beginTransaction(); $decretoLei->status = $status; $decretoLei->save(); DB::commit(); $params = array_filter([ 'tab' => 'decretos', 'page_editais' => $request->input('page_editais'), 'page_decretos' => $request->input('page_decretos'), 'q_editais' => $request->input('q_editais'), 'q_decretos' => $request->input('q_decretos'), ], fn ($v) => $v !== null && $v !== ''); return redirect()->route('admin.parqueTecnologico.index', $params) ->with('success', __('Status atualizado com sucesso.')); } catch (\Exception $e) { DB::rollBack(); $params = array_filter([ 'tab' => 'decretos', 'page_editais' => $request->input('page_editais'), 'page_decretos' => $request->input('page_decretos'), 'q_editais' => $request->input('q_editais'), 'q_decretos' => $request->input('q_decretos'), ], fn ($v) => $v !== null && $v !== ''); return redirect()->route('admin.parqueTecnologico.index', $params) ->with('error', __('Erro ao atualizar status: ') . $e->getMessage()); } } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings