File manager - Edit - /var/www/html/portal/app/Http/Controllers/Api/LicitacaoProcedimentoApiController.php
Back
<?php namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Http\Resources\Api\LicitacaoProcedimentoApiResource; use App\Models\LicitacoesProcedimentos\Processo; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Validation\Rule; class LicitacaoProcedimentoApiController extends Controller { public function index(Request $request) { $request->validate([ 'ano' => ['nullable', 'integer'], 'instituicao' => ['nullable', 'string', 'max:120'], 'tipo_processo' => ['nullable', Rule::in(Processo::TIPOS_PROCESSO)], 'tipo' => ['nullable', 'integer'], 'modalidade' => ['nullable', 'string', 'max:60'], 'status' => ['nullable', 'integer'], 'busca' => ['nullable', 'string', 'max:255'], 'favorecido' => ['nullable', 'string', 'max:255'], 'per_page' => ['nullable', 'integer', 'min:1', 'max:100'], ]); $query = Processo::query() ->with('uploads') ->when($request->filled('ano'), function ($q) use ($request) { $q->whereYear('dt_data', (int) $request->input('ano')); }) ->when($request->filled('instituicao'), function ($q) use ($request) { $value = trim((string) $request->input('instituicao')); if (ctype_digit($value)) { $ids = Processo::getSetorIdsForFilter((int) $value); if (!empty($ids)) { $q->whereIn('id_setor', $ids); } } }) ->when($request->filled('tipo_processo'), function ($q) use ($request) { $q->where('tipo_processo', (string) $request->input('tipo_processo')); }) ->when( $request->filled('tipo_processo') && $request->filled('tipo'), function ($q) use ($request) { $q->where('cd_tipo', (int) $request->input('tipo')); } ) ->when( !$request->filled('tipo_processo') && $request->filled('modalidade'), function ($q) use ($request) { $q->where('cd_tipo', (int) $request->input('modalidade')); } ) ->when($request->filled('status'), function ($q) use ($request) { $q->where('cd_status', (int) $request->input('status')); }) ->when($request->filled('busca'), function ($q) use ($request) { $termo = trim((string) $request->input('busca')); $q->where(function ($sub) use ($termo) { $sub->where('nr_processo', 'like', "%{$termo}%") ->orWhere('nr_licitacao', 'like', "%{$termo}%") ->orWhere('ds_objeto', 'like', "%{$termo}%"); }); }) ->when($request->filled('favorecido'), function ($q) use ($request) { $q->where('ds_favorecido', 'like', '%' . trim((string) $request->input('favorecido')) . '%'); }) ->orderByDesc('id'); $paginated = $query->paginate((int) $request->input('per_page', 15)); return LicitacaoProcedimentoApiResource::collection($paginated); } public function filtros(): JsonResponse { $anos = Processo::query() ->select(DB::raw('YEAR(dt_data) as ano')) ->whereNotNull('dt_data') ->distinct() ->orderByDesc('ano') ->pluck('ano') ->filter() ->values(); $instituicoes = Processo::query() ->select('id_setor') ->whereNotNull('id_setor') ->distinct() ->orderBy('id_setor') ->pluck('id_setor') ->map(fn ($value) => Processo::getSetorOptionById((int) $value)) ->filter() ->unique('value') ->sortBy('label') ->values(); $modalidades = Processo::query() ->select(['tipo_processo', 'cd_tipo']) ->whereNotNull('cd_tipo') ->distinct() ->orderBy('tipo_processo') ->orderBy('cd_tipo') ->get() ->map(function ($item) { $tipo = (string) $item->tipo_processo; $codigo = (int) $item->cd_tipo; $label = $tipo === 'licitacao' ? (Processo::TIPOS_LICITACAO[$codigo] ?? (string) $codigo) : (Processo::getProcedimentoLabelByCdTipo($codigo) ?? (string) $codigo); if (in_array(mb_strtolower($label), [ 'dispensa p/ lei 14133', 'aviso de dispensa p/ lei 14133', 'aviso de sispensa p/ lei 14133', ], true)) { $label = 'Dispensa p/ Lei 14133'; } return [ 'value' => (string) $codigo, 'label' => $label, ]; }) ->unique('label') ->values(); $status = Processo::query() ->select(['tipo_processo', 'cd_status']) ->whereNotNull('cd_status') ->distinct() ->orderBy('tipo_processo') ->orderBy('cd_status') ->get() ->map(function ($item) { $tipo = (string) $item->tipo_processo; $codigo = (int) $item->cd_status; $label = $tipo === 'licitacao' ? (Processo::STATUS_LICITACAO[$codigo] ?? (string) $codigo) : (Processo::STATUS_PROCEDIMENTO[$codigo] ?? (string) $codigo); return [ 'value' => (string) $codigo, 'label' => $label, ]; }) ->unique('label') ->values(); return response()->json([ 'anos' => $anos, 'instituicoes' => $instituicoes, 'modalidades' => $modalidades, 'status' => $status, ]); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings