Files
CapaKraken/packages/api/src/router/timeline-allocation-mutations.ts
T

82 lines
3.0 KiB
TypeScript

import type { PrismaClient } from "@capakraken/db";
import { PermissionKey } from "@capakraken/shared";
import { managerProcedure, requirePermission } from "../trpc.js";
import {
UpdateAllocationHoursSchema,
timelineCarveAllocationRangeInputSchema,
timelineBatchQuickAssignInputSchema,
timelineBatchShiftAllocationsInputSchema,
timelineExtractAllocationFragmentInputSchema,
timelineQuickAssignInputSchema,
} from "./timeline-allocation-mutation-schema-support.js";
import {
applyTimelineAllocationBatchShiftMutation,
carveTimelineAllocationRangeMutation,
createTimelineBatchQuickAssignMutation,
createTimelineQuickAssignMutation,
extractTimelineAllocationFragmentMutation,
updateTimelineAllocationInlineMutation,
} from "./timeline-allocation-router-support.js";
export const timelineAllocationMutationProcedures = {
updateAllocationInline: managerProcedure
.input(UpdateAllocationHoursSchema)
.mutation(async ({ ctx, input }) => {
requirePermission(ctx, PermissionKey.MANAGE_ALLOCATIONS);
return updateTimelineAllocationInlineMutation({
db: ctx.db as PrismaClient,
allocationId: input.allocationId,
hoursPerDay: input.hoursPerDay,
startDate: input.startDate,
endDate: input.endDate,
includeSaturday: input.includeSaturday,
role: input.role,
});
}),
quickAssign: managerProcedure
.input(timelineQuickAssignInputSchema)
.mutation(async ({ ctx, input }) => {
requirePermission(ctx, PermissionKey.MANAGE_ALLOCATIONS);
return createTimelineQuickAssignMutation(ctx.db as PrismaClient, input);
}),
batchQuickAssign: managerProcedure
.input(timelineBatchQuickAssignInputSchema)
.mutation(async ({ ctx, input }) => {
requirePermission(ctx, PermissionKey.MANAGE_ALLOCATIONS);
return createTimelineBatchQuickAssignMutation(ctx.db as PrismaClient, input);
}),
batchShiftAllocations: managerProcedure
.input(timelineBatchShiftAllocationsInputSchema)
.mutation(async ({ ctx, input }) => {
requirePermission(ctx, PermissionKey.MANAGE_ALLOCATIONS);
return applyTimelineAllocationBatchShiftMutation(ctx.db as PrismaClient, input);
}),
carveAllocationRange: managerProcedure
.input(timelineCarveAllocationRangeInputSchema)
.mutation(async ({ ctx, input }) => {
requirePermission(ctx, PermissionKey.MANAGE_ALLOCATIONS);
return carveTimelineAllocationRangeMutation({
db: ctx.db as PrismaClient,
allocationId: input.allocationId,
startDate: input.startDate,
endDate: input.endDate,
});
}),
extractAllocationFragment: managerProcedure
.input(timelineExtractAllocationFragmentInputSchema)
.mutation(async ({ ctx, input }) => {
requirePermission(ctx, PermissionKey.MANAGE_ALLOCATIONS);
return extractTimelineAllocationFragmentMutation({
db: ctx.db as PrismaClient,
allocationId: input.allocationId,
startDate: input.startDate,
endDate: input.endDate,
});
}),
};