import type { PrinterConfigurationDTO } from "../../common/printer-configurations"; import type { PrinterConfiguration } from "../domain/printer-configuration.aggregate"; import type { PrinterContext } from "./printer-configuration.repository"; import { printerAvailable } from "./printer-configuration-policy"; export function buildPrinterResponse( item: PrinterConfiguration, context: PrinterContext ): PrinterConfigurationDTO { return { id: item.id.toPrimitive(), companyId: item.companyId.toPrimitive(), values: item.values.toPrimitive(), needsReview: !item.values.closed && (!printerAvailable(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(), })), }; }