refactor(api): extract timeline project detail artifact loader
This commit is contained in:
@@ -11,13 +11,11 @@ import {
|
||||
buildTimelineBudgetStatusResponse,
|
||||
buildTimelineProjectContextDetailResponse,
|
||||
buildTimelineProjectContextResponse,
|
||||
buildTimelineProjectAssignmentConflicts,
|
||||
loadTimelineProjectContextDetailArtifacts,
|
||||
buildTimelineShiftValidationBookings,
|
||||
buildTimelineShiftPreviewDetailResponse,
|
||||
resolveTimelineProjectContextPeriod,
|
||||
} from "./timeline-project-context-support.js";
|
||||
import { buildTimelineShiftPlan } from "./timeline-shift-planning.js";
|
||||
import { loadTimelineHolidayOverlays, formatHolidayOverlays } from "./timeline-holiday-read.js";
|
||||
import { getAssignmentResourceIds, ShiftDbClient } from "./timeline-read-shared.js";
|
||||
import { buildTimelineProjectShiftValidation } from "./timeline-shift-support.js";
|
||||
|
||||
@@ -163,30 +161,20 @@ export const timelineProjectReadProcedures = {
|
||||
.query(async ({ ctx, input }) => {
|
||||
const projectContext = await loadTimelineProjectContext(ctx.db, input.projectId);
|
||||
const directory = await getAnonymizationDirectory(ctx.db);
|
||||
const period = resolveTimelineProjectContextPeriod({
|
||||
requestedStartDate: input.startDate,
|
||||
requestedEndDate: input.endDate,
|
||||
durationDays: input.durationDays,
|
||||
projectStartDate: projectContext.project.startDate,
|
||||
projectEndDate: projectContext.project.endDate,
|
||||
firstAssignmentStartDate: projectContext.assignments[0]?.startDate,
|
||||
firstDemandStartDate: projectContext.demands[0]?.startDate,
|
||||
});
|
||||
|
||||
const holidayOverlays = projectContext.resourceIds.length > 0
|
||||
? await loadTimelineHolidayOverlays(ctx.db, {
|
||||
startDate: period.startDate,
|
||||
endDate: period.endDate,
|
||||
resourceIds: projectContext.resourceIds,
|
||||
projectIds: [input.projectId],
|
||||
})
|
||||
: [];
|
||||
const formattedHolidayOverlays = formatHolidayOverlays(holidayOverlays);
|
||||
const assignmentConflicts = buildTimelineProjectAssignmentConflicts({
|
||||
projectId: input.projectId,
|
||||
assignments: projectContext.assignments,
|
||||
allResourceAllocations: projectContext.allResourceAllocations,
|
||||
});
|
||||
const { period, holidayOverlays, assignmentConflicts } =
|
||||
await loadTimelineProjectContextDetailArtifacts(ctx.db, {
|
||||
projectId: input.projectId,
|
||||
requestedStartDate: input.startDate,
|
||||
requestedEndDate: input.endDate,
|
||||
durationDays: input.durationDays,
|
||||
projectStartDate: projectContext.project.startDate,
|
||||
projectEndDate: projectContext.project.endDate,
|
||||
firstAssignmentStartDate: projectContext.assignments[0]?.startDate,
|
||||
firstDemandStartDate: projectContext.demands[0]?.startDate,
|
||||
assignments: projectContext.assignments,
|
||||
allResourceAllocations: projectContext.allResourceAllocations,
|
||||
resourceIds: projectContext.resourceIds,
|
||||
});
|
||||
|
||||
return buildTimelineProjectContextDetailResponse({
|
||||
project: projectContext.project,
|
||||
@@ -197,7 +185,7 @@ export const timelineProjectReadProcedures = {
|
||||
allResourceAllocations: projectContext.allResourceAllocations,
|
||||
resourceIds: projectContext.resourceIds,
|
||||
assignmentConflicts,
|
||||
holidayOverlays: formattedHolidayOverlays,
|
||||
holidayOverlays,
|
||||
directory,
|
||||
});
|
||||
}),
|
||||
|
||||
Reference in New Issue
Block a user