- Filter available form intakers so that no form intaker can be in two workflows at once.

- add getApprovalWorkflowByIntaker to prepare workflow start after exam creation.
- fix builder bug with step keys
- ignore edit view for now because it will only be available for active workflows and not configured workflows.
This commit is contained in:
Joao Correia
2025-02-02 22:40:05 +00:00
parent 16545d2075
commit 835a9bee03
5 changed files with 97 additions and 31 deletions

View File

@@ -24,7 +24,7 @@ import { GrClearOption } from "react-icons/gr";
import { toast, ToastContainer } from "react-toastify";
import { useRouter } from "next/router";
import axios from "axios";
import { getApprovalWorkflow } from "@/utils/approval.workflows.be";
import { getApprovalWorkflow, getFormIntakersByEntity } from "@/utils/approval.workflows.be";
export const getServerSideProps = withIronSessionSsr(async ({ req, res, params }) => {
const user = await requestUser(req, res);
@@ -47,6 +47,7 @@ export const getServerSideProps = withIronSessionSsr(async ({ req, res, params }
user,
workflow,
userEntitiesWithLabel,
entityUnavailableFormIntakers: await getFormIntakersByEntity(workflow.entityId),
userEntitiesApprovers: await getEntitiesUsers(userEntitiesWithLabel.map(entity => entity.id), { type: { $in: ["teacher", "corporate", "mastercorporate", "developer"] } }) as (TeacherUser | CorporateUser | MasterCorporateUser | DeveloperUser)[],
}),
};
@@ -56,10 +57,11 @@ interface Props {
user: User,
workflow: ApprovalWorkflow,
userEntitiesWithLabel: Entity[],
entityUnavailableFormIntakers: string[],
userEntitiesApprovers: (TeacherUser | CorporateUser | MasterCorporateUser | DeveloperUser)[],
}
export default function Home({ user, workflow, userEntitiesWithLabel, userEntitiesApprovers }: Props) {
export default function Home({ user, workflow, userEntitiesWithLabel, entityUnavailableFormIntakers, userEntitiesApprovers }: Props) {
const [cloneWorkflow, setCloneWorkflow] = useState<EditableApprovalWorkflow | null>(null);
const [entityId, setEntityId] = useState<string | null | undefined>(workflow.entityId);
const [entityApprovers, setEntityApprovers] = useState<(TeacherUser | CorporateUser | MasterCorporateUser | DeveloperUser)[]>([]);
@@ -276,6 +278,7 @@ export default function Home({ user, workflow, userEntitiesWithLabel, userEntiti
workflow={cloneWorkflow}
onWorkflowChange={onWorkflowChange}
entityApprovers={entityApprovers}
entityAvailableFormIntakers={entityApprovers.filter(approver => !entityUnavailableFormIntakers.includes(approver.id))}
isLoading={isLoading}
isRedirecting={isRedirecting}
/>