diff --git a/apps/backoffice/src/app/features/exam/components/ExamCandidatesPanel/columns.tsx b/apps/backoffice/src/app/features/exam/components/ExamCandidatesPanel/columns.tsx
index 7501723ef..e25910ab2 100644
--- a/apps/backoffice/src/app/features/exam/components/ExamCandidatesPanel/columns.tsx
+++ b/apps/backoffice/src/app/features/exam/components/ExamCandidatesPanel/columns.tsx
@@ -1,5 +1,5 @@
-import { Badge, Button, Text } from '@mantine/core';
-import { IconRefresh, IconUserCheck } from '@tabler/icons-react';
+import { Badge, Button, Menu, Text } from '@mantine/core';
+import { IconChevronDown, IconRefresh, IconUserCheck } from '@tabler/icons-react';
import type { TFunction } from 'i18next';
import type { AdvancedColumn } from '@ema-platform/ui';
import { LICENSE_PERMISSIONS, RequirePermission } from '@ema-platform/auth';
@@ -86,39 +86,45 @@ export function examCandidateColumns(
const attemptStatus = row.original.attempt?.status;
const canRegrade = attemptStatus === 'SUBMITTED' || attemptStatus === 'EXPIRED';
return (
- <>
-
+
- {canRegrade && (
+
+
- }
- loading={handlers.regrading === row.original.attempt?.id}
- onClick={() => handlers.onRegrade(row.original)}
+ }
+ onClick={() => handlers.onRecord(row.original)}
>
- {t('exam.candidates.regrade')}
-
+ {t('exam.candidates.record')}
+
- )}
- >
+ {canRegrade && (
+
+ }
+ onClick={() => handlers.onRegrade(row.original)}
+ >
+ {t('exam.candidates.regrade')}
+
+
+ )}
+
+
);
},
},
diff --git a/apps/backoffice/src/app/features/exam/pages/ExamPage/actions.tsx b/apps/backoffice/src/app/features/exam/pages/ExamPage/actions.tsx
index 1b62e4283..6c0728578 100644
--- a/apps/backoffice/src/app/features/exam/pages/ExamPage/actions.tsx
+++ b/apps/backoffice/src/app/features/exam/pages/ExamPage/actions.tsx
@@ -1,5 +1,10 @@
-import { ActionIcon, Group, Menu } from "@mantine/core";
-import { IconEdit, IconTrash, IconDetails, IconToggleRight } from "@tabler/icons-react";
+import { Button, Menu } from "@mantine/core";
+import {
+ IconChevronDown,
+ IconDetails,
+ IconEdit,
+ IconTrash,
+} from "@tabler/icons-react";
import type { TFunction } from "i18next";
import type { AdvancedColumn } from "@ema-platform/ui";
import { LICENSE_PERMISSIONS, RequirePermission } from "@ema-platform/auth";
@@ -25,61 +30,55 @@ export function examActionsColumn(
},
): AdvancedColumn {
return {
- header: t("exam.columns.actions"),
+ header: t("exam.columns.actions", "Actions"),
align: "right",
cell: ({ row }) => (
-
-
-
- handlers.onEdit(row.original)}
- >
-
-
- handlers.onDelete(row.original)}
- >
-
-
-
- handlers.onDetails(row.original)}
- >
-
-
-
+ {t(`exam.form.${status.toLowerCase()}`)}
+
+ ))}
+
+
+
),
};
}
diff --git a/apps/backoffice/src/app/features/result/pages/ResultPage/actions.tsx b/apps/backoffice/src/app/features/result/pages/ResultPage/actions.tsx
index 335c964cc..90ea74d9b 100644
--- a/apps/backoffice/src/app/features/result/pages/ResultPage/actions.tsx
+++ b/apps/backoffice/src/app/features/result/pages/ResultPage/actions.tsx
@@ -1,5 +1,5 @@
-import { Button, Group } from '@mantine/core';
-import { IconEye, IconSend, IconTrash } from '@tabler/icons-react';
+import { Button, Menu } from '@mantine/core';
+import { IconChevronDown, IconEye, IconSend, IconTrash } from '@tabler/icons-react';
import type { TFunction } from 'i18next';
import type { AdvancedColumn } from '@ema-platform/ui';
import { LICENSE_PERMISSIONS, RequirePermission } from '@ema-platform/auth';
@@ -22,62 +22,66 @@ export function resultActionsColumn(
cell: ({ row }) => {
const r = row.original;
return (
-
- {(r.reviewStatus === 'MARKED' || r.reviewStatus === 'MODERATED') && (
- <>
-
-
-
-
-
-
- >
- )}
- {(r.reviewStatus === 'APPROVED' || r.reviewStatus === 'MODERATED') && (
-
-
-
- )}
- {r.reviewStatus === 'APPROVED' && (
-
- }
- onClick={() => handlers.onPublish(r)}
- >
- {t('result.review.publish')}
-
-
- )}
- } onClick={() => handlers.onViewDetail(r)}>
- {t('result.action.viewEdit')}
-
-
- }
- onClick={() => handlers.onDelete(r)}
- >
- {t('result.action.delete')}
+
-
+
+
+ } onClick={() => handlers.onViewDetail(r)}>
+ {t('result.action.viewEdit')}
+
+ {(r.reviewStatus === 'MARKED' || r.reviewStatus === 'MODERATED') && (
+ <>
+
+ handlers.onQc(r, 'moderate')}>
+ {t('result.review.moderate')}
+
+
+
+ handlers.onQc(r, 'approve')}>
+ {t('result.review.approve')}
+
+
+ >
+ )}
+ {(r.reviewStatus === 'APPROVED' || r.reviewStatus === 'MODERATED') && (
+
+ handlers.onQc(r, 'return')}>
+ {t('result.review.return')}
+
+
+ )}
+ {r.reviewStatus === 'APPROVED' && (
+
+ }
+ onClick={() => handlers.onPublish(r)}
+ >
+ {t('result.review.publish')}
+
+
+ )}
+
+
+ }
+ onClick={() => handlers.onDelete(r)}
+ >
+ {t('result.action.delete')}
+
+
+
+
);
},
};