diff --git a/apps/web/src/lib/components/AprovarAusencias.svelte b/apps/web/src/lib/components/AprovarAusencias.svelte index 7a67e6e..0323db7 100644 --- a/apps/web/src/lib/components/AprovarAusencias.svelte +++ b/apps/web/src/lib/components/AprovarAusencias.svelte @@ -3,6 +3,7 @@ import { api } from '@sgse-app/backend/convex/_generated/api'; import type { Id, Doc } from '@sgse-app/backend/convex/_generated/dataModel'; import ErrorModal from './ErrorModal.svelte'; + import UserAvatar from './chat/UserAvatar.svelte'; type SolicitacaoAusencia = Doc<'solicitacoesAusencias'> & { funcionario?: Doc<'funcionarios'> | null; @@ -166,9 +167,16 @@

Nome

-

- {solicitacao.funcionario?.nome || 'N/A'} -

+
+ +

+ {solicitacao.funcionario?.nome || 'N/A'} +

+
{#if solicitacao.time}
diff --git a/apps/web/src/lib/components/AprovarFerias.svelte b/apps/web/src/lib/components/AprovarFerias.svelte index 3c387c1..c68aabc 100644 --- a/apps/web/src/lib/components/AprovarFerias.svelte +++ b/apps/web/src/lib/components/AprovarFerias.svelte @@ -2,6 +2,7 @@ import { useConvexClient } from 'convex-svelte'; import { api } from '@sgse-app/backend/convex/_generated/api'; import type { Id, Doc } from '@sgse-app/backend/convex/_generated/dataModel'; + import UserAvatar from './chat/UserAvatar.svelte'; type PeriodoFerias = Doc<'ferias'> & { funcionario?: Doc<'funcionarios'> | null; @@ -215,13 +216,20 @@
-
-

- {periodo.funcionario?.nome || 'Funcionário'} -

-

- Ano de Referência: {periodo.anoReferencia} -

+
+ +
+

+ {periodo.funcionario?.nome || 'Funcionário'} +

+

+ Ano de Referência: {periodo.anoReferencia} +

+
{getStatusTexto(periodo.status)} diff --git a/packages/backend/convex/ausencias.ts b/packages/backend/convex/ausencias.ts index 89078d2..e118ab5 100644 --- a/packages/backend/convex/ausencias.ts +++ b/packages/backend/convex/ausencias.ts @@ -97,7 +97,7 @@ export const listarSolicitacoesSubordinados = query({ .collect(); const solicitacoes: Array & { - 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, }; diff --git a/packages/backend/convex/ferias.ts b/packages/backend/convex/ferias.ts index 747fa31..4fc6d6c 100644 --- a/packages/backend/convex/ferias.ts +++ b/packages/backend/convex/ferias.ts @@ -213,6 +213,18 @@ export const listarSolicitacoesSubordinados = query({ todasFerias.map(async (ferias) => { const funcionario = await ctx.db.get(ferias.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); + } + } + // Buscar time do funcionário const membroTime = await ctx.db .query("timesMembros") @@ -229,7 +241,10 @@ export const listarSolicitacoesSubordinados = query({ return { ...ferias, - funcionario, + funcionario: funcionario ? { + ...funcionario, + fotoPerfilUrl, + } : null, time, }; }) @@ -250,6 +265,19 @@ export const obterDetalhes = query({ if (!ferias) return null; const funcionario = await ctx.db.get(ferias.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 (ferias.gestorId) { gestor = await ctx.db.get(ferias.gestorId); @@ -271,7 +299,10 @@ export const obterDetalhes = query({ return { ...ferias, - funcionario, + funcionario: funcionario ? { + ...funcionario, + fotoPerfilUrl, + } : null, gestor, time, };