feat: enhance point registration and location validation features
- Refactored the RegistroPonto component to improve the layout and user experience, including a new section for displaying standard hours. - Updated RelogioSincronizado to include GMT offset adjustments for accurate time display. - Introduced new location validation logic in the backend to ensure point registrations are within allowed geofenced areas. - Enhanced the device information schema to capture additional GPS data, improving the reliability of location checks. - Added new endpoints for managing allowed marking addresses, facilitating better control over where points can be registered.
This commit is contained in:
@@ -34,17 +34,21 @@ export const obterConfiguracao = query({
|
||||
nomeSaidaAlmoco: 'Saída 1',
|
||||
nomeRetornoAlmoco: 'Entrada 2',
|
||||
nomeSaida: 'Saída 2',
|
||||
validarLocalizacao: true,
|
||||
toleranciaDistanciaMetros: 100,
|
||||
ativo: false,
|
||||
};
|
||||
}
|
||||
|
||||
// Garantir que os nomes padrão estejam definidos
|
||||
// Garantir que os nomes padrão e valores padrão estejam definidos
|
||||
return {
|
||||
...config,
|
||||
nomeEntrada: config.nomeEntrada || 'Entrada 1',
|
||||
nomeSaidaAlmoco: config.nomeSaidaAlmoco || 'Saída 1',
|
||||
nomeRetornoAlmoco: config.nomeRetornoAlmoco || 'Entrada 2',
|
||||
nomeSaida: config.nomeSaida || 'Saída 2',
|
||||
validarLocalizacao: config.validarLocalizacao ?? true,
|
||||
toleranciaDistanciaMetros: config.toleranciaDistanciaMetros ?? 100,
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -63,6 +67,8 @@ export const salvarConfiguracao = mutation({
|
||||
nomeSaidaAlmoco: v.optional(v.string()),
|
||||
nomeRetornoAlmoco: v.optional(v.string()),
|
||||
nomeSaida: v.optional(v.string()),
|
||||
validarLocalizacao: v.optional(v.boolean()),
|
||||
toleranciaDistanciaMetros: v.optional(v.number()),
|
||||
},
|
||||
handler: async (ctx, args) => {
|
||||
const usuario = await getCurrentUserFunction(ctx);
|
||||
@@ -113,6 +119,13 @@ export const salvarConfiguracao = mutation({
|
||||
throw new Error('Horário de retorno do almoço deve ser anterior à saída');
|
||||
}
|
||||
|
||||
// Validar tolerância de distância se fornecida
|
||||
if (args.toleranciaDistanciaMetros !== undefined) {
|
||||
if (args.toleranciaDistanciaMetros < 0 || args.toleranciaDistanciaMetros > 50000) {
|
||||
throw new Error('Tolerância de distância deve estar entre 0 e 50000 metros');
|
||||
}
|
||||
}
|
||||
|
||||
// Desativar configurações antigas
|
||||
const configsAntigas = await ctx.db
|
||||
.query('configuracaoPonto')
|
||||
@@ -134,6 +147,8 @@ export const salvarConfiguracao = mutation({
|
||||
nomeSaidaAlmoco: args.nomeSaidaAlmoco || 'Saída 1',
|
||||
nomeRetornoAlmoco: args.nomeRetornoAlmoco || 'Entrada 2',
|
||||
nomeSaida: args.nomeSaida || 'Saída 2',
|
||||
validarLocalizacao: args.validarLocalizacao ?? true,
|
||||
toleranciaDistanciaMetros: args.toleranciaDistanciaMetros ?? 100,
|
||||
ativo: true,
|
||||
atualizadoPor: usuario._id as Id<'usuarios'>,
|
||||
atualizadoEm: Date.now(),
|
||||
|
||||
Reference in New Issue
Block a user