37 lines
841 B
TypeScript
37 lines
841 B
TypeScript
import type { PrismaClient } from "@planarchy/db";
|
|
|
|
export interface GetDashboardTopValueResourcesInput {
|
|
limit: number;
|
|
userRole: string;
|
|
}
|
|
|
|
export async function getDashboardTopValueResources(
|
|
db: PrismaClient,
|
|
input: GetDashboardTopValueResourcesInput,
|
|
) {
|
|
const settings = await db.systemSettings.findUnique({
|
|
where: { id: "singleton" },
|
|
});
|
|
|
|
const visibleRoles =
|
|
(settings?.scoreVisibleRoles as unknown as string[]) ?? ["ADMIN", "MANAGER"];
|
|
|
|
if (!visibleRoles.includes(input.userRole)) {
|
|
return [];
|
|
}
|
|
|
|
return db.resource.findMany({
|
|
where: { isActive: true, valueScore: { not: null } },
|
|
select: {
|
|
id: true,
|
|
eid: true,
|
|
displayName: true,
|
|
chapter: true,
|
|
valueScore: true,
|
|
lcrCents: true,
|
|
},
|
|
orderBy: { valueScore: "desc" },
|
|
take: input.limit,
|
|
});
|
|
}
|