diff --git a/app/pages/hunt/[huntSlug]/[questSlug]/admin.vue b/app/pages/hunt/[huntSlug]/[questSlug]/admin.vue
index 753b8f0..5be5dab 100644
--- a/app/pages/hunt/[huntSlug]/[questSlug]/admin.vue
+++ b/app/pages/hunt/[huntSlug]/[questSlug]/admin.vue
@@ -63,6 +63,7 @@ titleStore.title = data.value?.title;
:key="answer.id"
:answer="answer"
:quest="data"
+ @update="refresh"
/>
diff --git a/server/api/admin/answer/[answerId]/review.post.ts b/server/api/admin/answer/[answerId]/review.post.ts
index eb0f1ab..fdc4460 100644
--- a/server/api/admin/answer/[answerId]/review.post.ts
+++ b/server/api/admin/answer/[answerId]/review.post.ts
@@ -66,7 +66,8 @@ export default defineEventHandler(async (event) => {
},
create: {
...data,
- reviewerId: userId
+ reviewerId: userId,
+ answerId
}
});
diff --git a/server/api/admin/hunt/[huntId]/teams.get.ts b/server/api/admin/hunt/[huntId]/teams.get.ts
index b491a76..ffc99c6 100644
--- a/server/api/admin/hunt/[huntId]/teams.get.ts
+++ b/server/api/admin/hunt/[huntId]/teams.get.ts
@@ -18,7 +18,7 @@ export default defineEventHandler(async (event) => {
})
);
- const hunt = await prisma.hunt.findUnique({
+ const _hunt = await prisma.hunt.findUnique({
where: {
id: huntId,
OR: [
@@ -58,6 +58,22 @@ export default defineEventHandler(async (event) => {
answers: true
}
},
+ answers: {
+ select: {
+ review: {
+ select: {
+ score: true
+ }
+ }
+ },
+ where: {
+ review: {
+ score: {
+ gt: 0
+ }
+ }
+ }
+ },
members: {
select: {
createdAt: true,
@@ -75,9 +91,18 @@ export default defineEventHandler(async (event) => {
}
});
- if (!hunt) {
+ if (!_hunt) {
throw createError({ status: 404, statusText: 'Not found!' });
}
+ const { teams, ...hunt } = _hunt;
- return hunt;
+ return {
+ teams: teams
+ .map(({ answers, ...t }) => ({
+ ...t,
+ score: answers.reduce((sum, a) => sum + (a.review?.score || 0), 0)
+ }))
+ .toSorted((a, b) => b.score - a.score),
+ ...hunt
+ };
});
diff --git a/server/api/admin/quest/[questId]/index.get.ts b/server/api/admin/quest/[questId]/index.get.ts
index f0b66a6..200bf62 100644
--- a/server/api/admin/quest/[questId]/index.get.ts
+++ b/server/api/admin/quest/[questId]/index.get.ts
@@ -66,6 +66,7 @@ export default defineEventHandler(async (event) => {
internalNote: true,
rankingValue: true,
showcase: true,
+ updatedAt: true,
reviewer: {
select: {
name: true,