2026-10-12 18:31:21 +00:00
|
|
|
import type { SoftwareInstallationValues } from "../domain/value-objects/software-installation-values.vo";
|
|
|
|
|
|
|
|
|
|
import type { SoftwareContext } from "./software-installation.repository";
|
|
|
|
|
|
|
|
|
|
export function softwareReferences(values: SoftwareInstallationValues, context: SoftwareContext) {
|
2026-10-13 07:30:28 +00:00
|
|
|
const licenseId = values.licenseResourceId.getOrUndefined();
|
|
|
|
|
|
2026-10-12 18:31:21 +00:00
|
|
|
return (
|
|
|
|
|
context.assets.some((item) => item.id.equals(values.assetId)) &&
|
|
|
|
|
context.resources.some(
|
|
|
|
|
(item) =>
|
|
|
|
|
item.id.equals(values.resourceId) && (item.usage === "application" || item.usage === "os")
|
2026-10-13 07:30:28 +00:00
|
|
|
) &&
|
|
|
|
|
(!licenseId ||
|
|
|
|
|
context.resources.some((item) => item.id.equals(licenseId) && item.usage === "license"))
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function softwareLicenseAvailable(
|
|
|
|
|
values: SoftwareInstallationValues,
|
|
|
|
|
context: SoftwareContext
|
|
|
|
|
) {
|
|
|
|
|
const licenseId = values.licenseResourceId.getOrUndefined();
|
|
|
|
|
const today = new Date().toISOString().slice(0, 10);
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
!licenseId ||
|
|
|
|
|
context.resources.some(
|
|
|
|
|
(item) =>
|
|
|
|
|
item.id.equals(licenseId) &&
|
|
|
|
|
item.usage === "license" &&
|
|
|
|
|
item.active &&
|
|
|
|
|
(!item.expiresOn || item.expiresOn >= today)
|
2026-10-12 18:31:21 +00:00
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function softwareAvailable(values: SoftwareInstallationValues, context: SoftwareContext) {
|
|
|
|
|
return (
|
|
|
|
|
context.assets.some((item) => item.id.equals(values.assetId) && item.available) &&
|
|
|
|
|
context.resources.some(
|
|
|
|
|
(item) =>
|
|
|
|
|
item.id.equals(values.resourceId) &&
|
|
|
|
|
item.active &&
|
|
|
|
|
(item.usage === "application" || item.usage === "os")
|
2026-10-13 07:30:28 +00:00
|
|
|
) &&
|
|
|
|
|
softwareLicenseAvailable(values, context)
|
2026-10-12 18:31:21 +00:00
|
|
|
);
|
|
|
|
|
}
|