feat: implement filtering and document management features in dashboard components, enhancing user experience with improved query capabilities and UI for managing documents in pedidos and compras

This commit is contained in:
2025-12-15 14:29:30 -03:00
parent f3288b9639
commit a5ad843b3e
7 changed files with 1135 additions and 34 deletions

View File

@@ -3,9 +3,34 @@ import { mutation, query } from './_generated/server';
import { getCurrentUserFunction } from './auth';
export const list = query({
args: {},
handler: async (ctx) => {
return await ctx.db.query('objetos').collect();
args: {
nome: v.optional(v.string()),
tipo: v.optional(v.union(v.literal('material'), v.literal('servico'))),
codigos: v.optional(v.string())
},
handler: async (ctx, args) => {
const nome = args.nome?.trim();
const codigos = args.codigos?.trim().toLowerCase();
const base =
nome && nome.length > 0
? await ctx.db
.query('objetos')
.withSearchIndex('search_nome', (q) => q.search('nome', nome))
.collect()
: await ctx.db.query('objetos').collect();
return base.filter((objeto) => {
const tipoOk = !args.tipo || objeto.tipo === args.tipo;
const codigosOk =
!codigos ||
(objeto.codigoEfisco || '').toLowerCase().includes(codigos) ||
(objeto.codigoCatmat || '').toLowerCase().includes(codigos) ||
(objeto.codigoCatserv || '').toLowerCase().includes(codigos);
return tipoOk && codigosOk;
});
}
});