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

54 lines
2.0 KiB
TypeScript

import type { PrismaClient } from "@capakraken/db";
import { PermissionKey } from "@capakraken/shared";
import { managerProcedure, requirePermission } from "../trpc.js";
import {
UpdateAllocationHoursSchema,
timelineBatchQuickAssignInputSchema,
timelineBatchShiftAllocationsInputSchema,
timelineQuickAssignInputSchema,
} from "./timeline-allocation-mutation-schema-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);
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);
}),
};