From 205b6e8ea0ed9c8d8cfca330bd90cae004bb59b5 Mon Sep 17 00:00:00 2001 From: pluja Date: Mon, 19 May 2025 11:51:08 +0000 Subject: [PATCH] add karma transaction --- web/src/actions/admin/user.ts | 37 +++++++++++++ web/src/pages/admin/users/[username].astro | 63 ++++++++++++++++++++++ 2 files changed, 100 insertions(+) diff --git a/web/src/actions/admin/user.ts b/web/src/actions/admin/user.ts index c253009..4ccd226 100644 --- a/web/src/actions/admin/user.ts +++ b/web/src/actions/admin/user.ts @@ -285,4 +285,41 @@ export const adminUserActions = { }, }), }, + + karmaTransactions: { + add: defineProtectedAction({ + accept: 'form', + permissions: 'admin', + input: z.object({ + userId: z.coerce.number().int().positive(), + points: z.coerce.number().int(), + action: z.string().min(1, 'Action is required'), + description: z.string().min(1, 'Description is required'), + }), + handler: async (input) => { + // Check if the user exists + const user = await prisma.user.findUnique({ + where: { id: input.userId }, + select: { id: true }, + }) + + if (!user) { + throw new ActionError({ + code: 'BAD_REQUEST', + message: 'User not found', + }) + } + + await prisma.karmaTransaction.create({ + data: { + userId: input.userId, + points: input.points, + action: input.action, + description: input.description, + processed: true, + }, + }) + }, + }), + }, } diff --git a/web/src/pages/admin/users/[username].astro b/web/src/pages/admin/users/[username].astro index 32a394f..9008650 100644 --- a/web/src/pages/admin/users/[username].astro +++ b/web/src/pages/admin/users/[username].astro @@ -25,6 +25,9 @@ Astro.locals.banners.addIfSuccess(addAffiliationResult, 'Service affiliation add const removeAffiliationResult = Astro.getActionResult(actions.admin.user.serviceAffiliations.remove) Astro.locals.banners.addIfSuccess(removeAffiliationResult, 'Service affiliation removed successfully') +const addKarmaTransactionResult = Astro.getActionResult(actions.admin.user.karmaTransactions.add) +Astro.locals.banners.addIfSuccess(addKarmaTransactionResult, 'Karma transaction added successfully') + const [user, allServices] = await Astro.locals.banners.tryMany([ [ 'Failed to load user profile', @@ -578,6 +581,66 @@ if (!user) return Astro.rewrite('/404') + +
+

Add Karma Transaction

+ +
+ + +
+
+ + +
+ +
+ + +
+
+ +
+ + +
+ +
+ +
+
+