Add total user balances stat card to admin dashboard

This commit is contained in:
2026-05-08 14:09:59 +05:00
parent a5e7b20699
commit 33dcf9bb4a
+12 -2
View File
@@ -16,6 +16,7 @@ export default async function AdminDashboard() {
homeworkPending,
homeworkTotal,
progressTotal,
balanceAggregate,
] = await Promise.all([
prisma.user.count({ where: { role: "student" } }),
prisma.user.count({ where: { role: "student", createdAt: { gte: monthAgo } } }),
@@ -30,8 +31,11 @@ export default async function AdminDashboard() {
prisma.homeworkSubmission.count({ where: { feedbacks: { none: {} } } }),
prisma.homeworkSubmission.count(),
prisma.lessonProgress.count(),
prisma.balanceTransaction.aggregate({ _sum: { amount: true } }),
]);
const totalBalance = Number(balanceAggregate._sum.amount ?? 0);
// Recent enrollments
const recentEnrollments = await prisma.courseEnrollment.findMany({
orderBy: { enrolledAt: "desc" },
@@ -58,7 +62,7 @@ export default async function AdminDashboard() {
</p>
{/* Stats grid */}
<div className="grid grid-cols-2 md:grid-cols-4 gap-4 mb-8">
<div className="grid grid-cols-2 lg:grid-cols-5 gap-4 mb-8">
<StatCard
label="Студентов"
value={totalStudents}
@@ -85,6 +89,12 @@ export default async function AdminDashboard() {
subAccent={homeworkPending > 0}
href="/curator/homework"
/>
<StatCard
label="На балансах"
value={totalBalance.toLocaleString("ru-RU", { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " ₽"}
sub="сумма по всем пользователям"
href="/admin/users"
/>
</div>
<div className="grid md:grid-cols-2 gap-6">
@@ -179,7 +189,7 @@ function StatCard({
href,
}: {
label: string;
value: number;
value: number | string;
sub?: string;
subAccent?: boolean;
href?: string;