metis-desk/modules/companies/src/common/certificate-configurations.ts

41 lines
1.5 KiB
TypeScript

import { z } from "zod/v4";
import { CertificateConfigurationInputSchema } from "../api/domain/certificate-configuration-values";
export type { CertificateConfigurationInput } from "../api/domain/certificate-configuration-values";
export {
CERTIFICATE_STATE_TRANSITIONS,
CertificateConfigurationInputSchema,
} from "../api/domain/certificate-configuration-values";
export const CertificateParamsSchema = z.strictObject({ companyId: z.uuid() });
export const CertificateItemParamsSchema = CertificateParamsSchema.extend({ id: z.uuid() });
export const SaveCertificateConfigurationRequestSchema = z.strictObject({
values: CertificateConfigurationInputSchema,
});
export const CertificateConfigurationSchema = z.strictObject({
id: z.uuid(),
companyId: z.uuid(),
values: CertificateConfigurationInputSchema,
needsReview: z.boolean(),
expiresOn: z.iso.date().nullable(),
expired: z.boolean(),
history: z
.array(
z.strictObject({
id: z.uuid(),
actorId: z.uuid(),
actorName: z.string().min(1),
recordedAt: z.iso.datetime(),
values: CertificateConfigurationInputSchema,
})
)
.min(1),
});
export const CertificateConfigurationsResponseSchema = z.strictObject({
configurations: z.array(CertificateConfigurationSchema),
});
export const CertificateConfigurationResponseSchema = z.strictObject({
configuration: CertificateConfigurationSchema,
});
export type CertificateConfigurationDTO = z.infer<typeof CertificateConfigurationSchema>;