refactor(api): extract timeline cost support
This commit is contained in:
@@ -5,10 +5,10 @@ import {
|
||||
type SplitDemandRequirementRecord,
|
||||
} from "@capakraken/application";
|
||||
import { Prisma, type PrismaClient } from "@capakraken/db";
|
||||
import { calculateAllocation, validateShift } from "@capakraken/engine";
|
||||
import type { ShiftValidationResult, WeekdayAvailability } from "@capakraken/shared";
|
||||
import { validateShift } from "@capakraken/engine";
|
||||
import type { ShiftValidationResult } from "@capakraken/shared";
|
||||
import { TRPCError } from "@trpc/server";
|
||||
import { buildAbsenceDays, loadCalculationRules } from "./timeline-allocation-mutations.js";
|
||||
import { calculateTimelineAllocationDailyCost } from "./timeline-cost-support.js";
|
||||
import type { TimelineShiftPlan } from "./timeline-shift-planning.js";
|
||||
|
||||
export interface TimelineShiftProjectRecord {
|
||||
@@ -123,27 +123,16 @@ async function recalculateShiftedAssignmentDailyCost(input: {
|
||||
|
||||
const metadata = (input.assignment.metadata as Record<string, unknown> | null | undefined) ?? {};
|
||||
const includeSaturday = (metadata.includeSaturday as boolean | undefined) ?? false;
|
||||
const [shiftAbsenceData, shiftRules] = await Promise.all([
|
||||
buildAbsenceDays(
|
||||
input.db,
|
||||
input.assignment.resourceId,
|
||||
input.newStartDate,
|
||||
input.newEndDate,
|
||||
),
|
||||
loadCalculationRules(input.db),
|
||||
]);
|
||||
|
||||
return calculateAllocation({
|
||||
return calculateTimelineAllocationDailyCost({
|
||||
db: input.db,
|
||||
resourceId: input.assignment.resourceId,
|
||||
lcrCents: input.assignment.resource.lcrCents,
|
||||
hoursPerDay: input.assignment.hoursPerDay,
|
||||
startDate: input.newStartDate,
|
||||
endDate: input.newEndDate,
|
||||
availability: input.assignment.resource.availability as WeekdayAvailability,
|
||||
availability: input.assignment.resource.availability as import("@capakraken/shared").WeekdayAvailability,
|
||||
includeSaturday,
|
||||
vacationDates: shiftAbsenceData.legacyVacationDates,
|
||||
absenceDays: shiftAbsenceData.absenceDays,
|
||||
calculationRules: shiftRules,
|
||||
}).dailyCostCents;
|
||||
});
|
||||
}
|
||||
|
||||
export async function applyTimelineProjectShift(input: ApplyTimelineProjectShiftInput) {
|
||||
|
||||
Reference in New Issue
Block a user