2026-07-28 09:56:27 -03:00
|
|
|
import type { WorkOrderBoardCreatePayload } from "@/domain/work-orders/types/work-order-board";
|
2026-09-25 11:06:21 -03:00
|
|
|
import { typeNeedsSeverity } from "@/domain/work-orders/types/work-order-severity";
|
2026-07-28 09:56:27 -03:00
|
|
|
import type { WorkOrderWizardDraft } from "@/domain/work-orders/types/work-order-wizard";
|
2026-08-10 17:12:11 -03:00
|
|
|
import { normalizeAdditionalContacts } from "@/domain/work-orders/mappers/additional-contacts-mapper";
|
2026-07-28 09:56:27 -03:00
|
|
|
|
|
|
|
|
function trimOrUndefined(value: string | undefined): string | undefined {
|
|
|
|
|
const trimmed = value?.trim();
|
|
|
|
|
|
|
|
|
|
return trimmed ? trimmed : undefined;
|
|
|
|
|
}
|
|
|
|
|
|
2026-08-17 14:12:25 -03:00
|
|
|
/** Mutates `payload` with primary service, service notes, POC, tech phone, and vendor notes. */
|
2026-07-28 09:56:27 -03:00
|
|
|
export function assignWizardServicePocFields(
|
|
|
|
|
payload: WorkOrderBoardCreatePayload,
|
|
|
|
|
draft: WorkOrderWizardDraft,
|
|
|
|
|
): void {
|
|
|
|
|
const primaryService = trimOrUndefined(draft.pm);
|
|
|
|
|
|
|
|
|
|
if (primaryService) {
|
|
|
|
|
payload.primaryService = primaryService;
|
|
|
|
|
}
|
|
|
|
|
|
2026-09-16 18:26:55 -03:00
|
|
|
if (draft.serviceId != null) {
|
|
|
|
|
payload.serviceId = draft.serviceId;
|
|
|
|
|
}
|
|
|
|
|
|
2026-07-28 09:56:27 -03:00
|
|
|
const serviceNotes = trimOrUndefined(draft.pmNote);
|
|
|
|
|
|
|
|
|
|
if (serviceNotes) {
|
|
|
|
|
payload.serviceNotes = serviceNotes;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const pocName = trimOrUndefined(draft.pocName);
|
|
|
|
|
|
|
|
|
|
if (pocName) {
|
|
|
|
|
payload.pocName = pocName;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const pocPhone = trimOrUndefined(draft.pocPhone);
|
|
|
|
|
|
|
|
|
|
if (pocPhone) {
|
|
|
|
|
payload.pocPhone = pocPhone;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const pocNotes = trimOrUndefined(draft.pocNotes);
|
|
|
|
|
|
|
|
|
|
if (pocNotes) {
|
|
|
|
|
payload.pocNotes = pocNotes;
|
|
|
|
|
}
|
|
|
|
|
|
2026-08-10 17:12:11 -03:00
|
|
|
const additionalContacts = normalizeAdditionalContacts(draft.additionalContacts);
|
|
|
|
|
if (additionalContacts) {
|
|
|
|
|
payload.additionalContacts = additionalContacts;
|
|
|
|
|
}
|
|
|
|
|
|
2026-07-28 09:56:27 -03:00
|
|
|
const techPhone = trimOrUndefined(draft.techPhone);
|
|
|
|
|
|
|
|
|
|
if (techPhone) {
|
|
|
|
|
payload.techPhone = techPhone;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const vendorNotes = trimOrUndefined(draft.vendorNotes);
|
|
|
|
|
|
|
|
|
|
if (vendorNotes) {
|
|
|
|
|
payload.vendorNotes = vendorNotes;
|
|
|
|
|
}
|
2026-08-14 11:59:52 -03:00
|
|
|
|
2026-09-25 11:06:21 -03:00
|
|
|
if (draft.severity != null && typeNeedsSeverity(draft.type)) {
|
2026-08-14 11:59:52 -03:00
|
|
|
payload.severity = draft.severity;
|
|
|
|
|
}
|
2026-08-24 15:16:51 -03:00
|
|
|
|
|
|
|
|
if (draft.avetaRequired) {
|
|
|
|
|
payload.avetaRequired = true;
|
|
|
|
|
}
|
2026-07-28 09:56:27 -03:00
|
|
|
}
|