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(), })), }; }