File manager - Edit - /var/www/html/portalHomolog/app/Http/Services/ParqueTecnologico/EditaisService.php
Back
<?php namespace App\Http\Services\ParqueTecnologico; use App\Models\ParqueTecnologico\Edital; use App\Http\Resources\ParqueTecnologico\ParqueTecResource; use Illuminate\Http\Request; use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Http\RedirectResponse; use Illuminate\Support\Facades\DB; class EditaisService { /** * Lista editais com filtro e paginação. */ public function list(Request $request): LengthAwarePaginator { $q = (string) ($request->input('q') ?? ''); $query = Edital::query(); if ($q !== '') { $query->where(function ($qry) use ($q) { $qry->where('titulo', 'like', "%{$q}%") ->orWhere('descricao', 'like', "%{$q}%"); }); } return $query->orderBy('ordem')->orderByDesc('created_at')->paginate(15)->withQueryString(); } /** * Cria um novo edital. */ public function store(array $data, Request $request): RedirectResponse { try { DB::beginTransaction(); $slug = ParqueTecResource::generateUniqueSlugEdital($data['slug'] ?? ($data['titulo'] ?? '')); Edital::create([ 'titulo' => $data['titulo'], 'slug' => $slug, 'descricao' => $data['descricao'] ?? null, 'foto' => ParqueTecResource::getFotoPathEdital($request), 'link' => isset($data['link']) && trim((string) $data['link']) !== '' ? trim($data['link']) : null, 'data_publicacao' => $data['data_publicacao'] ?? null, 'arquivo' => ParqueTecResource::getArquivoPathEdital($request), 'status' => $data['status'] ?? 'ATIVADO', 'ordem' => (int) ($data['ordem'] ?? 0), ]); DB::commit(); return redirect()->route('admin.parqueTecnologico.index', ['tab' => 'editais']) ->with('success', __('Edital criado com sucesso.')); } catch (\Exception $e) { DB::rollBack(); return redirect()->route('admin.parqueTecnologico.editais.create') ->withInput() ->with('error', __('Erro ao cadastrar edital: ') . $e->getMessage()); } } /** * Atualiza edital existente. */ public function update(Edital $edital, array $data, Request $request): RedirectResponse { try { DB::beginTransaction(); $edital->titulo = $data['titulo']; $edital->slug = $edital->slug ?: ParqueTecResource::generateUniqueSlugEdital($data['slug'] ?? $data['titulo']); $edital->descricao = $data['descricao'] ?? $edital->descricao; $edital->link = isset($data['link']) && trim((string) $data['link']) !== '' ? trim($data['link']) : $edital->link; $edital->data_publicacao = $data['data_publicacao'] ?? $edital->data_publicacao; $edital->status = $data['status'] ?? $edital->status; $edital->ordem = (int) ($data['ordem'] ?? $edital->ordem); $fotoPath = ParqueTecResource::getFotoPathEdital($request, $edital); if ($fotoPath !== null && $fotoPath !== $edital->foto) { ParqueTecResource::deleteFotoEditalStorage($edital->foto); $edital->foto = $fotoPath; } $arquivoPath = ParqueTecResource::getArquivoPathEdital($request, $edital); if ($arquivoPath !== null && $arquivoPath !== $edital->arquivo) { ParqueTecResource::deleteArquivoEditalStorage($edital->arquivo); $edital->arquivo = $arquivoPath; } $edital->save(); DB::commit(); return redirect()->route('admin.parqueTecnologico.index', ['tab' => 'editais']) ->with('success', __('Edital atualizado com sucesso.')); } catch (\Exception $e) { DB::rollBack(); return redirect()->route('admin.parqueTecnologico.editais.edit', $edital->id) ->withInput() ->with('error', __('Erro ao atualizar edital: ') . $e->getMessage()); } } /** * Remove edital e arquivos do storage (foto e documento). */ public function destroy(Edital $edital): RedirectResponse { try { DB::beginTransaction(); ParqueTecResource::deleteFotoEditalStorage($edital->foto); ParqueTecResource::deleteArquivoEditalStorage($edital->arquivo); $edital->delete(); DB::commit(); return redirect()->route('admin.parqueTecnologico.index', ['tab' => 'editais']) ->with('success', __('Edital excluído com sucesso.')); } catch (\Exception $e) { DB::rollBack(); return redirect()->route('admin.parqueTecnologico.index', ['tab' => 'editais']) ->with('error', __('Erro ao excluir edital: ') . $e->getMessage()); } } /** * Altera status do edital. * Mantém tab, paginação e filtros no redirect quando chamado da index. */ public function status(Edital $edital, string $status, Request $request): RedirectResponse { try { DB::beginTransaction(); $edital->status = $status; $edital->save(); DB::commit(); $params = array_filter([ 'tab' => 'editais', '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' => 'editais', '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