mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-10-01 08:33:11 +00:00
55 lines
1.6 KiB
TypeScript
55 lines
1.6 KiB
TypeScript
import type {
|
|
WorkOrderFrozenCompany,
|
|
WorkOrderFrozenPoc,
|
|
WorkOrderFrozenSite,
|
|
WorkOrderTableRow,
|
|
} from "@/domain/work-orders/types/work-order-table-row";
|
|
|
|
type SiteSnapshotRow = Pick<WorkOrderTableRow, "status" | "frozenSite">;
|
|
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: row.pocNotes,
|
|
};
|
|
}
|