feat: add UserAvatar component to display employee profile pictures in absence and vacation requests; update backend to include profile picture URLs for employees

This commit is contained in:
2025-12-02 14:54:45 -03:00
parent ffa4dc5fb2
commit 75ab4d261d
4 changed files with 94 additions and 15 deletions

View File

@@ -97,7 +97,7 @@ export const listarSolicitacoesSubordinados = query({
.collect();
const solicitacoes: Array<Doc<"solicitacoesAusencias"> & {
funcionario: Doc<"funcionarios"> | null;
funcionario: (Doc<"funcionarios"> & { fotoPerfilUrl: string | null }) | null;
time: Doc<"times"> | null;
}> = [];
@@ -122,9 +122,25 @@ export const listarSolicitacoesSubordinados = query({
// Adicionar info do funcionário
for (const s of solic) {
const funcionario = await ctx.db.get(s.funcionarioId);
// Buscar usuário do funcionário para obter fotoPerfilUrl
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);
}
}
solicitacoes.push({
...s,
funcionario,
funcionario: funcionario ? {
...funcionario,
fotoPerfilUrl,
} : null,
time,
});
}
@@ -143,6 +159,19 @@ export const obterDetalhes = query({
if (!solicitacao) return null;
const funcionario = await ctx.db.get(solicitacao.funcionarioId);
// Buscar usuário do funcionário para obter fotoPerfilUrl
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);
}
}
let gestor = null;
if (solicitacao.gestorId) {
gestor = await ctx.db.get(solicitacao.gestorId);
@@ -164,7 +193,10 @@ export const obterDetalhes = query({
return {
...solicitacao,
funcionario,
funcionario: funcionario ? {
...funcionario,
fotoPerfilUrl,
} : null,
gestor,
time,
};