fixes
This commit is contained in:
@@ -14,6 +14,7 @@ import {
|
||||
listProjectQuoteOptions,
|
||||
listProjectShipmentOptions,
|
||||
updateProject,
|
||||
updateProjectMilestoneStatus,
|
||||
} from "./service.js";
|
||||
|
||||
const projectSchema = z.object({
|
||||
@@ -51,6 +52,10 @@ const projectOptionQuerySchema = z.object({
|
||||
customerId: z.string().optional(),
|
||||
});
|
||||
|
||||
const milestoneStatusSchema = z.object({
|
||||
status: z.enum(projectMilestoneStatuses),
|
||||
});
|
||||
|
||||
function getRouteParam(value: unknown) {
|
||||
return typeof value === "string" ? value : null;
|
||||
}
|
||||
@@ -147,3 +152,23 @@ projectsRouter.put("/:projectId", requirePermissions([permissions.projectsWrite]
|
||||
|
||||
return ok(response, result.project);
|
||||
});
|
||||
|
||||
projectsRouter.patch("/:projectId/milestones/:milestoneId/status", requirePermissions([permissions.projectsWrite]), async (request, response) => {
|
||||
const projectId = getRouteParam(request.params.projectId);
|
||||
const milestoneId = getRouteParam(request.params.milestoneId);
|
||||
if (!projectId || !milestoneId) {
|
||||
return fail(response, 400, "INVALID_INPUT", "Project or milestone id is invalid.");
|
||||
}
|
||||
|
||||
const parsed = milestoneStatusSchema.safeParse(request.body);
|
||||
if (!parsed.success) {
|
||||
return fail(response, 400, "INVALID_INPUT", "Project milestone status payload is invalid.");
|
||||
}
|
||||
|
||||
const result = await updateProjectMilestoneStatus(projectId, milestoneId, parsed.data, request.authUser?.id);
|
||||
if (!result.ok) {
|
||||
return fail(response, 400, "INVALID_INPUT", result.reason);
|
||||
}
|
||||
|
||||
return ok(response, result.project);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user