76 lines
1.3 KiB
TypeScript
76 lines
1.3 KiB
TypeScript
import { notFound } from "next/navigation";
|
|
import { auth } from "@/auth";
|
|
import { db } from "@/lib/db";
|
|
|
|
export async function getAnexoAutorizado(anexoId: string) {
|
|
const session = await auth();
|
|
|
|
if (!session?.user?.id) {
|
|
return null;
|
|
}
|
|
|
|
const anexo = await db.anexo.findUnique({
|
|
where: { id: anexoId },
|
|
include: {
|
|
briefing: {
|
|
include: {
|
|
cliente: true
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
if (!anexo) {
|
|
return null;
|
|
}
|
|
|
|
if (session.user.papel === "ADMIN") {
|
|
return anexo;
|
|
}
|
|
|
|
if (session.user.papel === "CLIENTE" && anexo.briefing.cliente.userId === session.user.id) {
|
|
return anexo;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
export async function getBriefingPerguntaParaUpload(briefingId: string, perguntaId: string) {
|
|
const session = await auth();
|
|
|
|
if (!session?.user?.id || session.user.papel !== "CLIENTE") {
|
|
notFound();
|
|
}
|
|
|
|
const briefing = await db.briefing.findFirst({
|
|
where: {
|
|
id: briefingId,
|
|
cliente: {
|
|
userId: session.user.id
|
|
}
|
|
},
|
|
include: {
|
|
cliente: true
|
|
}
|
|
});
|
|
|
|
if (!briefing) {
|
|
notFound();
|
|
}
|
|
|
|
const pergunta = await db.pergunta.findFirst({
|
|
where: {
|
|
id: perguntaId,
|
|
tipo: "ANEXO",
|
|
ativo: true
|
|
},
|
|
select: { id: true }
|
|
});
|
|
|
|
if (!pergunta) {
|
|
notFound();
|
|
}
|
|
|
|
return { briefing, pergunta };
|
|
}
|