File manager - Edit - /var/www/html/portalHomolog/app/Http/Services/Empresas/EmpresaService.php
Back
<?php namespace App\Http\Services\Empresas; use App\Http\Requests\Empresas\EmpresaRequest; use App\Models\Empresa; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Pagination\LengthAwarePaginator; /** * Persistência e consultas do módulo Empresas. */ class EmpresaService { private const PER_PAGE = 50; /** * Lista empresas com paginação e filtro de busca. */ public function paginate(EmpresaRequest $request): LengthAwarePaginator { $query = Empresa::query()->orderByDesc('created_at'); if ($request->filled('q')) { $q = trim((string) $request->q); $cnpjDigits = preg_replace('/\D/', '', $q); $query->where(function ($builder) use ($q, $cnpjDigits) { $builder->where('razaoSocial', 'like', "%{$q}%") ->orWhere('numeroInscricaoMunicipal', 'like', "%{$q}%") ->orWhere('nomeFantasia', 'like', "%{$q}%") ->orWhere('email', 'like', "%{$q}%") ->orWhere('celular', 'like', "%{$q}%") ->orWhere('telefone', 'like', "%{$q}%"); if ($cnpjDigits !== '') { $builder->orWhere('cnpj', 'like', "%{$cnpjDigits}%"); } }); } return $query->paginate(self::PER_PAGE)->withQueryString(); } /** * Parâmetros de listagem preservados entre operações. * * @return array<string, mixed> */ public static function listFilterParamsFromRequest(Request $request): array { return array_filter([ 'q' => $request->input('q'), 'page' => $request->input('page'), ], static fn ($value) => $value !== null && $value !== ''); } /** * Redireciona para a listagem preservando filtros ativos. */ public function redirectToIndex(Request $request, string $successMessage): RedirectResponse { return redirect() ->route('admin.empresas.index', self::listFilterParamsFromRequest($request)) ->with('success', $successMessage); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings