feat: add UserAvatar component to display employee profile pictures in various HR pages, enhancing visual representation of employee data
This commit is contained in:
@@ -985,8 +985,28 @@ export const listarRegistrosPeriodo = query({
|
||||
|
||||
console.log('[listarRegistrosPeriodo] Total de registros a retornar:', registrosFiltrados.length);
|
||||
|
||||
// Buscar fotos de perfil dos funcionários
|
||||
const funcionariosComFoto = await Promise.all(
|
||||
funcionarios.map(async (funcionario) => {
|
||||
if (!funcionario) return { funcionario: null, fotoPerfilUrl: null };
|
||||
|
||||
let fotoPerfilUrl: string | null = null;
|
||||
const usuario = await ctx.db
|
||||
.query('usuarios')
|
||||
.withIndex('by_funcionarioId', (q) => q.eq('funcionarioId', funcionario._id))
|
||||
.first();
|
||||
if (usuario?.fotoPerfil) {
|
||||
fotoPerfilUrl = await ctx.storage.getUrl(usuario.fotoPerfil);
|
||||
}
|
||||
|
||||
return { funcionario, fotoPerfilUrl };
|
||||
})
|
||||
);
|
||||
|
||||
return registrosFiltrados.map((registro) => {
|
||||
const funcionario = funcionarios.find((f) => f?._id === registro.funcionarioId);
|
||||
const funcionarioComFoto = funcionariosComFoto.find((f) => f.funcionario?._id === registro.funcionarioId);
|
||||
const funcionario = funcionarioComFoto?.funcionario;
|
||||
const fotoPerfilUrl = funcionarioComFoto?.fotoPerfilUrl || null;
|
||||
const chave = `${registro.funcionarioId}-${registro.data}`;
|
||||
const saldoMinutos = saldosPorDataFuncionario[chave] || 0;
|
||||
const horas = Math.floor(Math.abs(saldoMinutos) / 60);
|
||||
@@ -1002,6 +1022,7 @@ export const listarRegistrosPeriodo = query({
|
||||
descricaoCargo: funcionario.descricaoCargo,
|
||||
}
|
||||
: null,
|
||||
fotoPerfilUrl,
|
||||
saldoDiario: {
|
||||
saldoMinutos,
|
||||
horas,
|
||||
@@ -1618,6 +1639,18 @@ export const listarHomologacoes = query({
|
||||
const gestor = await ctx.db.get(h.gestorId);
|
||||
const registro = h.registroId ? await ctx.db.get(h.registroId) : null;
|
||||
|
||||
// Buscar foto do perfil do funcionário através do usuário associado
|
||||
let fotoPerfilUrl: string | null = null;
|
||||
if (funcionario) {
|
||||
const usuario = await ctx.db
|
||||
.query('usuarios')
|
||||
.withIndex('by_funcionarioId', (q) => q.eq('funcionarioId', funcionario._id))
|
||||
.first();
|
||||
if (usuario?.fotoPerfil) {
|
||||
fotoPerfilUrl = await ctx.storage.getUrl(usuario.fotoPerfil);
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
...h,
|
||||
funcionario: funcionario
|
||||
@@ -1626,6 +1659,7 @@ export const listarHomologacoes = query({
|
||||
matricula: funcionario.matricula,
|
||||
}
|
||||
: null,
|
||||
fotoPerfilUrl,
|
||||
gestor: gestor
|
||||
? {
|
||||
nome: gestor.nome,
|
||||
@@ -1862,6 +1896,18 @@ export const listarDispensas = query({
|
||||
const funcionario = await ctx.db.get(d.funcionarioId);
|
||||
const gestor = await ctx.db.get(d.gestorId);
|
||||
|
||||
// Buscar foto do perfil do funcionário através do usuário associado
|
||||
let fotoPerfilUrl: string | null = null;
|
||||
if (funcionario) {
|
||||
const usuario = await ctx.db
|
||||
.query('usuarios')
|
||||
.withIndex('by_funcionarioId', (q) => q.eq('funcionarioId', funcionario._id))
|
||||
.first();
|
||||
if (usuario?.fotoPerfil) {
|
||||
fotoPerfilUrl = await ctx.storage.getUrl(usuario.fotoPerfil);
|
||||
}
|
||||
}
|
||||
|
||||
// Verificar se expirou (se não for isento)
|
||||
let expirada = false;
|
||||
if (!d.isento) {
|
||||
@@ -1880,6 +1926,7 @@ export const listarDispensas = query({
|
||||
matricula: funcionario.matricula,
|
||||
}
|
||||
: null,
|
||||
fotoPerfilUrl,
|
||||
gestor: gestor
|
||||
? {
|
||||
nome: gestor.nome,
|
||||
|
||||
Reference in New Issue
Block a user