metis-desk/modules/companies/src/api/application/certificate-configuration-policy.ts
2026-10-10 12:01:58 +02:00

37 lines
1.2 KiB
TypeScript

import type { CertificateConfigurationValues } from "../domain/value-objects/certificate-configuration-values.vo";
import type { CertificateContext } from "./certificate-configuration.repository";
export function certificateReferences(
values: CertificateConfigurationValues,
context: CertificateContext
) {
return (
context.profiles.some((item) => item.id.equals(values.profileId)) &&
context.resources.some(
(item) => item.id.equals(values.resourceId) && item.usage === "certificate"
)
);
}
export function certificateAvailable(
values: CertificateConfigurationValues,
context: CertificateContext
) {
const profile = context.profiles.find((item) => item.id.equals(values.profileId));
return (
!!profile &&
profile.values.active &&
context.people.some((person) => person.id.equals(profile.values.personId) && person.active) &&
context.assets.some((asset) => asset.id.equals(profile.values.assetId) && asset.available) &&
context.resources.some(
(item) =>
item.id.equals(values.resourceId) &&
item.active &&
item.usage === "certificate" &&
(!item.expiresOn || item.expiresOn >= context.today)
)
);
}