2026-07-28 09:56:27 -03:00
|
|
|
import type { WorkOrderBoardCreatePayload } from "@/domain/work-orders/types/work-order-board";
|
|
|
|
|
import type { WorkOrderWizardDraft } from "@/domain/work-orders/types/work-order-wizard";
|
|
|
|
|
import { mondayOf } from "@/domain/work-orders/utils/wizard-date-utils";
|
|
|
|
|
|
2026-08-13 18:43:11 -03:00
|
|
|
/**
|
|
|
|
|
* Mutates `payload` with `dueDate` and schedule fields.
|
|
|
|
|
* Range mode lands on the board using the range start as `scheduledDate`
|
|
|
|
|
* (prototype `hasScheduleDate`: a range start qualifies as scheduled).
|
|
|
|
|
*/
|
2026-07-28 09:56:27 -03:00
|
|
|
export function assignWizardScheduleFields(
|
|
|
|
|
payload: WorkOrderBoardCreatePayload,
|
|
|
|
|
draft: WorkOrderWizardDraft,
|
|
|
|
|
): void {
|
|
|
|
|
if (draft.dueDate) {
|
|
|
|
|
payload.dueDate = draft.dueDate;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const isRange = draft.schedMode === "range";
|
|
|
|
|
|
|
|
|
|
if (!isRange && draft.scheduleWeekOnly) {
|
|
|
|
|
const week = draft.targetWeek?.trim() || (draft.scheduledOn ? mondayOf(draft.scheduledOn) : "");
|
|
|
|
|
|
2026-08-10 17:12:09 -03:00
|
|
|
// Only emit week-mode flags when a concrete week exists (SH-109: undated create).
|
2026-07-28 09:56:27 -03:00
|
|
|
if (week) {
|
2026-08-10 17:12:09 -03:00
|
|
|
payload.scheduleWeekOnly = true;
|
2026-07-28 09:56:27 -03:00
|
|
|
payload.targetWeek = week;
|
|
|
|
|
}
|
2026-08-13 18:43:11 -03:00
|
|
|
} else if (draft.scheduledOn && (isRange || !draft.scheduleWeekOnly)) {
|
2026-07-28 09:56:27 -03:00
|
|
|
payload.scheduledDate = draft.scheduledOn;
|
|
|
|
|
}
|
|
|
|
|
}
|