import type { MailConfigurationValues } from "../domain/value-objects/mail-configuration-values.vo"; import type { MailContext } from "./mail-configuration.repository"; export function mailAuthorized(values: MailConfigurationValues, context: MailContext) { const profile = context.profiles.find((item) => item.id.equals(values.profileId.getOrUndefined()) ); const mailbox = context.mailboxes.find((item) => item.id.equals(values.mailboxId.getOrUndefined()) ); if ( !( profile && profile.values.active && mailbox && mailbox.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.notRetired) ) ) { return false; } return context.uses.some( (use) => use.values.mailboxId.equals(mailbox.id) && use.values.personId.equals(profile.values.personId) && use.values.current(context.today) ); }