metis-desk/modules/companies/src/api/application/mail-configuration-response.builder.ts
David e099b8c507 feat(mail): implement mail configuration management with persistence and UI components
- Added migration scripts for mail configurations and revisions.
- Created persistence mapper for mail configurations and revisions.
- Developed Sequelize repository for mail configuration management.
- Introduced common schemas and types for mail configurations.
- Implemented API for fetching and saving mail configurations.
- Built React components for mail configuration forms and pages.
- Added internationalization support for mail-related texts in English and Spanish.
- Implemented feedback mechanism for API errors in mail components.
- Created tests for mail configuration components and functionality.
2026-10-04 23:06:07 +02:00

24 lines
916 B
TypeScript

import type { MailConfigurationDTO } from "../../common/mail-configurations";
import type { MailConfiguration } from "../domain/mail-configuration.aggregate";
import type { MailContext } from "./mail-configuration.repository";
import { mailAuthorized } from "./mail-configuration-policy";
export function buildMailResponse(
item: MailConfiguration,
context: MailContext
): MailConfigurationDTO {
return {
id: item.id.toPrimitive(),
companyId: item.companyId.toPrimitive(),
values: item.values.toPrimitive(),
needsReview: !(item.values.closed || mailAuthorized(item.values, context)),
history: item.history.map((revision) => ({
id: revision.id.toPrimitive(),
values: revision.values.toPrimitive(),
actorId: revision.actorId.toPrimitive(),
actorName: context.actors.get(revision.actorId.toPrimitive()) ?? "—",
recordedAt: revision.recordedAt,
})),
};
}