refactor(api): extract timeline allocation router support
This commit is contained in:
@@ -1,26 +1,25 @@
|
||||
import type { PrismaClient } from "@capakraken/db";
|
||||
import { PermissionKey } from "@capakraken/shared";
|
||||
import { emitAllocationUpdated } from "../sse/event-bus.js";
|
||||
import { managerProcedure, requirePermission } from "../trpc.js";
|
||||
import {
|
||||
createTimelineBatchQuickAssignments,
|
||||
createTimelineQuickAssignment,
|
||||
} from "./timeline-allocation-assignment-procedure-support.js";
|
||||
import { shiftTimelineAllocations } from "./timeline-allocation-procedure-support.js";
|
||||
import {
|
||||
UpdateAllocationHoursSchema,
|
||||
timelineBatchQuickAssignInputSchema,
|
||||
timelineBatchShiftAllocationsInputSchema,
|
||||
timelineQuickAssignInputSchema,
|
||||
} from "./timeline-allocation-mutation-schema-support.js";
|
||||
import { applyTimelineInlineAllocationUpdate } from "./timeline-allocation-inline-support.js";
|
||||
import {
|
||||
applyTimelineAllocationBatchShiftMutation,
|
||||
createTimelineBatchQuickAssignMutation,
|
||||
createTimelineQuickAssignMutation,
|
||||
updateTimelineAllocationInlineMutation,
|
||||
} from "./timeline-allocation-router-support.js";
|
||||
|
||||
export const timelineAllocationMutationProcedures = {
|
||||
updateAllocationInline: managerProcedure
|
||||
.input(UpdateAllocationHoursSchema)
|
||||
.mutation(async ({ ctx, input }) => {
|
||||
requirePermission(ctx, PermissionKey.MANAGE_ALLOCATIONS);
|
||||
const updated = await applyTimelineInlineAllocationUpdate({
|
||||
return updateTimelineAllocationInlineMutation({
|
||||
db: ctx.db as PrismaClient,
|
||||
allocationId: input.allocationId,
|
||||
hoursPerDay: input.hoursPerDay,
|
||||
@@ -29,46 +28,26 @@ export const timelineAllocationMutationProcedures = {
|
||||
includeSaturday: input.includeSaturday,
|
||||
role: input.role,
|
||||
});
|
||||
|
||||
emitAllocationUpdated({
|
||||
id: updated.id,
|
||||
projectId: updated.projectId,
|
||||
resourceId: updated.resourceId,
|
||||
});
|
||||
|
||||
return updated;
|
||||
}),
|
||||
|
||||
quickAssign: managerProcedure
|
||||
.input(timelineQuickAssignInputSchema)
|
||||
.mutation(async ({ ctx, input }) => {
|
||||
requirePermission(ctx, PermissionKey.MANAGE_ALLOCATIONS);
|
||||
return createTimelineQuickAssignment(ctx.db as PrismaClient, {
|
||||
...input,
|
||||
source: "quickAssign",
|
||||
});
|
||||
return createTimelineQuickAssignMutation(ctx.db as PrismaClient, input);
|
||||
}),
|
||||
|
||||
batchQuickAssign: managerProcedure
|
||||
.input(timelineBatchQuickAssignInputSchema)
|
||||
.mutation(async ({ ctx, input }) => {
|
||||
requirePermission(ctx, PermissionKey.MANAGE_ALLOCATIONS);
|
||||
return createTimelineBatchQuickAssignments(ctx.db as PrismaClient, {
|
||||
assignments: input.assignments.map((assignment) => ({
|
||||
...assignment,
|
||||
source: "batchQuickAssign" as const,
|
||||
})),
|
||||
});
|
||||
return createTimelineBatchQuickAssignMutation(ctx.db as PrismaClient, input);
|
||||
}),
|
||||
|
||||
batchShiftAllocations: managerProcedure
|
||||
.input(timelineBatchShiftAllocationsInputSchema)
|
||||
.mutation(async ({ ctx, input }) => {
|
||||
requirePermission(ctx, PermissionKey.MANAGE_ALLOCATIONS);
|
||||
return shiftTimelineAllocations(ctx.db as PrismaClient, {
|
||||
allocationIds: input.allocationIds,
|
||||
daysDelta: input.daysDelta,
|
||||
mode: input.mode,
|
||||
});
|
||||
return applyTimelineAllocationBatchShiftMutation(ctx.db as PrismaClient, input);
|
||||
}),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user