import type { PrismaClient } from "@capakraken/db"; import { emitAllocationUpdated } from "../sse/event-bus.js"; import { createTimelineBatchQuickAssignments, createTimelineQuickAssignment, } from "./timeline-allocation-assignment-procedure-support.js"; import { applyTimelineInlineAllocationUpdate } from "./timeline-allocation-inline-support.js"; import { shiftTimelineAllocations } from "./timeline-allocation-procedure-support.js"; export async function updateTimelineAllocationInlineMutation(input: { db: PrismaClient; allocationId: string; hoursPerDay?: number | undefined; startDate?: Date | null | undefined; endDate?: Date | null | undefined; includeSaturday?: boolean | undefined; role?: string | null | undefined; }) { const updated = await applyTimelineInlineAllocationUpdate({ db: input.db, allocationId: input.allocationId, hoursPerDay: input.hoursPerDay, startDate: input.startDate ?? undefined, endDate: input.endDate ?? undefined, includeSaturday: input.includeSaturday, role: input.role ?? undefined, }); emitAllocationUpdated({ id: updated.id, projectId: updated.projectId, resourceId: updated.resourceId, }); return updated; } export async function createTimelineQuickAssignMutation( db: PrismaClient, input: Omit[1], "source">, ) { return createTimelineQuickAssignment(db, { ...input, source: "quickAssign", }); } export async function createTimelineBatchQuickAssignMutation( db: PrismaClient, input: { assignments: Array< Omit[1]["assignments"][number], "source"> >; }, ) { return createTimelineBatchQuickAssignments(db, { assignments: input.assignments.map((assignment) => ({ ...assignment, source: "batchQuickAssign" as const, })), }); } export async function applyTimelineAllocationBatchShiftMutation( db: PrismaClient, input: Parameters[1], ) { return shiftTimelineAllocations(db, input); }