make access confidential when user submits exam with approval process. make access private upon approval workflow completed.

This commit is contained in:
Joao Correia
2025-02-10 13:25:11 +00:00
parent e214d8b598
commit df2f83e496
8 changed files with 16 additions and 13 deletions

View File

@@ -159,7 +159,7 @@ const SettingsEditor: React.FC<SettingsEditorProps> = ({
disabled={!canSubmit}
>
<FaFileUpload className="mr-2" size={18} />
Submit Module as Exam
Submit module as exam for approval
</button>
<button
className={clsx(
@@ -167,11 +167,14 @@ const SettingsEditor: React.FC<SettingsEditorProps> = ({
`bg-ielts-${module}/70 border border-ielts-${module} hover:bg-ielts-${module} disabled:bg-ielts-${module}/30`,
"disabled:cursor-not-allowed disabled:text-gray-200"
)}
onClick={() => submitModule(false)}
onClick={() => {
if (!confirm(`Are you sure you want to skip the approval process for this exam?`)) return;
submitModule(false);
}}
disabled={!canSubmit}
>
<FaFileUpload className="mr-2" size={18} />
Submit Module as Exam Without Approval Process
Submit module as exam and skip approval process
</button>
<button
className={clsx(
@@ -183,7 +186,7 @@ const SettingsEditor: React.FC<SettingsEditorProps> = ({
disabled={!canPreview}
>
<FaEye className="mr-2" size={18} />
Preview Module
Preview module
</button>
</div>
</div>

View File

@@ -196,7 +196,7 @@ const LevelSettings: React.FC = () => {
};
}).filter(part => part.exercises.length > 0),
requiresApproval: requiresApproval,
isDiagnostic: requiresApproval ? true : false, // using isDiagnostic to keep exam hidden until the respective approval workflow is completed.
isDiagnostic: false,
minTimer,
module: "level",
id: title,

View File

@@ -139,7 +139,7 @@ const ListeningSettings: React.FC = () => {
};
}),
requiresApproval: requiresApproval,
isDiagnostic: requiresApproval ? true : false, // using isDiagnostic to keep exam hidden until the respective approval workflow is completed.
isDiagnostic: false,
minTimer,
module: "listening",
id: title,

View File

@@ -75,7 +75,7 @@ const ReadingSettings: React.FC = () => {
};
}),
requiresApproval: requiresApproval,
isDiagnostic: requiresApproval ? true : false, // using isDiagnostic to keep exam hidden until the respective approval workflow is completed.
isDiagnostic: false,
minTimer,
module: "reading",
id: title,

View File

@@ -182,7 +182,7 @@ const SpeakingSettings: React.FC = () => {
module: "speaking",
id: title,
requiresApproval: requiresApproval,
isDiagnostic: requiresApproval ? true : false, // using isDiagnostic to keep exam hidden until the respective approval workflow is completed.
isDiagnostic: false,
variant: undefined,
difficulty,
instructorGender: "varied",

View File

@@ -132,7 +132,7 @@ const WritingSettings: React.FC = () => {
module: "writing",
id: title,
requiresApproval: requiresApproval,
isDiagnostic: requiresApproval ? true : false, // using isDiagnostic to keep exam hidden until the respective approval workflow is completed.
isDiagnostic: false,
variant: undefined,
difficulty,
access,

View File

@@ -78,8 +78,8 @@ async function POST(req: NextApiRequest, res: NextApiResponse) {
throw new Error("Name already exists");
}
if (isAdmin(user)) {
exam.isDiagnostic = false;
if (exam.requiresApproval === true) {
exam.access = "confidential";
}
await db.collection(module).updateOne(

View File

@@ -150,7 +150,7 @@ export default function Home({ user, initialWorkflow, id, workflowAssignees, wor
const handleApproveStep = () => {
const isLastStep = (selectedStepIndex + 1 === currentWorkflow.steps.length);
if (isLastStep) {
if (!confirm(`Are you sure you want to approve the last step? Doing so will approve the exam.`)) return;
if (!confirm(`Are you sure you want to approve the last step? Doing so will change the access type of the exam from confidential to private.`)) return;
}
const updatedWorkflow: ApprovalWorkflow = {
@@ -192,7 +192,7 @@ export default function Home({ user, initialWorkflow, id, workflowAssignees, wor
const examId = currentWorkflow.examId;
axios
.patch(`/api/exam/${examModule}/${examId}`, { isDiagnostic: false })
.patch(`/api/exam/${examModule}/${examId}`, { access: "private" })
.then(() => toast.success(`The exam was successfuly approved and this workflow has been completed.`))
.catch((reason) => {
if (reason.response.status === 404) {