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:
@@ -5,13 +5,41 @@ import { getCurrentUserFunction } from './auth';
|
||||
import { internal } from './_generated/api';
|
||||
|
||||
export const list = query({
|
||||
args: {},
|
||||
handler: async (ctx) => {
|
||||
args: {
|
||||
periodoInicio: v.optional(v.string()),
|
||||
periodoFim: v.optional(v.string()),
|
||||
numero: v.optional(v.string()),
|
||||
numeroSei: v.optional(v.string())
|
||||
},
|
||||
handler: async (ctx, args) => {
|
||||
await ctx.runQuery(internal.permissoesAcoes.assertPermissaoAcaoAtual, {
|
||||
recurso: 'atas',
|
||||
acao: 'listar'
|
||||
});
|
||||
return await ctx.db.query('atas').collect();
|
||||
|
||||
const numero = args.numero?.trim().toLowerCase();
|
||||
const numeroSei = args.numeroSei?.trim().toLowerCase();
|
||||
const periodoInicio = args.periodoInicio || undefined;
|
||||
const periodoFim = args.periodoFim || undefined;
|
||||
|
||||
const atas = await ctx.db.query('atas').collect();
|
||||
return atas.filter((ata) => {
|
||||
const numeroOk = !numero || (ata.numero || '').toLowerCase().includes(numero);
|
||||
const seiOk = !numeroSei || (ata.numeroSei || '').toLowerCase().includes(numeroSei);
|
||||
|
||||
// Filtro por intervalo (range): retorna atas cuja vigência intersecta o período informado.
|
||||
// Considera datas como strings "YYYY-MM-DD" (lexicograficamente comparáveis).
|
||||
const ataInicio = ata.dataInicio ?? '0000-01-01';
|
||||
const ataFim = ata.dataFim ?? '9999-12-31';
|
||||
|
||||
const periodoOk =
|
||||
(!periodoInicio && !periodoFim) ||
|
||||
(periodoInicio && periodoFim && ataInicio <= periodoFim && ataFim >= periodoInicio) ||
|
||||
(periodoInicio && !periodoFim && ataFim >= periodoInicio) ||
|
||||
(!periodoInicio && periodoFim && ataInicio <= periodoFim);
|
||||
|
||||
return numeroOk && seiOk && periodoOk;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user