File manager - Edit - /var/www/html/portalHomolog/app/Http/Services/ParqueTecnologico/StartupsService.php
Back
<?php namespace App\Http\Services\ParqueTecnologico; use App\Http\Resources\ParqueTecnologico\ParqueTecResource; use App\Models\ParqueTecnologico\Startup; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Support\Facades\DB; class StartupsService { /** * Lista startups com filtro e paginação. */ public function list(Request $request): LengthAwarePaginator { $q = (string) ($request->input('q') ?? ''); $segmento = (string) ($request->input('segmento') ?? ''); $query = Startup::query(); if ($q !== '') { $query->where(function ($qry) use ($q) { $qry->where('nome', 'like', "%{$q}%") ->orWhere('descricao', 'like', "%{$q}%"); }); } if ($segmento !== '') { $query->where('segmento', $segmento); } return $query ->orderBy('ordem') ->orderBy('nome') ->paginate(15) ->withQueryString(); } /** * Cria uma nova startup. */ public function store(array $data, Request $request): RedirectResponse { try { DB::beginTransaction(); $slug = ParqueTecResource::generateUniqueSlugStartup($data['slug'] ?? ($data['nome'] ?? '')); Startup::create([ 'nome' => $data['nome'], 'slug' => $slug, 'descricao' => $data['descricao'] ?? null, 'logo' => ParqueTecResource::getLogoPathStartup($request), 'segmento' => $data['segmento'], 'background' => ParqueTecResource::getBackgroundPathStartup($request), 'email' => $data['email'], 'telefone' => $data['telefone'] ?? null, 'rede_social' => $data['rede_social'] ?? null, 'link_site' => $data['link_site'] ?? null, 'status' => $data['status'] ?? 'ATIVADO', 'ordem' => (int) ($data['ordem'] ?? 0), ]); DB::commit(); return redirect() ->route('admin.parqueTecnologico.index', ['tab' => 'startups']) ->with('success', __('Startup criada com sucesso.')); } catch (\Exception $e) { DB::rollBack(); return redirect() ->route('admin.parqueTecnologico.startups.create') ->withInput() ->with('error', __('Erro ao cadastrar startup: ') . $e->getMessage()); } } /** * Atualiza uma startup existente. */ public function update(Startup $startup, array $data, Request $request): RedirectResponse { try { DB::beginTransaction(); $startup->nome = $data['nome']; $startup->slug = $startup->slug ?: ParqueTecResource::generateUniqueSlugStartup($data['slug'] ?? $data['nome']); $startup->descricao = $data['descricao'] ?? $startup->descricao; $startup->segmento = $data['segmento'] ?? $startup->segmento; $startup->email = $data['email'] ?? $startup->email; $startup->telefone = $data['telefone'] ?? $startup->telefone; $startup->rede_social = $data['rede_social'] ?? $startup->rede_social; $startup->link_site = $data['link_site'] ?? $startup->link_site; $startup->status = $data['status'] ?? $startup->status; $startup->ordem = (int) ($data['ordem'] ?? $startup->ordem); $logoPath = ParqueTecResource::getLogoPathStartup($request, $startup); if ($logoPath !== null && $logoPath !== $startup->logo) { ParqueTecResource::deleteLogoStartupStorage($startup->logo); $startup->logo = $logoPath; } $bgPath = ParqueTecResource::getBackgroundPathStartup($request, $startup); if ($bgPath !== null && $bgPath !== $startup->background) { ParqueTecResource::deleteBackgroundStartupStorage($startup->background); $startup->background = $bgPath; } $startup->save(); DB::commit(); return redirect() ->route('admin.parqueTecnologico.index', ['tab' => 'startups']) ->with('success', __('Startup atualizada com sucesso.')); } catch (\Exception $e) { DB::rollBack(); return redirect() ->route('admin.parqueTecnologico.startups.edit', $startup->id) ->withInput() ->with('error', __('Erro ao atualizar startup: ') . $e->getMessage()); } } /** * Remove startup e arquivos do storage (logo e background). */ public function destroy(Startup $startup): RedirectResponse { try { DB::beginTransaction(); ParqueTecResource::deleteLogoStartupStorage($startup->logo); ParqueTecResource::deleteBackgroundStartupStorage($startup->background); $startup->delete(); DB::commit(); return redirect() ->route('admin.parqueTecnologico.index', ['tab' => 'startups']) ->with('success', __('Startup excluída com sucesso.')); } catch (\Exception $e) { DB::rollBack(); return redirect() ->route('admin.parqueTecnologico.index', ['tab' => 'startups']) ->with('error', __('Erro ao excluir startup: ') . $e->getMessage()); } } /** * Altera status da startup. */ public function status(Startup $startup, string $status, Request $request): RedirectResponse { try { DB::beginTransaction(); $startup->status = $status; $startup->save(); DB::commit(); $params = array_filter([ 'tab' => 'startups', 'page_startups' => $request->input('page_startups'), 'q_startups' => $request->input('q_startups'), 'segmento' => $request->input('segmento'), ], static 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' => 'startups', 'page_startups' => $request->input('page_startups'), 'q_startups' => $request->input('q_startups'), 'segmento' => $request->input('segmento'), ], static 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