metis-desk/modules/companies/src/api/application/application-configuration-response.builder.ts
2026-10-10 12:01:58 +02:00

28 lines
1.1 KiB
TypeScript

import type { ApplicationConfigurationDTO } from "../../common/application-configurations";
import type { ApplicationConfiguration } from "../domain/application-configuration.aggregate";
import type { ApplicationContext } from "./application-configuration.repository";
import { applicationAvailable } from "./application-configuration-policy";
export function buildApplicationResponse(
item: ApplicationConfiguration,
context: ApplicationContext
): ApplicationConfigurationDTO {
return {
id: item.id.toPrimitive(),
companyId: item.companyId.toPrimitive(),
values: item.values.toPrimitive(),
needsReview:
!item.values.closed &&
(!applicationAvailable(item.values, context) || item.values.state === "removal_pending"),
history: item.history.map((revision) => ({
id: revision.id.toPrimitive(),
actorId: revision.actorId.toPrimitive(),
actorName:
context.actors.get(revision.actorId.toPrimitive()) ?? revision.actorId.toPrimitive(),
recordedAt: revision.recordedAt,
values: revision.values.toPrimitive(),
})),
};
}