2026-10-06 15:15:42 +00:00
|
|
|
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";
|
2026-10-10 10:01:58 +00:00
|
|
|
|
2026-10-06 15:15:42 +00:00
|
|
|
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(),
|
|
|
|
|
})),
|
|
|
|
|
};
|
|
|
|
|
}
|