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