diff --git a/src/components/ApprovalWorkflows/WorkflowForm.tsx b/src/components/ApprovalWorkflows/WorkflowForm.tsx index 8cc4686d..39b0e2c5 100644 --- a/src/components/ApprovalWorkflows/WorkflowForm.tsx +++ b/src/components/ApprovalWorkflows/WorkflowForm.tsx @@ -72,7 +72,6 @@ export default function WorkflowForm({ workflow, onWorkflowChange, entityApprove return { ...step, assignees: newAssignees }; }); - onWorkflowChange({ ...workflow, steps: updatedSteps }); }; diff --git a/src/pages/api/approval-workflows/[id]/edit.ts b/src/pages/api/approval-workflows/[id]/edit.ts index 39fc607f..19902009 100644 --- a/src/pages/api/approval-workflows/[id]/edit.ts +++ b/src/pages/api/approval-workflows/[id]/edit.ts @@ -4,6 +4,7 @@ import { sessionOptions } from "@/lib/session"; import { requestUser } from "@/utils/api"; import { updateConfiguredWorkflow } from "@/utils/approval.workflows.be"; import { withIronSessionApiRoute } from "iron-session/next"; +import { ObjectId } from "mongodb"; import type { NextApiRequest, NextApiResponse } from "next"; export default withIronSessionApiRoute(handler, sessionOptions); @@ -24,6 +25,7 @@ async function put(req: NextApiRequest, res: NextApiResponse) { const approvalWorkflow: ApprovalWorkflow = req.body; if (id && approvalWorkflow) { + approvalWorkflow._id = new ObjectId(id); await updateConfiguredWorkflow(approvalWorkflow); return res.status(204).end(); } diff --git a/src/pages/api/approval-workflows/[id]/index.ts b/src/pages/api/approval-workflows/[id]/index.ts index 53ce6f21..adc25819 100644 --- a/src/pages/api/approval-workflows/[id]/index.ts +++ b/src/pages/api/approval-workflows/[id]/index.ts @@ -4,6 +4,7 @@ import { sessionOptions } from "@/lib/session"; import { requestUser } from "@/utils/api"; import { deleteConfiguredWorkflow, updateConfiguredWorkflow } from "@/utils/approval.workflows.be"; import { withIronSessionApiRoute } from "iron-session/next"; +import { ObjectId } from "mongodb"; import type { NextApiRequest, NextApiResponse } from "next"; export default withIronSessionApiRoute(handler, sessionOptions); @@ -35,9 +36,10 @@ async function put(req: NextApiRequest, res: NextApiResponse) { } const { id } = req.query as { id?: string }; - const workflow = req.body; + const workflow: ApprovalWorkflow = req.body; if (id && workflow) { + workflow._id = new ObjectId(id); await updateConfiguredWorkflow(workflow); return res.status(204).end(); } diff --git a/src/pages/approval-workflows/[id]/edit.tsx b/src/pages/approval-workflows/[id]/edit.tsx index 185cc655..6a1082d8 100644 --- a/src/pages/approval-workflows/[id]/edit.tsx +++ b/src/pages/approval-workflows/[id]/edit.tsx @@ -65,7 +65,7 @@ export default function Home({ user, workflow, workflowEntityApprovers }: Props) completed: step.completed, completedBy: step.completedBy || undefined, completedDate: step.completedDate || undefined, - assignees: step.assignees.map(id => id), + assignees: step.assignees, firstStep: step.firstStep || false, finalStep: step.finalStep || false, onDelete: undefined, @@ -98,7 +98,6 @@ export default function Home({ user, workflow, workflowEntityApprovers }: Props) ...updatedWorkflow, steps: updatedWorkflow.steps.map(step => ({ ...step, - completed: false, assignees: step.assignees.filter((assignee): assignee is string => assignee !== null && assignee !== undefined) })) }; diff --git a/src/utils/approval.workflows.be.ts b/src/utils/approval.workflows.be.ts index 6167385a..f3837a60 100644 --- a/src/utils/approval.workflows.be.ts +++ b/src/utils/approval.workflows.be.ts @@ -35,7 +35,7 @@ export const createConfiguredWorkflows = async (workflows: ApprovalWorkflow[]) = export const updateConfiguredWorkflow = async (workflow: ApprovalWorkflow) => { const { _id, ...workflowWithoutId } = workflow as ApprovalWorkflow; - return await db.collection("configured-workflows").replaceOne({ _id: new ObjectId(_id) }, workflowWithoutId); + return await db.collection("configured-workflows").replaceOne({ _id: _id }, workflowWithoutId); }; export const updateConfiguredWorkflows = async (workflows: ApprovalWorkflow[]) => {