metis-desk/modules/companies/src/api/application/printer-configuration-response.builder.ts

27 lines
1.0 KiB
TypeScript

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