2026-10-09 08:38:19 +00:00
|
|
|
import type { MailConfigurationValues } from "../domain/value-objects/mail-configuration-values.vo";
|
2026-10-04 21:06:07 +00:00
|
|
|
|
|
|
|
|
import type { MailContext } from "./mail-configuration.repository";
|
2026-10-10 10:01:58 +00:00
|
|
|
|
2026-10-04 21:06:07 +00:00
|
|
|
export function mailAuthorized(values: MailConfigurationValues, context: MailContext) {
|
2026-10-05 08:45:02 +00:00
|
|
|
const profile = context.profiles.find((item) =>
|
|
|
|
|
item.id.equals(values.profileId.getOrUndefined())
|
|
|
|
|
);
|
|
|
|
|
const mailbox = context.mailboxes.find((item) =>
|
|
|
|
|
item.id.equals(values.mailboxId.getOrUndefined())
|
|
|
|
|
);
|
2026-10-10 10:01:58 +00:00
|
|
|
|
2026-10-04 21:06:07 +00:00
|
|
|
if (
|
2026-10-05 08:45:02 +00:00
|
|
|
!(
|
|
|
|
|
profile &&
|
|
|
|
|
profile.values.active &&
|
|
|
|
|
mailbox &&
|
|
|
|
|
mailbox.values.active &&
|
|
|
|
|
context.people.some((person) => person.id.equals(profile.values.personId) && person.active) &&
|
2026-10-13 09:35:31 +00:00
|
|
|
context.assets.some((asset) => asset.id.equals(profile.values.assetId) && asset.notRetired)
|
2026-10-05 08:45:02 +00:00
|
|
|
)
|
2026-10-04 21:06:07 +00:00
|
|
|
) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2026-10-10 10:01:58 +00:00
|
|
|
|
2026-10-05 08:45:02 +00:00
|
|
|
return context.uses.some(
|
|
|
|
|
(use) =>
|
|
|
|
|
use.values.mailboxId.equals(mailbox.id) &&
|
|
|
|
|
use.values.personId.equals(profile.values.personId) &&
|
|
|
|
|
use.values.current(context.today)
|
|
|
|
|
);
|
2026-10-04 21:06:07 +00:00
|
|
|
}
|