File manager - Edit - /var/www/html/portal/app/Http/Controllers/Api/ContratoApiController.php
Back
<?php namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Http\Requests\ContratoPublicFilterRequest; use App\Http\Resources\Api\ContratoApiResource; use App\Models\Contratos\Contrato; use App\Models\Structure; use Illuminate\Http\JsonResponse; class ContratoApiController extends Controller { public function index(ContratoPublicFilterRequest $request) { $filters = $request->validated(); $query = Contrato::query() ->with(['favorecido', 'secretaria', 'secretariaGestora', 'arquivos', 'licitacao']) ->when(!empty($filters['ano']), function ($q) use ($filters) { $q->where('con_ano', (string) $filters['ano']); }) ->when(isset($filters['status']), function ($q) use ($filters) { $q->where('con_status', (int) $filters['status']); }) ->when(!empty($filters['numero']), function ($q) use ($filters) { $term = trim((string) $filters['numero']); $q->where('con_numero', 'like', '%' . $term . '%'); }) ->when(!empty($filters['favorecido']), function ($q) use ($filters) { $term = trim((string) $filters['favorecido']); $q->whereHas('favorecido', function ($favQuery) use ($term) { $favQuery->where('fav_nome', 'like', '%' . $term . '%'); }); }) ->when(!empty($filters['objeto']), function ($q) use ($filters) { $term = trim((string) $filters['objeto']); $q->where('con_titulo', 'like', '%' . $term . '%'); }) ->when(!empty($filters['cpf_cnpj']), function ($q) use ($filters) { $digits = preg_replace('/\D/', '', (string) $filters['cpf_cnpj']); if ($digits !== '') { $q->where('con_favorecido', 'like', '%' . $digits . '%'); } }) ->when(!empty($filters['secretaria_gestora']), function ($q) use ($filters) { $q->where('con_secretaria_gestora', $filters['secretaria_gestora']); }) ->when(!empty($filters['covid']), function ($q) { $q->whereNotNull('con_covid')->where('con_covid', '<>', ''); }) ->when(!empty($filters['busca']), function ($q) use ($filters) { $term = trim((string) $filters['busca']); $q->where(function ($sub) use ($term) { $sub->where('con_numero', 'like', '%' . $term . '%') ->orWhere('con_processo', 'like', '%' . $term . '%') ->orWhere('con_titulo', 'like', '%' . $term . '%'); }); }) ->orderByRaw("CASE WHEN con_datapub IS NULL OR con_datapub = '' THEN 1 ELSE 0 END") ->orderByRaw("STR_TO_DATE(NULLIF(con_datapub, ''), '%d/%m/%Y') DESC") ->orderByDesc('con_ano') ->orderByDesc('created_at'); return ContratoApiResource::collection( $query->paginate((int) ($filters['per_page'] ?? 15)) ); } public function filtros(): JsonResponse { $anos = Contrato::query() ->select('con_ano') ->whereNotNull('con_ano') ->where('con_ano', '<>', '') ->distinct() ->orderByDesc('con_ano') ->pluck('con_ano') ->values(); $modalidades = Contrato::query() ->select('con_modalidade') ->whereNotNull('con_modalidade') ->distinct() ->orderBy('con_modalidade') ->pluck('con_modalidade') ->map(fn ($value) => [ 'value' => (string) $value, 'label' => Contrato::MODALIDADES[(int) $value] ?? (string) $value, ]) ->values(); $status = Contrato::query() ->select('con_status') ->whereNotNull('con_status') ->distinct() ->orderBy('con_status') ->pluck('con_status') ->map(fn ($value) => [ 'value' => (string) $value, 'label' => Contrato::STATUS[(int) $value] ?? (string) $value, ]) ->values(); $secretariasGestoras = Structure::query() ->select(['id', 'name']) ->whereIn( 'id', Contrato::query() ->select('con_secretaria_gestora') ->whereNotNull('con_secretaria_gestora') ->where('con_secretaria_gestora', '<>', '') ->distinct() ) ->where('status', 'ATIVADO') ->orderBy('name') ->get() ->map(fn (Structure $s) => ['value' => (string) $s->id, 'label' => $s->name]) ->values(); $totalAtivos = Contrato::query()->where('con_status', 1)->count(); return response()->json([ 'anos' => $anos, 'modalidades' => $modalidades, 'status' => $status, 'secretarias_gestoras' => $secretariasGestoras, 'total_ativos' => $totalAtivos, 'total' => Contrato::query()->count(), ]); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings