Initial SeConectai briefing system
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
import { notFound, redirect } from "next/navigation";
|
||||
import { auth } from "@/auth";
|
||||
import { db } from "@/lib/db";
|
||||
import { maskCpf } from "@/lib/admin-service";
|
||||
import { decryptCpf } from "@/lib/crypto";
|
||||
|
||||
export async function getBriefingPdfData(briefingId: string) {
|
||||
const session = await auth();
|
||||
|
||||
if (!session?.user?.id) {
|
||||
redirect("/login");
|
||||
}
|
||||
|
||||
const briefing = await db.briefing.findUnique({
|
||||
where: { id: briefingId },
|
||||
include: {
|
||||
cliente: {
|
||||
include: { user: true }
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (!briefing) {
|
||||
notFound();
|
||||
}
|
||||
|
||||
const isAdmin = session.user.papel === "ADMIN";
|
||||
const isOwner = session.user.papel === "CLIENTE" && briefing.cliente.userId === session.user.id;
|
||||
|
||||
if (!isAdmin && !isOwner) {
|
||||
notFound();
|
||||
}
|
||||
|
||||
const secoes = await db.secao.findMany({
|
||||
where: { ativo: true },
|
||||
orderBy: { ordem: "asc" },
|
||||
include: {
|
||||
perguntas: {
|
||||
where: { ativo: true },
|
||||
orderBy: { ordem: "asc" },
|
||||
include: {
|
||||
respostas: {
|
||||
where: { briefingId }
|
||||
},
|
||||
anexos: {
|
||||
where: { briefingId },
|
||||
orderBy: { criadoEm: "asc" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return {
|
||||
briefing,
|
||||
secoes,
|
||||
cpfMascarado: maskCpf(decryptCpf(briefing.cliente.cpfCifrado))
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user