fix(selos): normalizar filtro de selos para case-insensitive
Converte selos para uppercase em todas as camadas (frontend, API e repository) para garantir que o filtro funcione independente de como o usuário digita ou seleciona os selos.
This commit is contained in:
@@ -97,8 +97,8 @@ class RankingOracleRepository:
|
|||||||
if filtro_selos:
|
if filtro_selos:
|
||||||
for i, selo in enumerate(filtro_selos):
|
for i, selo in enumerate(filtro_selos):
|
||||||
param_name = f"selo_{i}"
|
param_name = f"selo_{i}"
|
||||||
where_clauses.append(f"((',' || SELOS || ',') LIKE '%,' || :{param_name} || ',%')")
|
where_clauses.append(f"((',' || UPPER(SELOS) || ',') LIKE '%,' || :{param_name} || ',%')")
|
||||||
params[param_name] = selo
|
params[param_name] = str(selo).upper()
|
||||||
|
|
||||||
where_clause = ""
|
where_clause = ""
|
||||||
if where_clauses:
|
if where_clauses:
|
||||||
@@ -175,8 +175,8 @@ class RankingOracleRepository:
|
|||||||
if filtro_selos:
|
if filtro_selos:
|
||||||
for i, selo in enumerate(filtro_selos):
|
for i, selo in enumerate(filtro_selos):
|
||||||
param_name = f"selo_{i}"
|
param_name = f"selo_{i}"
|
||||||
where_clauses.append(f"((',' || SELOS || ',') LIKE '%,' || :{param_name} || ',%')")
|
where_clauses.append(f"((',' || UPPER(SELOS) || ',') LIKE '%,' || :{param_name} || ',%')")
|
||||||
params[param_name] = selo
|
params[param_name] = str(selo).upper()
|
||||||
|
|
||||||
where_clause = ""
|
where_clause = ""
|
||||||
if where_clauses:
|
if where_clauses:
|
||||||
|
|||||||
@@ -214,7 +214,11 @@ async def ranking_paginado(
|
|||||||
if not oracle_repo:
|
if not oracle_repo:
|
||||||
raise HTTPException(status_code=503, detail="Oracle não configurado")
|
raise HTTPException(status_code=503, detail="Oracle não configurado")
|
||||||
|
|
||||||
selos_lista = [s.strip() for s in selos.split(",") if s.strip()] if selos else None
|
selos_lista = (
|
||||||
|
[s.strip().upper() for s in selos.split(",") if s.strip()]
|
||||||
|
if selos
|
||||||
|
else None
|
||||||
|
)
|
||||||
|
|
||||||
total = oracle_repo.contar_total(filtro_ativo=ativo, filtro_selos=selos_lista)
|
total = oracle_repo.contar_total(filtro_ativo=ativo, filtro_selos=selos_lista)
|
||||||
if total == 0:
|
if total == 0:
|
||||||
|
|||||||
@@ -12,7 +12,12 @@ export const rankingService = {
|
|||||||
async getRanking(page = 1, size = 100, selos = []) {
|
async getRanking(page = 1, size = 100, selos = []) {
|
||||||
const params = { page, size };
|
const params = { page, size };
|
||||||
if (selos && selos.length > 0) {
|
if (selos && selos.length > 0) {
|
||||||
params.selos = selos.join(',');
|
const normalizados = selos
|
||||||
|
.map((s) => String(s || '').trim().toUpperCase())
|
||||||
|
.filter(Boolean);
|
||||||
|
if (normalizados.length > 0) {
|
||||||
|
params.selos = normalizados.join(',');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const response = await api.get('/ranking/paginado', { params });
|
const response = await api.get('/ranking/paginado', { params });
|
||||||
const data = response.data;
|
const data = response.data;
|
||||||
|
|||||||
Reference in New Issue
Block a user