import type { WorkOrderAdditionalContact } from "@/domain/work-orders/types/work-order-additional-contact"; import type { WorkOrderFrozenCompany, WorkOrderFrozenPoc, WorkOrderFrozenSite, WorkOrderTableRow, } from "@/domain/work-orders/types/work-order-table-row"; type SiteSnapshotRow = Pick; type CompanySnapshotRow = Pick< WorkOrderTableRow, "status" | "company" | "tech" | "techPhone" | "frozenCompany" >; type PocSnapshotRow = Pick< WorkOrderTableRow, "status" | "pocName" | "pocPhone" | "pocNotes" | "frozenPoc" > & { additionalContacts?: WorkOrderTableRow["additionalContacts"]; }; export function effectiveSite(row: SiteSnapshotRow): WorkOrderFrozenSite | undefined { if (row.status === "Completed" && row.frozenSite != null) return row.frozenSite; return undefined; } export function effectiveSitePlace(row: SiteSnapshotRow): { city: string; state: string; } | null { const frozen = effectiveSite(row); if (frozen == null) return null; return { city: frozen.city ?? "", state: frozen.state ?? "" }; } export function effectiveCompany(row: CompanySnapshotRow): WorkOrderFrozenCompany { if (row.status === "Completed" && row.frozenCompany != null) return row.frozenCompany; return { name: row.company, contactName: row.tech, phone: row.techPhone, }; } export function effectivePoc(row: PocSnapshotRow): WorkOrderFrozenPoc { if (row.status === "Completed" && row.frozenPoc != null) return row.frozenPoc; return { contacts: [ { name: row.pocName, phone: row.pocPhone }, ...(row.additionalContacts ?? []).map((contact) => ({ name: contact.name, phone: contact.phone, notes: contact.notes, })), ], notes: row.pocNotes, }; } export function effectiveAdditionalContacts(row: PocSnapshotRow): WorkOrderAdditionalContact[] { if (row.status === "Completed" && row.frozenPoc != null) { return row.frozenPoc.contacts.slice(1).map((contact) => ({ name: contact.name ?? "", phone: contact.phone ?? "", notes: contact.notes ?? "", })); } return row.additionalContacts ?? []; }